前言
Linux的用户都有自己唯一的用户名和口令,用户可以根据自己的用户名和口令登陆系统。
用户管理文件
1./etc/passwd 用于存放用户的信息
格式为:
用户名:密码 : uid:gid:注释:家目录:shell类型
(注意:密码用符号x占位,真正的密码存在/etc/shadow文件中)
2. /etc/gshadow 存放用户密码
格式为:
用户名:加密的密码 :上一次密码修改时间:修改密码的最小期限:密码最长有效期:密码最长过期前提醒时间:宽限时间:账户到期时间:保留字段
3./etc/group 用于存放组的信息
格式为: 群组名称:群组密码:GID
4./etc/gshadow 组密码及其相关属性
格式为: 群组名:群组密码: 组管理员列表:以当前组为附加组的用户列表
切换用户
1.用户可以用su 命令来切换不同的用户身份
su [options…] [-] [user [args…]]
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录
root 切换至其他用户无须 密码,非root用户切换时需要密码
文件权限
1.传统权限有r(读),w(写),x(执行),而且同样的权限在文件和目录的作用不一样
目录:
r:用户可以查看目录下面有哪些文件
w:用户可以在删除此目录下面或复制,移动文件到此目录下面
x:用户可以进入到目录下面,文件夹最低需要执行权限
文件:
r:用户可查看文件内容
w:用户可以修改文件
x:用户可以执行此文件,一般默认不给文件执行权限
2.特殊权限
SUID, SGID, Sticky
suid:设置在可执行的二进制程序上面,当使用执行此程序就会获得文件所有者的权限
前面我们介绍了用户的口令是放在/etc/shadow文件里面的,修改用户口令就是修改/etc/shadow文件,但是除了root用户其他用户无法修改shadow文件,但是用户可以修改自己的口令。
原因就是普通用户使用passwd执行程序的时候暂时获得了root的权限,修改了shadow文件。sgid可以理解成古代钦差大臣携带的尚方宝剑,大臣就拥有了皇帝拥有的权限
sgid:设置在可执行的二进制程序上面,当使用执行此程序就会获得文件所属组的权限,与sgid类似。但是当文件作用在文件夹上时,在文件夹的下面新建的文件的所属组就会变成文件夹的所属组
sticky:具有写权限的目录通常用户可以删除该目录中的任何文件,无论是不是拥有该文件什么权限, 在目录设置Sticky 位,只有文件的所有者或root可以删除该文件,注意sticky 设置在文件上没有意义
除了上面的权限,还可以对文件设置特殊的权限
可以看到连root无法在修改i属性的文件的内容,说明+i属性不允许所有的用户修改文件
a属性的功能是只能对文件增加内容,不能修改文件
访问控制列表 ACL:
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加 tune2fs –o acl /dev/sdb1 mount –o acl /dev/sdb1 /mnt/test
ACL有生效次序:文件所有者,自定义用户,自定义组,其他人,其中如果没有针对一个用户单独设置权限
注意:若他在多个组自定义组里,那么他拥有的权限是所有字定义组的权限之和
ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权 限),而非传统的组权限 。getfacl 可看到特殊权
通过ACL赋予目录默认x权限,目录内文件也不会继承x权限
base ACL 不能删除
setfacl -k dir 删除默认ACL权限
setfacl –b file1清除所有ACL权限
getfacl file1 | setfacl --set-file=- file2 复制file1的acl权限给file2