一、权限的含义:
-rwx-r-xr-x. root root
-rwx-r-xr-x+ root root
第一位表示文件类型
最后面的点“.”表示此文件是在开启selinux的状态下创建的。
加号表示此文件设置有acl权限策略
①读权限—r(read):
目录:可以查看目录中的文件
文件:可以查看文件中的内容
读权限数字表示为4
②写权限—w(write):
目录:可以在此目录中创建、删除、复制、重命名等操作
文件:可以添加或修改文件中的内容
写权限数字表示为2
③执行权限—x(execute):
目录:可以进入或切换到此目录
文件:此文件可以执行
执行权限数字表示为1
④没有权限
‘-’表示没有权限,数字表示为0
二、权限的设置
①修改文件权限
chmod [选项] 权限设置 文件名
常用选项:
-R 表示递归
权限设置:
a.数字形式设置:"r,w,x,-“权限对应数字"4,2,1,0”
数字形式设置权限为覆盖式操作
b.字符形式:“u,g,o,a"分别代表文件的“属主,属组,其他用户,全部用户”(使用”+,-,="分别对文件进行"增加,删除,赋予"等操作)
字符设置权限使用a时,a可以省略
②高级权限(了解)
a.冒险位(SETUID)
-
冒险位,指得是让文件操作者临时拥有文件拥有者的权限
-
冒险位,一般针对的是命令或者脚本文件
-
冒险位,用字母表示为s或S;数字表示为4
-
冒险位设置:chmod u+s 文件名或者 chmod 4XXX 文件名
补充:冒险位所占位置有其它权限时为s,无其他权限为S.[root@localhost ~]# ls -l /etc/shadow
---------- 1 root root 2685 3月 10 14:28 /etc/shadow###普通用户没有权限查看此文件
[root@localhost ~]# su - tom
上一次登录:二 3月 10 09:10:45 CST 2020从 192.168.216.1pts/2 上
[tom@localhost ~]$ cat /etc/shadow
cat: /etc/shadow: 权限不够[tom@localhost ~]$ exit
登出
[root@localhost ~]# which cat
/usr/bin/cat
[root@localhost ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
[root@localhost ~]# chmod 4755 /usr/bin/cat###冒险位权限增加
[tom@localhost ~]$ ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat[root@localhost ~]# su - tom
上一次登录:二 3月 10 15:31:35 CST 2020pts/1 上###cat可以临时行驶文件属主权限
[tom@localhost ~]$ cat /etc/shadow
root:$6 5 j y U S y o m 6 u D 0 t w 5. 5jyUSyom6uD0tw5. 5jyUSyom6uD0tw5.mPuddDDRaIyEbazfp0qUVTL4TEthIDjRzGtTWxtVCkEdaeYevARq9LNkWgsUD2/o9U5xgcBWe73ktNJPe6Rbh1::0:99999:7:::###取消设置冒险位方法
chmod u-s /usr/bin/cat
b.强制位(SETGID)
- 强制位,一般针对目录。如果一个目录拥有强制位,那么任何用户在这个目录内创建的所有文件的属组都为该目录的属组
- 强制位,用字母表示为s或S;数字表示为2
- 强制位设置:chmod g+s 文件名 或者 chmod 2xxx 文件名
补充:强制位所占位置有其它权限时为s,无其他权限为S.
[root@localhost tmp]# ll -d ./dir1
drwxr-xr-x 3 root root 82 3月 10 15:56 ./dir1
[root@localhost tmp]# chmod 2775 ./dir1
###强制位权限修改成功
[root@localhost tmp]# ll -d ./dir1
drwxrwsr-x 3 root root 82 3月 10 15:56 ./dir1
[root@localhost tmp]# su - harry
上一次登录:二 3月 10 17:45:28 CST 2020pts/1 上
[harry@localhost ~]$ touch /tmp/dir1/test.txt
[harry@localhost ~]$ mkdir /tmp/dir1/test
###发现harry用户创建的文件和目录的属组为/tmp/dir1目录的属组
[harry@localhost ~]$ ll /tmp/dir1/
总用量 0
drwxrwsr-x 2 harry root 6 3月 10 17:51 test
-rw-rw-r-- 1 harry root 0 3月 10 17:51 test.txt
c.粘滞位(STICKY)
粘滞位,一般针对公共目录,如果一个公共目录具有粘滞位,那么该目录下的文件,只有文件的属主与root用户可以删除。
粘滞位,用字母表示为t或T;数字表示为1
粘滞位设置:chmod o+t 文件名 或者 chmod 1xxx 文件名
[root@localhost tmp]# useradd test01
[root@localhost tmp]# useradd -G test01 test02
[root@localhost tmp]# useradd -g test01 test03
[root@localhost tmp]# su - test01
[test01@localhost ~]$ mkdir /tmp/sticky/test -p
[test01@localhost ~]$ touch /tmp/sticky/test.txt
[test01@localhost ~]$ ll /tmp/sticky/
总用量 0
drwxrwxr-x 2 test01 test01 6 3月 10 18:06 test
-rw-rw-r-- 1 test01 test01 0 3月 10 18:06 test.txt
[test01@localhost ~]$ exit
登出
###给目录增加粘滞位权限
[root@localhost tmp]# chmod 1777 /tmp/sticky/
###附加组内用户无权限删除此目录内文件与目录
[root@localhost tmp]# su - test02
[test02@localhost ~]$ cd /tmp/sticky/
[test02@localhost sticky]$ ll
总用量 0
drwxrwxr-x 2 test01 test01 6 3月 10 18:06 test
-rw-rw-r-- 1 test01 test01 0 3月 10 18:06 test.txt
[test02@localhost sticky]$ rm -rf ./*
rm: 无法删除"./test": 不允许的操作
[test02@localhost sticky]$ exit
登出
###同一个主组内用户也无权限删除其内文件与目录
[root@localhost tmp]# su - test03
[test03@localhost ~]$ rm -rf /tmp/sticky/
rm: 无法删除"/tmp/sticky/test": 不允许的操作
[test03@localhost ~]$ rm -rf /tmp/sticky/test
rm: 无法删除"/tmp/sticky/test": 不允许的操作
[test03@localhost ~]$ rm -rf /tmp/sticky
rm: 无法删除"/tmp/sticky/test": 不允许的操作
[test03@localhost ~]$
③修改默认权限
- linux中目录的最大权限为0777,文件的最大权限为0666。
- 默认权限由umask值来控制:
目录的默认权限为0777对应的权限减去umask值对应的权限,文件的默认权限为0666减去umask值对应的权限。 - 修改umask值有临时修改和永久修改:
a.临时修改
umask umask值
b.永久修改
在/etc/profile或者/etc/bashrc文件末尾加上"umask umask值"
在~/bashrc文件末尾加上"umask umask值"是只修改当前用户的
三、修改文件属主与属组
①只修改文件的属主:
chown 用户名 文件名
②修改文件的属主和属组:
chown 用户名.组名 文件名
chown 用户名:组名 文件名
chown 用户名. 文件名 //不指定组名,默认修改为用户的主组
chown 用户名: 文件名 //不指定组名,默认修改为用户的主组
③只修改文件的属组:
chown .组名 文件名
chown :组名 文件名
chgrp 组名 文件名
可以加 -R 选项,表示递归
四、ACL访问控制策略(扩展)
①获取文件的ACL策略
语法: getfacl 文件名
②设置ACL策略
语法:
a.添加ACL策略
给用户设置:setfacl [选项] u:用户名:权限 文件名
给用户组设置:setfacl [选项] g:组名:权限 文件名
常用选项:
-m 修改或者设置ACL策略
-R 递归授权,但新建的文件或目录没有策略
-x 去掉某个用户或者某个组的ACL策略;不会删除mask值
-b 删除所有的ACL策略;同时删除文件上的mask值和权限末尾的加号(加号出现的原因在权限的含义里面)
-d 默认ACL策略,只针对目录,该目录下新建的目录或文件都会继承该ACL策略
mask:定义除其他人和所有者外的最大权限
b.删除ACL策略
删除某个用户的ACL策略:
setfacl -x u:用户名 文件名
删除某个用户的ACL策略:
setfacl -x g:组名 文件名
删除文件上的全部策略:
setfacl -b 文件名
五、修改文件属性
chattr [选项] 文件名
常用选项:
使用"+","-"对文件进项增加或者减少属性
a:只允许追加内容,不允许删除或者覆盖
i:锁定,不能删除,不能修改
查看属性:
lsattr 文件名
六、一些特殊权限的目录
/root 0550
/boot 0555
/proc 0555 存储linux系统的进程文件,不可以进行操作
/sys 0555 存储系统的相关信息,不可以进行操作
/tmp 1777