Linux文件目录权限浅谈

1、基本权限三种
(1)r (read) 读

针对目录,有读(r)权限就代表能对此目录有列表功能,就是可以执行ls命令进行查看,另外还有cp的功能。
针对文件,有读(r)权限就代表能对此文件有阅读功能,可以通过cat等命令查看文件内容。

(2)w (write) 写
针对目录,有写(w)权限就代表着在此目录下创建文件和目录,可以通过touch,mkdir等命令创建文件和目录,另外还可以删除此目录下的文件。
针对文件,有写(w)权限就代表着对此文件可以写入新的内容和修改文件内容。

(3)x (execute) 执行
针对目录,有执行(x)权限就代表能进入此目录,利用cd等命令进入此目录
针对文件,有执行(x)权限就代表可以执行此文件。

例题:
(4)拷贝文件到目录中,需要对此目录具备哪些权限?
-----拷贝文件到目录时,需要写数据到目录中,所以需要对此目录有写的权限(w),另外写的动作是一个执行的过程,所以还需要对此目录有执行(x)权限才行。

(5)什么情况下可以删除文件或者目录
-----能不能删除文件与它本身的权限和owner,group无关,能否删除需要看它的上一级目录的权限,也就是说当前用户对上一级目录有写(w)和执行(x)权限,就可以删除此目录下的文件或子目录
是否能删除目录,要求
1、如果是空目录,只要对它的上级有写(w)和执行(x)权限,就可以删
2、如果是非空目录,那么当前用户要对这个目录里的包括上级目录、本身目录以及所有的子目录都有写(w)和执行(x)权限,才可以删除非空目录。

(6)什么时候会出现强制保存的选项?什么时候可以强制保存,什么时候不能?
只有当用户对文件没有写权限的时候,才会在保存时出现要你使用!强制保存的选项;比如上级目录对user1没有写权限,目录里的文件对user1也没有写权限,那么user1不能强制保存这个文件(--但是这个文件是属于其它用户的,才不能强制保存,如果这个文件就是属于user1,文件和目录都没有写权限,也可以强制保存)

而如果把上级目录改为对user1有写权限,就算是目录里的文件对user1没有写权限,user1也可以强制保存这个文件,并且保存后,属主和属组会变为user1;这种情况会比较混乱(特别是文件服务器的情况),所以目录一般默认权限就是755,避免除开目录属主外的用户能够写

--总结:
(1)只有当用户对文件没有写权限的时候,才会在保存时出现要你使用!强制保存的选项
(2)你是文件的所有者,不管对上级目录还是文件本身有何权限,都可以强制保存。
(3)你不是文件的所有者,对上级目录有写权限,就可以强制保存,并且强制保存后,owner和group改变成你自己这个用户了。

2、特殊位导致权限变化一般有以下两种
(1)特权位(s)
setuid s位在前三位
setgid s位在中间三位
特权位只针对文件有效,并且只能添加在权限位的前三位和中间三位;一个可执行文件拥有s位并且在前三位时,当别的用户来执行此文件,使用的权限是此可执行文件属主权限;如果一个可执行文件拥有s位并且在中间三位时,当别人的用户来执行此文件,使用的权限是此可执行文件属组的权限
[root@localhost test]# ll /etc/shadow
-r-------- 1 root root 1425 Mar 7 16:42/etc/shadow
[root@localhost test]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22960 Jul 17 2006/usr/bin/passwd
--通过上面的权限可知,普通用户修改密码使用passwd能改自己的密码,但是密码是存放在/etc/shadow里,也就是说普通用户对/etc/shadow没有写的权限,但passwd可执行文件的前三位有s位,所以普通在调用passswd时是用的root的权限

(2)粘帖位(t)
当一个目录共享给其他用户使用并且用户可以上传文件和删除文件,但是只能删除自己的文件,那么就必须用到粘帖位(t),特别用在/tmp目录。只针对目录有效。
有t位的目录,任何用户在有权限的情况下是可以创建文件和目录,就算是有权限删除别人的文件或目录也不能删除,同时互相也不能强制保存修改,自己只能删除自己创建的目录,用于一些共享上传的文件服务器场合
[root@www test]# ll -ld /tmp/
drwxrwxrwt. 72 root root 12288 Aug 23 20:26 /tmp/

--s位和t位都是占用x位,那么是否有x位,主要是看s或t的大小写来判别;
大写,表示没有执行权限x位
小写,表示有执行权限x位

3、隐藏属性权限--
i 权限,具备i 权限的文件将无法删除,修改,重命名等
命令查看隐藏权限和修改隐藏权限有以下命令
lsattr --listfile attributes on a Linux second extended file system
chattr --change file attributeson a Linux second extended file system

[root@localhost /]# lsattr /etc/shadow
------------- /etc/shadow
[root@localhost /]# chattr +i/etc/shadow ---添加i 权限
[root@localhost /]# lsattr /etc/shadow --有了i 权限后,此文件就不能改动,root用户都不行
----i-------- /etc/shadow

4、修改权限,通常使用的命令
(1)chmod --change file access permissions
(2)chown --change file owner and group
(3)chgrp --change group

推荐阅读:

相关推荐