chmod -- 修改文件的访问权限
chmod 命令概述:
chmod 命令用于修改文件或目录的访问权限。
说明:
Linux 系统中的每个文件和目录都有访问权限,用它来确定谁可以通过何种方式进行访问和操作。
文件或目录的访问权限分为只读(r),可写(w)和可执行(x)三种:以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同一用户组用户和其他用户。所有者一般是文件的创建者,所有者可以允许同一用户组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件所有者的读、写和执行权限;同一用户组用户的读、写和执行权限;系统中其他用户的读、写和执行权限。
以 homework 为例:
drwxrwxr-x. 2 fishc fishc 4096 Dec 20 20:36 homework
第 1 列共有 10 个字符,第 1 个字符指定了文件类型 —— 文件或目录:如果第 1 个字符是横线(-),表示是一个非目录的文件。如果是字符 d,表示这是一个目录。从第 2 个字符开始到第 10 个共 9 个字符,每 3 个字符为一组,分别表示了上述 3 组用户对文件的访问权限。权限字符用横线(-)代表禁止,r 代表只读,w 代表可写,x 代表可执行。
格式:
[*]chmod [选项]... 访问权限... 文件...
[*]chmod [选项]... 访问权限(八进制)... 文件...
[*]chmod [选项]... --reference=RFILE... 文件...
选项:
选项含义
-c, --changes 类似于 --verbose 选项,但只有在权限改动时显示信息
--no-preserve-root 不对 / 进行特殊处理(默认)
--preserve-root 不允许对 / 递归操作
-f, --silent, --quiet 不输出错误信息
-v, --verbose 显示处理信息
--reference=RFILE设置为与指定文件相同权限
-R, --recursive 递归修改当前目录及其所有子目录的访问权限
--help 显示帮助信息并退出
--help 输出版本信息并退出
用法:
1. chmod... [权限范围]... [+ | - | =]... [访问权限]... 文件
权限范围
[*]u:文件所属的用户
[*]g:文件所属的用户组
[*]o:除了文件所属的用户及群组之外的其他用户或者用户组
[*]a:所有的用户及用户组
+ | - | =
[*]权限范围 + 访问权限:追加权限范围内的文件或目录的指定权限
[*]权限范围 - 访问权限:删除权限范围的文件或目录的指定权限
[*]权限范围 = 访问权限:设置权限范围内的文件或目录为指定权限
举个栗子:
$ ls -l
total 12
-rw-rw-r--. 1 fishc fishc 9900 Dec 23 15:11 fishc_log.txt
$ chmod u=x fishc_log.txt # 设置文件所属用户的权限为可执行
$ ls -l
total 12
---xrw-r--. 1 fishc fishc 9900 Dec 23 15:11 fishc_log.txt
$ chmod u+wr fishc_log.txt # 追加文件所属用户的只读和可写权限
$ ls -l
total 12
-rwxrw-r--. 1 fishc fishc 9900 Dec 23 15:11 fishc_log.txt
$ chmod g-rw fishc_log.txt # 删除文件所属用户组的只读和可写权限
$ ls -l
total 12
-rwx---r--. 1 fishc fishc 9900 Dec 23 15:11 fishc_log.txt
2. 用八进制的数字设置访问权限(小甲鱼个人比较推荐这种方法)
其实 9 位表示权限的字符,可以用 3 个八进制数来表示(同样,依次是设置文件所有者,同一用户组用户和其他用户的权限)
[*]r:只读权限,用数字 4 表示
[*]w:可写权限,用数字 2 表示
[*]x:可执行权限,用数字 1 表示
[*]- :木有权限,用数字 0 表示
举个栗子你就明白了:
注:下边说的“三者”,指的是“文件所有者,同一用户组用户和其他用户”。
$ chmod 444 fishc_log.txt # 设置三者的权限均为只读
$ ls -l
total 12
-r--r--r--. 1 fishc fishc 9900 Dec 23 15:11 fishc_log.txt
$ chmod 744 fishc_log.txt # 将文件所有者的权限设置为最高等级(只读、可写和可执行,7 = 4 + 2 + 1)
$ ls -l
total 12
-rwxr--r--. 1 fishc fishc 9900 Dec 23 15:11 fishc_log.txt
$ chmod 755 fishc_log.txt # 将文件所有者的权限设置为最高等级,文件所属用户组和其它用户的权限都设置为只读和可执行(5 = 4 + 1)
$ ls -l
total 12
-rwxr-xr-x. 1 fishc fishc 9900 Dec 23 15:11 fishc_log.txt
学习了,第二种方法好使啊,嘿嘿{:5_95:} 学习了{:10_257:}{:10_257:} {:10_266:}好像学到了 小甲鱼有出linux相关的视频吗,如有一定马上去看。 看看{:10_256:} 补充二点:
一 :下在使用8进制修改权限时记得 每次输入的数字必须是 三个 例如 原权限 为 r-- r-- r--如要改为 前两者可写 则应为 6(4+2)6(4+2) 4 第三个没有改但也要写上 。但如使用 u g o 则改什么写什么 不变的不需要去理会 。
二 :还有在命令修改是 不要出现 一种命令 就是 全不可读 任何操作都是在可读下进行的 我一般都是 chmod -R 777 get 学到了
页:
[1]