Linux文件和目录权限实战讲解

1. linux文件及目录权限精华总结

1.1. 普通文件rwx说明

r 可阅读文件内容的权限;

w 新增、修改文件内容的权限;(特别提示:删除、修改、移动目录内文件的权限受父目录的权限控制);

x 文件可被执行的权限

1.2. 目录rwx权限说明

x 进入该目录成为工作目录的权限;

r 读取目录结构列表的权限;

w 更改目录结构的权限,也就是有下面一些权限:

  • (1) 新建新的文件与目录;
  • (2) 删除已存在的文件与目录(不论该文件的权限为何);
  • (3) 将已存在的文件或目录进行重命名;
  • (4) 转移该目录内的文件、目录位置;

总之目录的w权限与该目录下面的文件名变动有关。

1.3. 文件和目录rwx权限对比

  • r 读
文件:有阅读文件内容权限
目录:浏览目录的权限(注意:与进入目录权限不同)
  • w 写
文件:新增修改文件内容(注意:删除、修改、移动目录内文件和文件本身属性无关)
目录:表示具有删除、移动、修改目录内文件的权限。如果要在目录中创建、移动、删除文件或目录必须有x权限。
  • x 执行
文件:执行文件的权限
目录:进入目录的权限。
  • 无任何权限

特别注意:当删除或移动一个文件或目录时,仅与该文件与目录的上一层目录有关,与该文件本身的属性无关。对文件来说,写文件是修改文件,而不是删除文件,因此写文件与该文件的本身属性有关。

2. 测试文件及目录的前期准备

2.1. 添加两个普通用户:user1, user2

[root@n1 ~]# useradd user1
[root@n1 ~]# useradd user2

2.2. 建立两个目录,并设置归属用户和组

[root@n1 ~]# mkdir /user1
[root@n1 ~]# mkdir /user2
[root@n1 ~]# chown user1.user1 /user1	#修改属主和用户组
[root@n1 ~]# chown user2.user2 /user2

2.3. /user1, /user2目录下分别建file文件

[root@n1 ~]# touch /user1/file
[root@n1 ~]# touch /user2/file

#查看新建目录和文件的权限
[root@n1 ~]# ls -ld /user1 /user2
drwxr-xr-x 2 user1 user1 4096 Jul  4 20:17 /user1		#目录默认的权限是755
drwxr-xr-x 2 user2 user2 4096 Jul  4 20:18 /user2
[root@n1 ~]# ls -l /user1/file /user2/file
-rw-r--r-- 1 root root 0 Jul  4 20:17 /user1/file		#文件默认的权限是644
-rw-r--r-- 1 root root 0 Jul  4 20:18 /user2/file

3. 测试user1用户浏览非自己拥有的目录/user2的权限

#用户user1对目录/user2来说属于其它组,所以只看后三位的权限r-x。所以user1对目录/user2有读(浏览目录)和执行(进入目录)的权限。
[user1@stu412 ~]$ ls -ld /user2
drwxr-xr-x 2 user2 user2 4096 Jul  4 20:18 /user2
[user1@stu412 ~]$ ls -l /user2 	#用户user1,可以浏览/user2的文件
total 0
-rw-r--r-- 1 root root 0 Jul  4 20:18 file
[user1@stu412 ~]$ cd /user2		#用户user1,可以进入目录/user2
[user1@stu412 user2]$

#user1删除非自身属主的文件权限
[user1@stu412 user2]$ rm -f file
rm: cannot remove `file': Permission denied
[root@n1 ~]# chmod 777 /user2/file 	#权限修改为777看
[root@n1 ~]# ls -l /user2
total 0
-rwxrwxrwx 1 root root 0 Jul  4 20:18 file
[user1@stu412 user2]$ rm -f file 			#还是权限不够
rm: cannot remove `file': Permission denied
#删除或移动一个文件时,与该文件的上层目录有关,与文件本身的属性无关。即使文件的权限是777也不可以。

[root@n1 ~]# chmod 755 /user2
[root@n1 ~]# chmod o+w  /user2
[root@n1 ~]# ls -ld /user2    
drwxr-xrwx 2 user2 user2 4096 Jul  4 20:18 /user2
[root@n1 ~]# ls -l /user2     
total 0
-rw-r--r-- 1 root root 0 Jul  4 20:18 file

[user1@stu412 ~]$ ls -ld /user2
drwxr-xrwx 2 user2 user2 4096 Jul  4 20:18 /user2
[user1@stu412 ~]$ ls -l /user2
total 0
-rw-r--r-- 1 root root 0 Jul  4 20:18 file
[user1@stu412 ~]$ cd /user2
[user1@stu412 user2]$ rm -f file 		#删除成功
[user1@stu412 user2]$

[root@n1 ~]# cd /user2
[root@n1 user2]# touch file2
[root@n1 user2]# chmod 000 file2		#设置file2无任何权限
[root@n1 user2]# ls -l /user2      
total 0
---------- 1 root root 0 Jul  4 22:14 file2
[user1@stu412 user2]$ ls -l /user2  
total 0
---------- 1 root root 0 Jul  4 22:14 file2
[user1@stu412 user2]$ rm -f file2		#也能删除成功
[user1@stu412 user2]$ ls -l /user2
total 0
[user1@stu412 user2]$

#测试user1仅有w权限是否能删除/user2内的文件
[root@n1 /]# chmod o=w /user2		#其它用户仅有w权限
[root@n1 /]# ls -ld /user2   
drwxr-x-w- 2 user2 user2 4096 Jul  4 22:22 /user2
[root@n1 /]# ls -l /user2
total 0
-rw-r--r-- 1 root root 0 Jul  4 22:22 file

[user1@stu412 ~]$ ls -l /user2
ls: /user2: Permission denied
[user1@stu412 ~]$ cd  /user2  
-bash: cd: /user2: Permission denied
[user1@stu412 ~]$ rm -f /user2/file	#仅有w权限,user1是无法删除/user2/file的
rm: cannot remove `/user2/file': Permission denied

#user1有rw权限看是否能删除/user2内的文件
[root@n1 /]# chmod 756 /user2
[root@n1 /]# ls -ld /user2
drwxr-xrw- 2 user2 user2 4096 Jul  4 22:22 /user2

[user1@stu412 ~]$ ls -ld /user2/
drwxr-xrw- 2 user2 user2 4096 Jul  4 22:22 /user2/
[user1@stu412 ~]$ ls -l /user2/  
total 0
?--------- ? ? ? ?            ? file
[user1@stu412 ~]$ rm -f /user2/file #仅有rw权限,user1依然无法删除/user2/file
rm: cannot remove `/user2/file': Permission denied

#测试user1仅有wx权限看是否能删除/user2内的文件
[root@n1 /]# chmod 753 /user2
[root@n1 /]# ls -ld /user2
drwxr-x-wx 2 user2 user2 4096 Jul  4 22:22 /user2
[root@n1 /]# ls -l /user2
total 0
-rw-r--r-- 1 root root 0 Jul  4 22:22 file

[user1@stu412 ~]$ ls -ld /user2/    
drwxr-x-wx 2 user2 user2 4096 Jul  4 22:22 /user2/
[user1@stu412 ~]$ ls -l /user2/    
ls: /user2/: Permission denied
[user1@stu412 ~]$ cd /user2
[user1@stu412 user2]$ rm -f file	#删除成功
[user1@stu412 user2]$

结论:

1) 删除或移动一个文件,与该文件的上层目录的权限有关,与该文件本身的属性无关,即使是777也不可能删除或移动!

2) 对于目录,可写w表示具有修改或删除目录内文件的权限,但必须同时有x权限才可以。