13-Linux中的文件及目录权限(综合网络整理)

一、回顾Linux文件权限基础

在Linux文件权限中,总共有十位,第0位表示文件类型,后9位表示文件权限,关于每部分权限的解释如下:
第一部分(第1-3位):属主权限位(user权限位),供主人(自己)使用。
第二部分(第4-6位):属组权限位(group权限位),供小组(你亲近的人)使用。
第三部分(第7-9位): 其它用户权限位,供其他人使用。


二、验证权限的作用效果
1、准备环境
[root@centos ~]# groupadd incahome #一个家庭(oldboy的家)。
[root@centos ~]# useradd zhangyujia -g incahome #让家庭主人oldboy属于inchome这个家(模拟User)。
usermod -g incahome oldboy
[root@centos ~]# useradd oldgirl -g incahome #inchome这个家的家庭成员(模拟用户组group)。
[root@centos ~]# useradd test #外边的人,主人及家庭成员以外的人(Other)。
#操作完后要检查
id oldboy
id oldgirl
id test
提示:如果oldboy用户存在的话,就用下面修改用户组的命令。
2、打开四个窗口,分别以root、oldboy、oldgirl、test的身份进入。
3、创建文件的测试准备
①在root用户按照以下步骤执行
[root@centos ~]# mkdir /oldboy #创建目录
[root@centos ~]# echo “echo oldboylinux” >/oldboy/test.sh #写入内容
[root@centos ~]# chmod +x /oldboy/test.sh #添加权限
[root@centos ~]# cat /oldboy/test.sh #检查文件内容
echo oldboylinux
②打开四个窗口分别用root、oldboy、oldgirl、test用户登录,分别测试root、oldboy、oldgirl、test用户对上述test文件的权限(可使用CRT交谈窗口功能)。
ls -l /oldboy/test.sh #查看文件权限
[root@centos ~]# ls -l /oldboy/test.sh
-rwxr-xr-x 1 root root 17 2月 7 15:11 /oldboy/test.sh
[oldboy@centos ~]$ ls -l /oldboy/test.sh
-rwxr-xr-x 1 root root 17 2月 7 15:11 /oldboy/test.sh
[oldgirl@centos ~]$ ls -l /oldboy/test.sh
-rwxr-xr-x 1 root root 17 2月 7 15:11 /oldboy/test.sh
[test@centos ~]$ ls -l /oldboy/test.sh
-rwxr-xr-x 1 root root 17 2月 7 15:11 /oldboy/test.sh
结论1:oldboy、oldgirl、test三个用户拥有同样的其他用户权限,即读和执行,没有写的权限。
[root@centos ~]# chown oldboy.incahome /oldboy/test.sh
[root@centos ~]# ll /oldboy/test.sh
-rwxr-xr-x 1 oldboy incahome 17 2月 7 15:11 /oldboy/test.sh
结论2:oldboy用户拥有对应用户的权限,即读、写和执行的权限;oldgirl用户拥有对应用户组(incahome)的权限,即读和执行的权限,没有写的权限;test用户拥有对应其他用户的权限,即读和执行权限,没有写的权限。
③还可以分别测试root、oldboy、oldgirl、test用户对目录的权限
[root@centos ~]# mkdir /oldboy/test -p
[root@centos ~]# ls -ld /oldboy/test/
drwxr-xr-x 2 root root 4096 2月 7 20:06 /oldboy/test/
(后边过程略……)

三、改变权限属性(chmod)
chmod是用来改变文件或目录权限的命令,但只有文件的属主和超级用户root才有这种权限。通过chmod来改变文件或目录的权限有两种方法:一种是通过权限字母和操作符表达式的方法来设置权限;另一种是使用数字方法(常用)来设置权限。
1、chmod数字权限方法
①使用格式
chmod [数字组合] 文件名
例如:chmod 777 /data/oldboy/test.txt
②chmod的数字表示法的说明

r(read) 读   4
w(write)    写   2
x (execute) 执行  1
-   没有权限    0

③关于属组的数字权限计算:
将三部分权限相加,若完全权限为4+2+1=7,若只需要读写权限为4+2+0=6,若只需要读和执行权限为4+0+1=5。
上图的权限为755,分解计算如下算式所示:
7(=4+2+1)5(=4+0+1)5(=4+0+1)
每个三位的权限代码(分别代表属主、属组、其他用户),有八种可能:

0   ---
1   --x
2   -w-
3   -wx
4   r--
5   r-x
6   rw-
7   rwx

注意:如果我们想改变的仅仅是打开目录的权限,使用chmod命令时不用加任何参数。如果想把目录下的所有文件或子目录也同时改变,需要使用-R参数。
示例:
[root@centos oldboy]# chmod -R a=rwx test
[root@centos oldboy]# ls -l
总用量 4
drwxrwxrwx 2 root root 4096 2月 8 10:48 test
2、chmod字符式权限表示法
①使用格式
chmod [用户类型] [+|-|=] [权限字符] 文件名
用表格表示如下:

②权限增减字符
+:添加某个字段
-: 减少某个字段
=:取消其他所有权限赋予给定的权限
示例:
[root@centos test]# ls -l test.sh
-rwx–xr-x 1 root root 0 2月 7 20:16 test.sh
[root@centos test]# chmod u-x test.sh
[root@centos test]# ls -l test.sh
-rw—xr-x 1 root root 0 2月 7 20:16 test.sh
[root@centos test]# chmod g+r test.sh
[root@centos test]# ls -l test.sh
-rw-r-xr-x 1 root root 0 2月 7 20:16 test.sh
[root@centos test]# chmod g=w,o=x test.sh
[root@centos test]# ls -l test.sh
-rw–w—x 1 root root 0 2月 7 20:16 test.sh
[root@centos test]# chmod ugo=r test.sh
[root@centos test]# ls -l test.sh
-r–r–r– 1 root root 0 2月 7 20:16 test.sh
[root@centos test]# chmod a=rw test.sh
[root@centos test]# ls -l test.sh
-rw-rw-rw- 1 root root 0 2月 7 20:16 test.sh

四、改变文件所属关系命令chown
1、语法:chown [选项]……[所有者][:[组]]文件……
2、方法:
①仅仅授权用户
chown 用户 文件或目录
②仅仅授权组(等同于”chgrp 组 文件或目录”)
chown :组 文件或目录
③表示授权用户和组
chown 用户:组 文件或目录
注意:
①其中的冒号可以用点替代。
②要授权的用户和组名,必须是Linux系统里实际存在的。
3、举例:
[root@centos ~]# touch test.sh
[root@centos ~]# ls -l test.sh
-rw-r–r– 1 root root 0 2月 8 11:23 test.sh
[root@centos ~]# chown oldboy test.sh
[root@centos ~]# ls -l test.sh
-rw-r–r– 1 oldboy root 0 2月 8 11:23 test.sh
[root@centos ~]# chown .test test.sh
[root@centos ~]# ls -l test.sh
-rw-r–r– 1 oldboy test 0 2月 8 11:23 test.sh

五、总结
1、Linux普通文件的读、写、执行权限说明
①可读r:表示具有读取、阅读文件内容的权限。
②可写w:表示具有新增、修改文件内容的权限。
a、如果没有r配合,那么vi编辑文件会提示无法编辑(但可强制编辑),echo可以重定向或追加。
b、特别提示:删除文件(修改文件名等)的权限是受父目录的权限控制,和文件本身权限无关。
③可执行x:表示具有执行文件的权限
a、文件本身要能够执行。
b、普通用户同时还需要具备r的权限才能执行。
c、root只要有x的权限就能执行。
2、总结Linux目录的读、写、执行权限说明
①可读r:表示具有浏览目录下面文件及子目录的权限,即ls dir。
a、如果没有x权限,不能放进目录里,即无法cd dir。
b、如果没有x权限,ls列表时可以看到所有文件名,但是会提示无权限访问目录下的文件。
c、如果ls -l列表,所有的属性会带有问号,也会提示无权限访问目录下的文件,但是可以看到所有文件名。
②可写w:表示具有增加、删除或修改目录内文件名(一般指文件名)的权限,需要x权限配合。
③可执行x:表示具有进入目录的权限,例如cd dir。但是没有r无法列表文件及目录,没有w无法新建和删除。
3、默认权限是安全权限的临界点,工作中尽量给这个临界点,或者小于临界点,不要大于临界点。如下所示,超级用户创建目录默认是755,文件是644。
[root@centos oldboy]# mkdir dir
[root@centos oldboy]# touch file
[root@centos oldboy]# ls -lrt
总用量 4
drwxr-xr-x 2 root root 4096 2月 8 11:05 dir
-rw-r–r– 1 root root 0 2月 8 11:06 file

附:深入浅出linux系统umask值及其对应的文件权限讲解:http://blog.51cto.com/oldboy/1060032

本站文章都归www.zhangyujia.cn和www.laozhangteam.com所有,若转载请注明出处。
嘉叔的博客 » 13-Linux中的文件及目录权限(综合网络整理)

提供最优质的文章集合

立即查看 了解详情