目录
基本权限
文件属性一共十位,第一位表示文件类型,d表示目录,-表示普通文件,b表示块设备文件,c表示字符设备文件,p表示管道文件,i表示符号链接文件。后九位表示权限,r表示读,w表示写,x表示可执行,-表示无,每三位为一组,分别表示文件所有者权限、同组用户权限、其他用户权限。
使用ls -l查看myfile文件的权限,可以看到第一位是-,所以myfile是普通文件,第二到第四位rw-表示文件所有者有读和写权限,第五到第七位r--表示同组用户只有读权限,第八到第十位r--表示其他用户只有读权限。
r读权限:对文件来说,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w写权限:对文件来说,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限。
x执行权限:对文件而言,具有执行文件的权限;对目录来说该用户具有进入目录的权限。
注意事项
1、只有目录的读权限是不允许使用cd进入目录的,必须要有执行权限才能进入。
2、只有执行权限能进入目录,但不能看到目录下的内容,要想看到目录下的文件名和目录名,需要读权限。
3、一个文件能不能被删除,主要看该文件所在的目录对用户是否具有写权限,如果目录对用户没有写权限,则该目录下的所有文件都不能被删除,文件所有者除外
4、如果目录的无读权限,即使你拥有目录中某文件的读权限也不能写该文件
权限数字表示法
每一组都有二进制表达,以读写执行的顺序,有对应权限为1,无对应权限为0,例如rw-二进制表示为110,对应的八进制数为6,三组对应三个八进制数,可以得到myfile文件rw-r--r--的数字权限表达式是644
三个特殊位SUID、SGID、Sticky
功能介绍
SUID:给一个程序或命令设置suid以后,所有使用这个程序或命令的用户都拥有这个命令对应属主的权限,例如程序文件的属主是root,那么执行该程序的用户就将暂时获得root账户的权限。但是只在此程序拥有root权限,程序外则无
SGID:sgid与suid类似,执行程序时获得的是文件属组的权限。 还有一种功能是如果某目录设置了SGID位,则在该目录下新建的文件或目录的所属组会自动地设置成该目录的所属组,同时也会有SGID,会一直沿用下去
Sticky粘滞位:如果这个目录开放了所有权限,又设置了粘滞位,那么除了属主和root用户有权限删除它,其它用户不能删除这个目录,其他用户即使拥有写权限,也不能删除之。
具体标识
SUID标识为S或s,占用属主3位权限中的可执行位(x),如果属主有执行权限,就显示s,如果没有就显示S, 数字表示4
SGID标识为S或s,占用同属组用户3位权限中的可执行位(x),如果同属组用户有执行权限,就显示s,如果没有就显示S ,数字表示为2
Sticky标识为T或t,占用其他用户3位权限中的可执行位(x),数字表示为1
加了三个特殊位后文件权限数字表达式变为四位,第一位为特殊位组成的八进制数字,第二位为属主权限组成的八进制数字,第三位为属组成员权限组成的八进制数字,第四位为其他成员权限组成的八进制数字
例如分析-rwsr-Sr--
第一个-表示该文件是普通文件
rws表示属主具有读和写权限,有s表示为有SUID位,且是小写,所以属主有执行权限,即属主权限组成的八进制数字为7
r-S表示属组成员具有读权限,有S表示为有SGID位,且是大写,所以同属组用户没有执行权限,即同属组用户权限组成的八进制数字为4
r--表示其他成员具有读权限,没有t表示没有Sticky位,即其他成员权限组成的八进制数字为4
有SUID位、有SGID位、没有Sticky位,特殊位组成的八进制数字为6
最后数字表达为6744
umask
umask称为预设权限掩码,一般来说,umask只看结果的后三位。在大部分系统中,用户创建的目录的缺省权限为777,文件的权限为666。用户可以通过修改umask来间接的修改用户创建的文件目录的默认权限,umask和权限的运算关系如下:
创建目录的默认权限的最终权限为目录777减去umask的后3位
创建文件的默认权限的最终权限为文件666权限减去umask的后3位
示例:加入目前umask的值为022,那么创建的目录的默认权限就为777-022=755,文件的默认权限为666-022=644
这里的减法是每位分别减且没有借位,如umask值为027,那么创建的目录的默认权限就为777-027=750,文件的默认权限为666-027=640
umask命令直接查看权限掩码
umask命令后面跟上数字设置权限掩码
chmod命令:修改文件权限
格式如下 : chmod [ugoa] [[+-=] [rwxst] [目录或文件] [-选项]
u (user)表示该文件的拥有者,g(group) 表示与该文件的拥有者属于同一个群体者,o (other)表示其他以外的人,a (any)表示所有用户。
+ 表示增加权限、- 表示取消权限、= 表示该用户类型的所有权限重新设置。
r 表示可读取,w 表示可写入,x 表示可执行,
选项如下:
-c : 若该文件权限确实已经更改,显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更
1、给test.txt所有用户及群组添加可执行权限
chmod a+x test.txt
2、删除test.txt文件当前用户原有的权限,然后使其具有可读、可写、可执行权限
chmod u=rwx test.txt
3、将test.txt文件设为所有人可读取
chmod ugo+r test.txt 或者 chmod a+r test.txt
4、将文件test1.txt和test2.txt文件拥有者,与其所属同一个群体者可写入,但其它以外的人则不可写入。
chmod ug+w,o-w test1.txt test2.txt
5、给文件拥有者设置的权限是7,7=4+2+1,即赋予读取,写入和执行权限。6=4+2,即所在的组赋予读取和写入 权限,1表示执行权限,即给其他用户执行权限。
即设定为rwxrw---x
chmod 761 test.txt
6、给文件增加SUID位
chmod 4644 test.txt