目录
一、Linux账号
1、Linux用户账号类型
2、组账号
二、用户账号管理
1、文件位置
2、添加用户
3、密码管理
4、修改用户账号的属性
5、删除用户
6、用户账号的初始配置文件
三、组管理
1、组账号文件
2、添加组
3、组内管理
4、删除组账号
5、查询
四、文件/目录的权限和归属
1、chmod
2、chown
3、umask
4、文件的三种特殊权限
五、特殊权限
访问控制列表 ACL
Linux中是通过UID号标识用户的类型,新建用户的UID号范围在1 ~ 60000之内,总共有65536个端口号即0 ~ 65535
超级用户:root用户 ,UID=0
root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有至高 无上的权限,类似于 Windows 操作系统中的 Administrator 用户。
程序用户:UID = 1 ~ 499(CentOS 6版本以前),1 ~ 999(CentOS 7版本以后)
CentOS 6与CentOS 7的区别:程序用户的UID号范围不同
在安装 Linux 操作系统及部分应用程序时,会添加一些特定的低权限用 户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运 行,如 bin、daemon、ftp、mail 等
普通用户:UID = 500+(CentOS 6版本以前) 1000+(CentOS 7版本之后),若不指定用户的UID号,按顺序排。
普通用户的账号需要由 root 用户或其他管理员用户创建,拥有的权限受 到一定限制,处理问题受到限制,一般只在用户自己的宿主目录中拥有完整权限。
1)在Linux中如何查看当前登录用户的信息
who命令:whoami who who -b
2)last命令
用于显示用户最近在操作系统中的登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
选项:-x;-a;-f;-d;-n;-t
(1)-x:显示系统开关机以及执行等级信息
last - x
第一列: 用户名
第二列: 终端位置
pts: 意味着从SSH或TELNET的远程连接用户
tty: 意味着直接连接到计算机或者本地连接用户
除了重启,所有状态会在启动时显示
第三列: 登录IP或者内核
0.0或者什么都没有的话:意味着用户通过本地终端连接
重启活动,会显示内核版本
第四列: 开始时间
第五列: 结束时间
still log in: 还在登录
down: 直到正常关机
crash: 直到强制关机
第六列: 持续时间
(2)-a:将登陆ip显示在最后一行
last - a
(3)-f :读取特定文件,可以选择 -f /var/log/btmp文件
last - f /var/log/btmp
(4)-d:将IP地址转换为主机名
last - d
(5)-n:设置列出名单的显示列数
last - n 想要显示的列数
(6)-t:查看指定时间的用户登录历史
last - t YYYYMMDDHHMMSS # 年月日时分秒
3)lastlog 查看所有用户的最近一次登录
lastlog -u 用户名 # 查看指定用户
lastlog -t 天数:表示查看几天之内的用户登录信息
基本组(私有组)
建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组默认只容纳了一个用户。
在用户所属组中的第一个组称为基本组,基本组在 /etc/passwd 文件中指定
附加组(共有组)
除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定
基本组:有且唯一
附加组:可有可无,可以有多个
默认新建用户时自动添加同名的组
GID
GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。
/etc/passwd
存放用户名称。宿主目录、登录Shell等基本信息
root 用户名称
:x 密码占位符
:0 UID
:0 GID
:root 备注信息,描述
:/root 家目录路径
:/bin/bash (或:/sbin/nologin) shell环境
/etc/shadow 存放密码
该文档格式如下表格:
第n位 | 代表的含义 |
1 | 用户名 |
2 | 非明文密码,当该位置没有密码,为*或者!!时,表示该用户不饿能登录到系统 |
3 | 最后一次修改密码的时间 |
4 | 规定多长时间可以修改一次密码(0 没有限制) |
5 | 密码有效期 |
6 | 提前多少天提醒用户,密码即将失效 |
7 | 宽限天数(密码过期后的宽限天数 ) |
8 | 账户失效的时间 (默认 永久) |
9 | 保留字段收费内容(如vip用户,会被备注为VIP) |
useradd命令
格式:useradd [选项] 用户名
如何验证用户创建成功:
查看是否在 passwd和shadow文件中生成信息
在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录
若未明确指定用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿 主目录,并在该目录中建立用户的各种初始配置文件。
若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账 号的记录信息将保存到/etc/group 和/etc/shadow 文件中。
选项:-u、-d、-e、-g、-G、-M、-s
-u:指定用户的UID号,要求该UID号码未被其他用户使用
-d:指定用户的宿主目录位置(当与 - M 一起使用时,-d命令不生效)
-e:指定用户的账户失效时间,可以使用YYYY-MM-DD的日期格式
-g:指定用户的基本组名(或者使用GID号)
-G:指定用户的附加组名(或者使用GID号)
-M:不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录
-s:指定用户的登录Shell 一般将用户设置成/sbin/nologin的Shell模式会使用该选项
passwd命令 为用户账号设置密码
格式:passwd [选项] 用户名
如果不加用户名,默认修改当前用户的密码
如果不加选项,可以添加密码
选项:-d、-l、-S、-u
-d:清空指定用户的密码,仅使用用户名即可登录系统
passwd - d 用户名
-l:锁定用户账户
passwd - l 用户名
-S:查看用户账户的状态(是否被锁定)
passwd - S 用户名
-u:解锁用户账户
passwd - u 用户名
usermod命令
格式:usermod [选项] 用户名
常见选项:- l 、- L 、- u 、- U 、- d 、- e 、- g 、- G 、- s
- l:更改用户账号的登录名称(Login Name)
格式:usermod - l 新用户名 旧用户名
- L:锁定用户账号
格式:usermod - L 用户名
- u:修改用户的UID号
格式:usermod - u 新UID 用户名
- U:解锁用户账户
格式:usermod - U 用户名
- g:修改用户的附基本组名(或使用GID号)
格式:usermod -g 新基本组名或新基本组的GID号 用户名
- G:修改用户的附加组名(或使用GID号)
格式:usermod -G 附加组名或附加组的GID 用户名
- d:修改用户的宿主目录位置
格式:usermod - d 新宿主目录位置 用户名
- e:修改用户的账户失效时间,可使YYYY-MM-DD的日期格式
格式:usermod - e 新失效日期 用户名
- s:指定用户的登录Shell
格式:usermod - s 新Shell类型 用户名
userdel命令
格式:userdel [选项] 用户名
userdel - r 用户名
选项:- r 将宿主目录一起删除
用户宿主目录下的初始配置文件只对当前用户有效
~/ .bash_profile
#此文件中的命令将在该用户每次登录时被执行,他会设置一些环境变量,并且会调用该用户的~/.bashrc文件
~/.bashrc
#此文件中的命令将在该用户每次打开新的bash shell时(包括登录系统)被执行(登录 切换 新的bash环境)
~/.bash_logout
#此文件中的命令将在该用户每次退出时bash shell时使用
/etc/bashrc
与用户帐号文件相类似
/etc/group:保存组帐号基本信息
/etc/gshadow:保存组帐号的密码信息基本不使用
groupadd命令
格式:groupadd [-g GID号 ] 组账号名
gpasswd 命令——添加、设置、删除成员
选项:- a、- d、- M
- a:向组内添加一个用户
gpasswd - a 用户名 组名
- d:从组内删除一个用户成员
gpasswd - d 用户名 组名
- M:定义组成员列表,以逗号分隔(批量向组内加入用户)
gpasswd - M 用户名,用户名,..... 组名
groupdel 命令
groupdel 组账号名
finger 命令 w 命令 who 命令
finger :查询用户账号的详细信息
finger [ 用户名 ] # 不加用户名,默认查询当前用户的详细信息
w 命令
w:查询一登陆到主机的用户信息
w [ 选项 ] [ 用户名 ]
-h 不显示输出信息的标题
-l 用长格式输出
-s 用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间
-V 显示版本信息
标题 | 含义 |
---|---|
USER | 登录到系统的用户。 |
TTY | 登录终端。 |
FROM | 表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。 |
LOGIN@ | 用户登陆的日期和时间。 |
IDLE | 表示某个程序上次从终端开始执行到现在所持续的时间。 |
JCPU | 和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。 |
PCPU | 当前进程所占用的 CPU 运算时间。 |
WHAT | 当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。 |
who 命令
相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令。
whio [ 选项 ] [ file ]
注:who 命令默认是通过 /var/run/utmp 文件来获取登陆用户信息,但如果通过 file 指定另一个文件,则 who 命令将不再默认读取 /var/run/utmp 文件,而是读取该指定文件来获取信息。
选项 | 含义 |
---|---|
-a | 列出所有信息,相当于所有选项。 |
-b | 列出系统最近启动的时间日期。 |
-l | 列出所有可登陆的终端信息。 |
-m | 仅列出关于当前终端的信息,who -m 命令等同于 who am i 。 |
-q | 列出在本地系统上的用户和用户数的清单。 |
-r | 显示当前系统的运行级别。 |
-s | 仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。 |
-u | 显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。 |
-T 或 -w | 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。 |
程序访问文件时的权限,取决于此程序的发起者
进程的发起者,同文件的属主:则应用文件属主权限
进程的发起者,属于文件属组;则应用文件属组权限
应用文件“其它”权限
例子 root用户和普通用户 是否都可以看 (cat /etc/shadow)
访问人群分为了三类
所属主(u)
所属组(g)
其他人 (o)
权限分为三种
读(r,4)
写(w,2)
执行(x,1程序,脚本)
对文件的权限
r 可使用文件查看类工具,比如:cat,可以获取其内容
w 可修改其内容
x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)
对目录的权限
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
模式法:
chmod u/g/o/a +/-/=r/w/x 文件名
u、g、o、a:所属者、所属组、其他人、所有人
+、-、=:增加、减少、仅赋予操作
r、w、x:读、写、执行权限
例:对文件夹abc的所有人增加执行权限
chmod a+x abc
数字法:
读权限(r)=4
写权限(w)=2
执行权限(x)=1
同上例:对文件夹abc的所有人增加执行权限
chmod 755 abc
chown:修改所属主的命令
格式:chown 用户:组名 文件名 # 修改所属主和所属组
-R:递归修改
umask 的值可以用来保留在创建文件权限
实现方式:
新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
新建目录的默认权限: 777-umask
非特权用户umask默认是 002
root的umask 默认是 022
suid SGID Sticky
suid:表示当使用某个命令程序时,把当前用户当成文件的所属主
[root@localhost aa]#which passwd
/usr/bin/passwd
[root@localhost aa]#ll /usr/bin/passwd
#此处s表示当使用这个命令程序时,把当前用户当成文件的所属主
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
[root@localhost aa]#which vim
/usr/bin/vim
[root@localhost aa]#chmod u+s /usr/bin/vim
#给vim加上suid权限,代表所有用户可以使用vim打开并编辑所有文件
[root@localhost aa]#ll /usr/bin/vim
-rwsr-xr-x. 1 root root 2289640 8月 2 2017 /usr/bin/vim
SGID:表示当使用某个命令程序时,把当前用户所属的组当成文件的所属组
[root@localhost aa]#chmod g+s /usr/bin/vim
[root@localhost aa]#ll /usr/bin/vim
-rwxr-sr-x. 1 root root 2289640 8月 2 2017 /usr/bin/vim
Sticky 位 粘贴位 对文件夹有效 对文件无效
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
#Sticky权限设定:
chmod o+t DIR...
chmod o-t DIR..
[root@localhost aa]#chmod o+t /opt/aa
# 添加Sticky 位
[root@localhost opt]#chmod o-t /opt/aa
#减少Sticky 位
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m, --modify-acl 更改文件的访问控制列表
-M, --modify-file=file 从文件读取访问控制列表条目更改
-x, --remove=acl 根据文件中访问控制列表移除条目
-X, --remove-file=file 从文件读取访问控制列表条目并删除
-b, --remove-all 删除所有扩展访问控制列表条目
-k, --remove-default 移除默认访问控制列表
--set=acl 设定替换当前的文件访问控制列表
--set-file=file 从文件中读取访问控制列表条目设定
--mask 重新计算有效权限掩码
-n, --no-mask 不重新计算有效权限掩码
-d, --default 应用到默认访问控制列表的操作
-R, --recursive 递归操作子目录
-L, --logical 依照系统逻辑,跟随符号链接
-P, --physical 依照自然逻辑,不跟随符号链接
--restore=file 恢复访问控制列表,和“getfacl -R”作用相反
--test 测试模式,并不真正修改访问控制列表属性
-v, --version 显示版本并退出
-h, --help 显示本帮助信息