Linux文件的权限管理

1 文件/目录的权限

1.1 文件的权限

每个文件都有其所有者(u:user)、所属组(g:group)和其他人(o:other)对它的操作权限,a:all则同时代表这3者。权限包括读(r:read)、写(w:write)、执行(x:execute)。在不同类型的文件上读、写、执行权限的体现有所不同,所以目录权限和普通文件权限要区分开来。

在普通文件上:

r:可读,可以使用类似cat等命令查看文件内容;读是文件的最基本权限,没有读权限,普通文件的一切操作行为都被限制。

w:可写,可以编辑此文件;

x:可执行,表示文件可由特定的解释器解释并运行。可以理解为windows中的可执行程序或批处理脚本,双击就能运行起来的文件。

在目录上:

r:可以对目录执行ls以列出目录内的所有文件;读是文件的最基本权限,没有读权限,目录的一切操作行为都被限制。

w:可以在此目录创建或删除文件/子目录;

x:可进入此目录,可使用ls -l查看文件的详细信息。可以理解为windows中双击就进入目录的动作。

如果目录没有x权限,其他人将无法查看目录内文件属性(只能查看到文件类型和文件名,至于为什么,见后文),所以一般目录都要有x权限。而如果只有执行却没有读权限,则权限拒绝。

一般来说,普通文件的默认权限是644(没有执行权限),目录的默认权限是755(必须有执行权限,否则进不去),链接文件的权限是777。

1.2 权限的表示方式

权限的模式有两种体现:数字体现方式和字符体现方式。

权限的数字表示:"-"代表没有权限,用0表示。

                r-----4

                w-----2

                x-----1

例如:rwx rw- r--对应的数字权限是764,732代表的权限数值表示为rwx -wx -w-。

1.3 chmod修改权限

能够修改权限的人只有文件所有者和超级管理员。

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... num_mode FILE...
chmod [OPTION]... --reference=RFILE FILE...

选项说明:
--reference=RFILE:引用某文件的权限作为权限值
-R:递归修改,只对当前已存在的文件有效

(1). 使用数值方式修改权限

shell> chmod 755 /tmp/a.txt

(2). 使用字符方式修改权限

由于权限属性附在文件所有者、所属组和其它上,它们三者都有独立的权限位,所有者使用字母"u"表示,所属组使用"g"来表示,其他使用"o"来表示,而字母"a"同时表示它们三者。所以使用字符方式修改权限时,需要指定操作谁的权限。

chmod [ugoa][+ - =] [权限字符] 文件/目录名

"+"是加上权限,"-"是减去权限,"="是直接设置权限

[root@xuexi tmp]# chmod u-x,g-x,o-x test        # 将ugo都去掉x权限,等价于chmod -x test
[root@xuexi tmp]# chmod a+x test                # 为ugo都加上x权限,等价于chmod +x test

1.4 chgrp

更改文件和目录的所属组,要求组已经存在。

注意,对于链接文件而言,修改组的作用对象是链接的源文件,而非链接文件本身。

chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE..

选项说明:
-R:递归修改
--reference=dest_file  file_list:引用某文件的group作为文件列表的组,即将file文件列表的组改为dest_file的组

1.5 chown

chown可以修改文件所有者和所属组。

注意,对于链接文件而言,默认不会穿过链接修改源文件,而是直接修改链接文件本身,这和chgrp的默认是不一样的。

chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... [OWNER][.[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...

选项说明:
--from=CURRENT_OWNER:CURRENT_GROUP:只修改当前所有者或所属组为此处指定的值的文件
--reference=RFILE:引用某文件的所有者和所属组的值作为新的所有者和所属组
-R:递归修改。注意,当指定-R时,且同时指定下面某一个选项时对链接文件有不同的行为
       -H:如果chown的文件参数是一个链接到目录的链接文件,则穿过此链接文件修改其源目录的所有者和所属组
       -L:目录中遇到的所有链接文件都穿越过去,修改它们的源文件的所有者和所属组
       -P:不进行任何穿越,只修改链接文件本身的所有者和所属组。(这是默认值)
       这3项若同时指定多项时,则最后一项生效

chown指定所有者和所属组的方式有两种,使用冒号和点。

shell> chown root.root test
shell> chown root:root test
shell> chown root test     # 只修改所有者
shell> chown :root test    # 自修改组
shell> chown .root test

https://www.cnblogs.com/f-ck-need-u/p/7048359.html

猜你喜欢

转载自blog.csdn.net/kim_weir/article/details/80792552