[TOC]
权限管理命令
基本权限:用户对文件有‘所有者’、’所属组‘和‘其他人’的身份,每个身份都有’读‘、‘写’和’执行‘的权限。
-
权限管理命令chmod
-
语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录]
- ugoa:表示所有者、所属组、其他人和所有人。
- +-=:+表示增加权限;-表示删除权限;=表示不管以前是什么权限,现在重新设置成=号右边的权限。
- rwx:表示读写执行权限。
例如要给文件a的所属组的用户增加写权限,并且给其他人删除读权限,命令如下:
chmod g+w,o-r a
-
权限的数字表示
r —- 4
w —- 2
x —- 1
例如rwxrw-r–用数字表示为764。
所以要把文件a的权限改为rwxrw-r–可以使用命令:
chmod 764 a
-
chmod -R
chmod 764 A
只会修改目录A的权限,如果想要使得目录A下的所有子目录和文件的权限都改为764要使用命令chmod -R 764 A
。参数-R表示递归修改。
-
-
文件目录权限总结
实验:
创建一个temp目录
mkdir /temp
,在temp目录下创建文件testfiletouch /temp/testfile
,修改temp目录的权限chmod 777 /temp
,此时temp目录的权限是rwxrwxrwx,testfile文件的权限是rw-r–r–,请问其他人用户可以删除testfile文件吗? 答案是:可以。为什么其他人对testfile文件只有读权限,没有写权限,还可以删除该文件呢?原来文件的写权限不包括删除,只是可以修改文件,是否能删除要看文件所在目录的权限。
代表字符 权限 对文件的含义 对目录的含义 r 读权限 可以查看文件内容 可以列出目录中的内容 w 写权限 可以修改文件内容 可以在目录中创建、删除文件 x 执行权限 可以执行文件 可以进入目录 -
其他权限管理命令
-
改变文件或目录的所有者chown
例如要把文件a的所有者改为harris,使用命令:
chown harris a
这个命令只有root可以使用。
-
改变文件或目录的所属组chgrp
语法同chown
-
显示、设置文件和目录的缺省权限umask
umask -S
以rwx形式显示新建文件和目录的缺省权限。缺省创建的文件没有x权限。umask
以数字的形式显示新建文件和目录的缺省权限,例如:0022。第一个0表示特殊权限,稍后再讲,后三位数字022并不是缺省权限,777-022,即755才是缺省权限。所以想要设置缺省权限是700,应该使用命令umask 077
。
-
ACL权限
-
ACL权限简介与开启
- 简介
ACL是用来解决身份不够用的情况,因为目录和文件只能有一个所属组,所以不能通过添加组来添加新的身份。
基本权限和ACL权限都是用户操作文件和目录的权限,但是ACL权限不是说用户支持也不是说文件支持,而是文件所在的分区是否支持。
-
查看分区ACL权限是否开启
dumpe2fs -h /dev/sda3
在查询结果中查看Default mount options是否支持acl。
dumpe2fs
命令是查询指定分区详细文件系统信息的命令。df -h
用来查看分区使用状况。 -
开启分区ACL权限
需要修改/etc/fstab文件,这个文件是系统的开机自动挂载的文件。这个文件中没有记录光驱分区是因为不能保证光驱中一定有光盘,如果没有,系统启动就会崩溃。
在这个文件中我们可以看到每个分区都有
defaults
配置项,defaults
一般是包括acl
的,如果不包括,我们可以在defaults
后边加上,acl
即可,注意用逗号隔开。 文件修改完成之后需要重新挂载文件系统或重启系统,使修改生效。
重新挂载文件系统:
mount -o remount /
-
查看与设定ACL权限
-
查看ACL权限
getfacl 文件名
-
设定ACL权限
setfacl 选项 文件名
选项:
-
-m 设定ACL权限
-
-x 删除指定的ACL权限
-
-b 删除所有的ACL权限
-
-d 设定默认的ACL权限
-
-k 删除默认的ACL权限
-
-R 递归设定ACL权限
给用户
harris
对于目录project
设定一个读和执行的权限:
setfacl -m u:harris:rx project/
这里的
u
表示用户,如果是给组添加权限,要使用g
。 -
-
-
最大有效权限与删除ACL权限
-
最大有效权限mask
mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限。
getfacl
命令可以查看文件的mask权限,setfacl
命令可以设定mask权限:setfacl -m m:rx project/
-
删除ACL权限
-
删除指定用户的ACL权限:
setfacl -x u:用户名 文件名
-
删除指定用户组的ACL权限:
setfacl -x g:组名 文件名
-
删除文件的所有ACL权限:
setfacl -b 文件名
-
-
-
默认ACL权限和递归ACL权限
-
递归ACL权限
setfacl -m u:用户名:权限 -R 目录名
-
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子目录都会继承父目录的ACL权限。
setfacl -m d:u:用户名:权限 目录名
-