1、用户信息文件–/etc/passwd
每个用户必须属于一个主组,都有唯一一个用户编码(UID),
用户可以加入其它多个额外组中,称为附加组,从属组
用户基本信息:/etc/passwd(七列信息)
[root@szb ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
编号 | 参数 | 说明 |
---|
1 | root | 用户名 |
2 | x | 用户密码,安全考虑,转移/etc/shadow文件中 |
3 | 0 | UID(0为超级用户;0-999系统用户;1000及以上普通用户,范围0–65535) |
4 | 0 | GID |
5 | root | 用户说明信息 |
6 | /root | 用户家目录,普通用户:/home/username |
7 | /bin/bash | 默认shelll类型 |
2、用户密码文件–/etc/shadow
用户密码信息:/etc/shadow(九列信息)
[root@szb ~]# cat /etc/shadow
root:$1$KxONfQUg$Y.f42vKBWXVTEKU2/2h8o1:19157:0:99999:7:::
bin:*:17834:0:99999:7:::
编号 | 参数 | 说明 |
---|
1 | root | 用户名,属于/ect/passwd文件对应用户名密码 |
2 | $1$KxONfQUg$Y.f42vKBWXVTEKU2/2h8o1 | 三段:1.单向加密算法;2.salt,加密算法的随机因子;3.密文 |
3 | 19157 | 修改密码日期,数值是1970.1.1到修改密码那天的天数 |
4 | 0 | 再次修改密码的天数,0(随时可以修改) |
5 | 99999 | 修改完密码后多少天过期 |
6 | 7 | 密码过期前7天进行提示 |
7 | 空 | 密码过期后可使用天数,为空则不限制 |
8 | 空 | 用户账号被禁用天数(1970至今的天数),为空则永久有效 |
9 | 空 | 保留内容 |
3、用户组文件–/etc/group
系统组:0-1000
普通组:>=1000
用户组信息:/etc/group(四列信息)
1.!!将用户加入到组,只有超级用户root有权限实现
2.用户知道组密码,newgrp命令可加入
[root@szb ~]# cat /etc/group
root:x:0:
bin:x:1:
编号 | 参数 | 说明 |
---|
1 | root | 组名称 |
2 | x | 用户组密码,安全考虑,转移/etc/gshadow文件中 |
3 | 0 | 组编号,GID |
4 | 空 | 附加组用户列表,逗号分隔 |
4、用户组密码文件–/etc/gshadow
用户组密码信息:/etc/gshadow(四列信息)
存放组密码和组管理信息
[root@szb ~]# cat /etc/gshadow
root:::
bin:::
编号 | 参数 | 说明 |
---|
1 | root | 组名称 |
2 | 空 | 组管理密码,!开头密码表示被锁定 |
3 | 空 | 该管理组的管理员用户账号,逗号分隔 |
4 | 空 | 附加组用户列表,逗号分隔 |
5、配置文件修改
注意:
修改以上四个文件,建议使用以下命令进行编辑,
具有文件格式检查功能:vipw 和 vigr
检查用户和组相关配置文件格式一致性:pwck 和 grpck
文本编辑:
1./etc/passwd
[root@szb ~]# vipw
2./etc/shadow
[root@szb ~]# vipw -s
3./etc/group
[root@szb ~]# vigr
4./etc/gshadow
[root@szb ~]# vigr -s
文本格式检查:
1./etc/passwd或/etc/shadow文件
[root@szb ~]# pwck /etc/passwd
[root@szb ~]# pwck /etc/shadow
2./etc/group或/etc/gshadow文件
[root@szb ~]# grck /etc/group
[root@szb ~]# grck /etc/gshadow
6、用户和用户组管理
1. getent 命令
为了安全考虑,使用专有命令维护用户信息
1. getent 命令可查看用户数据块信息,此用法同样适用用户信息四文件
[root@szb ~]
[root@szb ~]
2. chfn 和 finger 命令可以修改和查看用户描述信息(/etc/passwd的第五列)
[root@szb ~]
2. id–groups 命令
1. id 命令可查看用户及组信息
[root@szb ~]
uid=0(root) gid=0(root) groups=0(root)
2. groups 命令查看用户属于哪个组
[root@szb ~]
szb : szb
3. useradd 命令
1. useradd 命令创建用户
2. 常用选项:一般常用-s、-r、-d
-u UID
-g GID
-o
-c COMMENT
-d HOME_DIR
-s SHELL
-m
-M
-r
-G
-N
3. 创建用户的默认配置:/etc/default/useradd
4. 存放创建新用户时和密码相关默认信息:/etc/login.defs
5.示例
[root@szb ~]
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
[root@szb ~]
6.新建普通用户后,使用passwd给用户初始化一个密码,不然/etc/shadow第二列密码默认!!被锁定,无法登录
4. groupadd 命令
1. groupadd 命令创建用户组
2. 常用选项:一般常用-g、-r
-g GID
-f
-K,key=value
-o
-p
-r
2.示例
[root@szb ~]
5. 修改用户和用户组信息
使用usermod,chsh,groupmod,gpasswd,groupmems等命令修改用户和组相关信息
1)usermod 命令
1.作用:修改用户信息
2.选项:
-d
-m
-G
-g
-u
-s
3.示例:
[root@szb ~]
uid=1001(szb) gid=1001(szb) groups=1001(szb)
[root@szb ~]
[root@szb ~]
uid=1001(szb) gid=1001(szb) groups=1001(szb),0(root)
2)chsh 命令
1.作用:修改用户登录shell
2.选项:
-l
-s
3.示例:
[root@szb ~]
3)chfn 命令
1.作用:修改用户描述信息
2.示例:
[root@szb ~]
4)passwd 命令
1.作用:修改用户密码
2. 参数选项:
-e
-l
3.示例:
[root@szb sbin]
Expiring password for user szb.
passwd: Success
[root@szb sbin]
5)chage 命令
1.作用:修改和查看用户密码信息
2. 参数选项:
-m
-M
-l
3.示例:
[root@szb ~]
6)groupmod命令
1.作用:可以修改组信息
2.参数:
-n:修改组名
-g:修改组的GID
-p:设置组密码
3.示例:
[root@szb ~]
7)groupmems命令
1.作用:管理指定组的成员
2.参数
-g:指定要操作的组
-a/d:添加、删除一个组的成员
-l;列出所有组成员
-p:清空所有用户
3.示例:
[root@szb test]
-bash: groupsmems: command not found
[root@szb test]
[root@szb test]
szb sx
[root@szb test]
8)gpasswd命令
gpasswd
1.用法:修改和设置组密码
2.参数:
-a:添加一个用户到该组中
-d:删除
-r:取消组密码
-A:设置组管理员
-M:设置组的成员
3.newgrp 主组名 --切换主组
9)userdel命令
userdel
1.用法:删除用户
2.参数
-r:将对应的家目录及邮件文件一起删除
3.示例
[root@szb ~]# userdel -r szb
groupdel
1.用法:删除用户组(若是一个用户的主要组,则不能删除)
6、 切换用户身份
1)su命令
su:切换到root身份
1.参数:
-:开启login shell(su - szb 切换用户同时,当前工作目录和环境变量都切换)
-c:执行命令
-g:指定主要组
-G:指定附属组
-m:保留环境变量
2.示例:
[szb@szb ~]# su - root -c 'cat /etc/shadow'
2)sudo命令
普通用户使用sudo,需要root用户事先在/etc/sudoers中授权才行
154--162
7.、文件权限管理
1)文件权限分类
文件权限 | 文件 | 目录 |
---|
r | 此文件可读取文件内容 | 可以使用ls查看目录中的文件列表 |
w | 此文件可修改文件内容 | 在目录中创建、删除文件 |
x | 此文件可执行文件 | 可切换到目录中,访问目录内文件 |
查看权限:
[root@szb ~]
[root@szb ~]
2)chown命令–chgrp
chown
作用:修改文件的属主信息
参数:
-h:只针对链接文件设置,非指向的文件
-R:对目录中的文件递归处理
--reference=RFILE:参考RFILE文件的权限设置权限
示例:
[root@szb test]
-rw-r--r-- 1 root root 0 Jun 20 11:00 file
[root@szb test]
[root@szb test]
total 0
-rw-r--r-- 1 szb root 0 Jun 20 11:00 file
[root@szb test]
[root@szb test]
[root@szb test]
chgrp
作用:修改文件的属组信息
示例:
[root@szb test]# chgrp szb file # 修改文件所属组
3)chmod命令
chmod
作用:设置不同用户群的相关权限
读(r):4
写(w):2
执行(x):1
1.数字修改文件权限
[root@szb test]
2.模式法(MODE)进行修改
[ugoa..][[+-=][perms...]...]:
u--所有者
g--所属组
o--除ug的其他
+:增加权限
-:减少权限
=:重设权限
perms:权限
示例:
[root@szb test]
[root@szb test]
[root@szb test]
4)umask命令
umask
作用:利用umask可以设置实现用户新建文件的权限
用法:根据文件类型的基准权限与umask值按位取反的数值进行与运算,即默认权限值
1.可设置umask,临时生效,umask 026
2.建议放在~/.bashr中,只对特定用户生效,/etc/bashrc对所有用户生效
[root@szb test]
0022
0022:
方法1:
1. 第一位为0,表示八进制,默认值不可变
2. 后面三位进行文件权限计算的值
3. ----w--w-
4. 000010010
5. 111101101(按位取反)与普通文件基准权限运算值666(110110110)进行与运算;目录777
6. 结果:644
与运算:0和任何与运算都为0,其余为1
方法2:
直接用默认权限减去umask值,如果有奇数就+1,否则不变
[root@szb test]
total 4
-rw-r--r-- 1 szb root 0 Jun 20 11:00 file
drwxr-xr-x 2 root root 4096 Jun 20 11:23 szb
5)特殊权限位(s,s,t)
特殊权限位:SUID SGID Sticky
SUID:4
SGID:2
Sticky:1
SUID权限位
1.作用:通过此程序访问文件,将获得程序所有者的权限
2.例子:
[root@szb test]
-rwsr-xr-x 1 root root 27856 Apr 1 2020 /bin/passwd
3. passwd 的属主执行权限位为s,代表passwd属主可以执行,同时具有SUID权限
当一个程序没有可执行权限,但设置了SUID,属主可执行权限位为大写的S
SGID权限位
1.作用域:设置在所属组的执行权限位上,可以设置在二进制文件和目录上
2.作用:
二进制文件:作用类似SUID
目录:用户在这个目录下新建文件的属组将自动继承此目录的属组
3. 示例:
[root@szb test]
Sticky权限位
1.作用域:只针对目录有效
2.作用:
防止普通用户删除别人文件的权限
只有此目录下创建文件的这个用户和root用户可以删除操作
3. 示例:
[root@szb test]
drwxrwxrwt. 11 root root 4096 Jun 20 11:33 /tmp
4.当一个目录有可执行权限,并设置了Sticky权限,使用t表示;
没有可执行权限,但是设置了Sticky权限,使用T表示
示例:
[root@szb test]# chmod 6775 /bin/cat # 6由 SUID 4 和 SGID 2 两个权限相加得到
6)文件的特殊属性–chattr
1.chattr命令
作用:增加一些特殊属性
2.lsattr命令
作用:查看这些特殊属性
chattr
1.参数:
-R:递归处理
-+=:去掉、添加、重设属性
-f:隐藏大部分错误信息
-i:不能删除,修改,重命名和创建硬链接
-a:同-i,但是可追加
2.示例:
[root@szb test]
[root@szb test]
----i--------e-- file
[root@szb test]
mv: cannot move ‘file’ to ‘file2’: Operation not permitted
lsattr
1.参数:
-a:显示所有文件和目录及隐藏文件
-d:显示目录
-R:递归处理
7)文件的FACL
FACL(File Access Control List)
1.作用:对更多的用户设置不同的权限
2.常用的命令:setfacl(设置facl权限) 和 getfacl(查看facl权限)
3.所有ACL权限不能超过某个权限,mask设定,对owner和other权限没影响
setfacl
1.参数:
-m: 更改文件的访问控制列表
--set-file=file:从文件中读取访问控制列表条目设定
-b:清除facl格式
2.示例:
[root@szb test]
[root@szb test]
-rw-rw-r--+ 1 root root 0 Jun 20 12:10 file
[root@szb test]
[root@szb test]
[root@szb test]
user::rw-
user:szb:rw-
group::r--
mask::rw-
other::r--
8、面试案例:
示例1:
/etc/fstab 复制到 /data/ 至少需要什么权限:
1.cp命令的执行权限
2./etc/fstab 读权限
3./data/ 写权限和执行权限