1、ll命令列出文件/目录长属性(权限、属性)
[root@centos7 ~]#ll /etc/passwd -rw-r--r--. 1 root root 1091 1 月 31 12:38 /etc/passwd
-rw-r--r--:权限
root root:属性
2、文件属性:
文件属性:所有者 所属组 其他人(不显示)
chown 设置文件的所有者
[root@centos7 ~]#chown [指定所有者] [文件] //格式[root@centos7 ~]#ll f1 //查看f1文件的属性信息-rw-r--r--. 1 root root 0 2月 27 22:40 f1[root@centos7 ~]#chown yang f1 //例:更改f1文件的所有者为yang(yang为本人创建的一个用户)[root@centos7 ~]#ll f1-rw-r--r--. 1 yang root 0 2月 27 22:40 f1
chgrp 设置文件的属组信息
[root@centos7 ~]#chgrp [指定所属组] [文件] //格式[root@centos7 ~]#ll f1-rw-r--r--. 1 yang root 0 2月 27 22:40 f1[root@centos7 ~]#chgrp yang f1 //例:更改f1文件的所属组为yang[root@centos7 ~]#ll f1-rw-r--r--. 1 yang yang 0 2月 27 22:40 f1
也可以使用chown命令一起更改文件所有者、所属组
[root@centos7 ~]#ll f1 -rw-r--r--. 1 yang yang 0 2月 27 22:40 f1 [root@centos7 ~]#chown root.root f1 [root@centos7 ~]#ll f1 -rw-r--r--. 1 root root 0 2月 27 22:40 f1
普通用户更改不了文件所有者,但是可以改文件所属组(前提该文件所有者属于自己;该用户在该组内);
3、文件权限read、write、excute
1>权限针对于:所有者、所属组和其他人
-rw-r--r--:权限(例)
第一个字符'-'代表普通文件,接下来每三个字符为一组,分别为:所有者权限、所属组权限和其他人权限
2>root 账号对于读写权限设置不受影响,没有读写权限也能读写;但是执行权限 root 也要受影响;
3>文件删除权限取决于目录权限;对于目录没有执行权限,不能进去,不能看目录里文件所有属性,不能访问文件内容。
4>文件访问权限 按 所有者>所属组>其他顺序匹配,匹配到则停止匹配;
换一个文件系统不一定就是这样(Linux 里通用的文件系统是这样的)
4、权限授权:chmod
1>mode 法(模式法)
chmod [who] [operate] [authority] [file/dir_name]
who:对谁授权?所有者?所属组?其他人?还是给所有授权
operate:做什么操作?+权限?-权限?还是=赋权
authority:什么权限?r(读)、w(写)、x(执行)
file/dir_name:授权对象
[root@centos7 ~]#ll f1 -rw-r--r--. 1 root root 0 2月 27 22:40 f1 //查看f1文件的所有者、所属组和其他人权限分别为读写、读、读 [root@centos7 ~]#chmod u+x,g+w,o= f1 //赋予f1文件,增加所有者的执行权限,增加所属组的写权限,赋予其他人无权限 [root@centos7 ~]#ll f1 -rwxrw----. 1 root root 0 2月 27 22:40 f1
2>数字法授权:r=4 w=2 x=1
-rw-r--r--:权限(例):所有者(rw-)、所属组(r--)、其他人(r--),即数字法表示为:644
[root@centos7 ~]#ll f1 -rwxrw----. 1 root root 0 2月 27 22:40 f1 [root@centos7 ~]#chmod 644 f1 [root@centos7 ~]#ll f1 -rw-r--r--. 1 root root 0 2月 27 22:40 f1
chmod --reference=参考文件 文件 //将文件的权限设置为和参考文件一样
[root@centos7 ~]#ll f1 -rw-r--r--. 1 root root 0 2月 27 22:40 f1 [root@centos7 ~]#ll /etc/shadow ----------. 1 root root 655 2月 27 13:58 /etc/shadow [root@centos7 ~]#chmod --reference=/etc/shadow f1 [root@centos7 ~]#ll f1 ----------. 1 root root 0 2月 27 22:40 f1
对于 file 来说:6rw,4r,0 权限用的比较多
对于目录来说:7rwx,5r-x,0 权限偶用的比较多
chmod -R dir/file //递归附加权限
chmod -R +x dir/file //给 dir 目录连同目录下的所有文件附加执行权限
chmod -R +X dir/file //X 只给目录和可执行权限的文件(特殊)附加执行权限
4> 默认权限
umask(设置默认权限) + default(默认权限) = file:666/dir:777 //暂时公式正确
[root@centos7 ~]#umask 125 //本来默认权限应该是 541,但实际是 642 [root@centos7 ~]#touch f3 [root@centos7 ~]#ll f3 -rw-r---w-. 1 root root 0 2 月 1 12:05 f3
umask 的作用取消对应权限(转换为二进制):
666→110110110 //文件default权限
125→001010101 //125,为设置的默认权限,两者对位运算。0不取消,1 是取消
真实权限 110100010→642
默认权限计算对位相减:比如 umask 125,则:666-125=541,如果结果中有奇数则奇数加1→642(对文件来说的默认权限计算),对目录说没问题直接减就是结果。
每个用户可以设至自己的 umask,彻底更改放到家目录的:.bashrc 文件里面
[root@centos7 ~]#umask //查看当前umask默认权限 0022
umask u=rwx,g=r,o= //直接设置不用算,常配合小括号使用(),小括号开启子进程,结束关闭子进程,用法相当于一次用法
5> 文件系统上的特殊权限
三种特殊权限:SUID、SGID、Sticky
三种常用权限:r,w,x user,group,other
[root@centos7 ~]#which passwd /bin/passwd [root@centos7 ~]#ll /bin/passwd -rwsr-xr-x. 1 root root 27832 6 月 10 2014 /bin/passwd //查看/etc/passwd文件发现有suid权限,该处小 s 有 x 权限,如果为大 S 则没 x 权限 [root@centos7 ~]#chmod u-x /usr/bin/passwd [root@centos7 ~]#ll /usr/bin/passwd -rwSr-xr-x. 1 root root 27832 6 月 10 2014 /usr/bin/passwd
指定 SUID 后,当用户执行该程序(有 SUID 权限),该用户继承该程序所有者的权限
普通用户,可以使用passwd更改自己的口令,更改完口令,即必然修改/etc/shadow文件(用户密码相关文件),而该文件的权限如下:没有任何权限
[root@centos7 ~]#ll /etc/shadow ----------. 1 root root 751 2月 27 23:17 /etc/shadow
但是,/etc/passwd文件拥有suid权限,普通用户执行该程序时继承该程序的所有者权限,即suid权限。
数字法赋权:先表示原有权限:755(例),在前面+4,即 4755 //suid=4
SUID 适合二进制的可执行的程序上
SGID 权限:继承该程序所有组的权限(g+s)
数字法授权:sgid=2 sticky=1(粘滞位),sticky(o+t)作用于文件夹,此目录的文件只能被所有者删除
SUID:继承二进制程序所有者的权限
SGID:继承二进制程序所有组的权限;作用于目录,此目录新建的文件继承目录的所属组
Sticky:作用于目录,此目录的文件只能被所有者删除
chattr 工具:对特定的文件加以保护,避免 root 用户更改和删除
chattr +i 不能删除,改名,更改
chattr +a 只能追加内容
chattr +A 锁定读时间
lsattr 显示特定属性
5、访问控制列表
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其他人,可以对更多的用户设置权限
CentOS7 默认创建的 xfs 和 ext4 文件系统具有 ACL 功能
CentOS7 之前的版本,默认手工创建的 ext4 文件系统无 ACL 功能,需手动增加
tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /mnt/test
ACL 生效顺序:所有者,自定义用户,所属组,自定义组,其他人
[root@centos7 ~]#chmod 666 f1[root@centos7 ~]#setfacl -m u:yang:r f1 //针对yang用户设置r读权限,一旦设置 acl 权限则相当于第四者[root@centos7 ~]#ll f1-rw-rw-rw-+ 1 root root 0 2月 27 22:40 f1[root@centos7 ~]#getfacl f1 //查看acl权限# file: f1# owner: root# group: rootuser::rw-user:yang:r--group::rw-mask::rw-other::rw-
一旦设置 acl 权限,则组权限已经不是原来的组权限,group=mask 权限(限高权限)
除了 user 和 other,对特定的用户和组统一设一个最大权限→可以更改 mask 权限(限高权限)
[root@centos7 ~]#setfacl -m mask::r f1 [root@centos7 ~]#getfacl f1 # file: f1 # owner: root # group: root user::rw- user:yang:r-- group::rw- #effective:r-- mask::r-- other::rw-
此时 chmod g=rw f1 更改组权限,其实更改 mask 权限
[root@centos7 ~]#chmod g=rw f1 [root@centos7 ~]#getfacl f1 # file: f1 # owner: root # group: root user::rw- user:yang:r-- group::rw- mask::rw- other::rw-
setfacl -b f1 //清空 f1 文件的所有 acl 权限
备份和恢复 ACL
cp -p + mv 都可以复制 ACL 属性,但是 tar 备份工具不会保留目录和文件的ACL 信息
getfacl -R /tmp/dir1 > acl.txt //把目录下文件的所有 ACL 放到文件里
setfacl -R -b /tmp/dir1 //清空
setfacl -R -set-file=acl.txt /tmp/dir1 //还原备份的 ACL 权限
setfacl -restore acl.txt
getfacl -R /tmp/dir1
来源:https://www.cnblogs.com/zyybky/p/12375255.html