Linux chmod命令
Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
使用权限 : 所有使用者
语法
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
- + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
- -c : 若该文件权限确实已经更改,才显示其更改动作
- -f : 若该文件权限无法被更改也不要显示错误讯息
- -v : 显示权限变更的详细资料
- -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
- –help : 显示辅助说明
- –version : 显示版本
符号模式
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:
who | 用户类型 | 说明 |
---|---|---|
u | user | 文件所有者 |
g | group | 文件所有者所在组 |
o | others | 所有其他用户 |
a | all | 所用用户, 相当于 ugo |
operator 的符号模式表:
Operator | 说明 |
---|---|
+ | 为指定的用户类型增加权限 |
- | 去除指定用户类型的权限 |
= | 设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
permission 的符号模式表:
模式 | 名字 | 说明 |
---|---|---|
r | 读 | 设置为可读权限 |
w | 写 | 设置为可写权限 |
x | 执行权限 | 设置为可执行权限 |
X | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s | setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t | 粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
八进制语法
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无 | — | 000 |
例如, 765 将这样解释:
- 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
- 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
- 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。
实例
将文件 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
将文件 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
为 ex1.py 文件拥有者增加可执行权限:
chmod u+x ex1.py
将目前目录下的所有文件与子目录皆设为任何人可读取 :
chmod -R a+r *
此外chmod也可以用数字来表示权限如 :
chmod 777 file
语法为:
chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
- 若要 rwx 属性则 4+2+1=7;
- 若要 rw- 属性则 4+2=6;
- 若要 r-x 属性则 4+1=5。
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同
若用 chmod 4755 filename 可使此程序具有 root 的权限。
更多说明
命令 | 说明 |
---|---|
chmod a+r file | 给file的所有用户增加读权限 |
chmod a-x file | 删除file的所有用户的执行权限 |
chmod a+rw file | 给file的所有用户增加读写权限 |
chmod +rwx file | 给file的所有用户增加读写执行权限 |
chmod u=rw,go= file | 对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限) |
chmod -R u+r,go-r docs | 对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限 |
chmod 664 file | 对file的所有者和用户组设置读写权限, 为其其他用户设置读权限 |
chmod 0755 file | 相当于u=rwx (4+2+1),go=rx (4+1 & 4+1)。0 没有特殊模式。 |
chmod 4755 file | 4设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1)。 |
find path/ -type d -exec chmod a-x {} \; | 删除可执行权限对path/以及其所有的目录(不包括文件)的所有用户,使用’-type f’匹配文件 |
find path/ -type d -exec chmod a+x {} \; | 允许所有用户浏览或通过目录path/ |
1.1.常见权限说明
目录默认权限:755
,文件默认权限:644
- 目录:
755
750
700
- 文件:
644
640
600
2.系统帮助
- 用法:chmod [选项]… 模式[,模式]… 文件…
- 或:chmod [选项]… 八进制模式 文件…
- 或:chmod [选项]… —reference=参考文件 文件…
- Change the mode of each FILE to MODE.
- With —reference, change the mode of each FILE to that of RFILE.
- –c, —changes like verbose but report only when a change is made
- –f, —silent, —quiet suppress most error messages
- –v, —verbose output a diagnostic for every file processed
- —no–preserve–root do not treat ‘/’ specially (the default)
- —preserve–root fail to operate recursively on ‘/’
- —reference=RFILE use RFILE‘s mode instead of MODE values
- -R, –recursive 权限递归
- –help 显示此帮助信息并退出
- –version 显示版本信息并退出
- Each MODE is of the form ‘[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0–7]+‘.
- GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
- 请向<http://translationproject.org/team/zh_CN.html> 报告chmod 的翻译错误
- 要获取完整文档,请运行:info coreutils ‘chmod invocation‘
3.图解
文件下载 | 文件名称:文件权限图.vsdx | 文件大小:34.7kb |
下载声明:本站文件大多来自于网络,仅供学习和研究使用,不得用于商业用途,如有版权问题,请联系我! | ||
下载地址:点击下载 |
提取密码:
4.示例
4.1.移除用户写权限
- [root@itbkz s]#mkdir mulu
- [root@itbkz s]#touch mulu/test.txt
- [root@itbkz s]#ll -d mulu
- drwxr–xr–x 2 root root 22 12月 5 17:00 mulu
- [root@itbkz s]#ll mulu/test.txt
- –rw–r—r— 1 root root 0 12月 5 17:00 mulu/test.txt
- 方法1:
- [root@itbkz s]#chmod u=rx mulu
- [root@itbkz s]#ll -d mulu
- dr–xr–xr–x 2 root root 22 12月 5 17:00 mulu
- 方法2:
- [root@itbkz s]#chmod u-w mulu
- [root@itbkz s]#ll -d mulu
- dr–xr–xr–x 2 root root 22 12月 5 17:00 mulu
- 方法3:
- [root@itbkz s]#chmod 555 mulu
- [root@itbkz s]#ll -d mulu
- dr–xr–xr–x 2 root root 22 12月 5 17:00 mulu
4.2.增加属组写权限
- 方法1:
- [root@itbkz s]#chmod g+w mulu
- [root@itbkz s]#ll -d mulu
- drwxrwxr–x 2 root root 22 12月 5 17:00 mulu
- 方法2:
- [root@itbkz s]#chmod g=rwx mulu
- [root@itbkz s]#ll -d mulu
- drwxrwxr–x 2 root root 22 12月 5 17:00 mulu
- 方法3:
- [root@itbkz s]#chmod 775 mulu
- [root@itbkz s]#ll -d mulu
- drwxrwxr–x 2 root root 22 12月 5 17:00 mulu
4.3.增加其它写权限
- 方法1:
- [root@itbkz s]#chmod o+w mulu
- [root@itbkz s]#ll -d mulu
- drwxr–xrwx 2 root root 22 12月 5 17:00 mulu
- 方法2:
- [root@itbkz s]#chmod o=rwx mulu
- [root@itbkz s]#ll -d mulu
- drwxr–xrwx 2 root root 22 12月 5 17:00 mulu
- 方法3:
- [root@itbkz s]#chmod 757 mulu
- [root@itbkz s]#ll -d mulu
- drwxr–xrwx 2 root root 22 12月 5 17:00 mulu
4.4.相同权限修改
- 方法1:
- [root@itbkz s]#chmod go=rwx mulu
- [root@itbkz s]#ll -d mulu
- drwxrwxrwx 2 root root 22 12月 5 17:00 mulu
- 方法2:
- [root@itbkz s]#chmod 777 mulu
- [root@itbkz s]#ll -d mulu
- drwxrwxrwx 2 root root 22 12月 5 17:00 mulu
4.5.不同权限修改
- 方法1:
- [root@itbkz s]#chmod u=rx,g=rwx,o=rwx mulu
- [root@itbkz s]#ll -d mulu
- dr–xrwxrwx 2 root root 22 12月 5 17:00 mulu
- 方法2:
- [root@itbkz s]#chmod u=rx,go=rwx mulu
- [root@itbkz s]#ll -d mulu
- dr–xrwxrwx 2 root root 22 12月 5 17:00 mulu
- 方法3:
- [root@itbkz s]#chmod 577 mulu
- [root@itbkz s]#ll -d mulu
- dr–xrwxrwx 2 root root 22 12月 5 17:00 mulu
4.6.删除全部权限
- 方法1:
- [root@itbkz s]#chmod a= mulu
- [root@itbkz s]#ll -d mulu
- d——— 2 root root 22 12月 5 17:00 mulu
- 方法2:
- [root@itbkz s]#chmod 000 mulu
- [root@itbkz s]#ll -d mulu
- d——— 2 root root 22 12月 5 17:00 mulu
- 方法3:
- [root@itbkz s]#chmod =0 mulu
- [root@itbkz s]#ll -d mulu
- d——— 2 root root 22 12月 5 17:00 mulu
4.7.权限递归
- 方法1:
- [root@itbkz s]#chmod -R 700 mulu
- [root@itbkz s]#ll -d mulu mulu/test.txt
- drwx—— 2 root root 22 12月 6 22:21 mulu
- –rwx—— 1 root root 0 12月 6 22:21 mulu/test.txt
- 方法2:
- [root@itbkz s]#chmod -R u=rwx,go= mulu
- [root@itbkz s]#ll -d mulu mulu/test.txt
- drwx—— 2 root root 22 12月 6 22:24 mulu
- –rwx—— 1 root root 0 12月 6 22:24 mulu/test.txt
5.注意
- [root@itbkz s]#chmod 7777 mulu
- [root@itbkz s]#ll
- 总用量 0
- drwsrwsrwt 2 root root 6 12月 5 23:34 mulu
- [root@itbkz s]#chmod 7666 mulu
- [root@itbkz s]#ll
- 总用量 0
- drwSrwSrwT 2 root root 6 12月 5 23:34 mulu
Linux chown 命令
Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。
Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。 。
chown 需要超级用户 root 的权限才能执行此命令。
只有超级用户和属于组的文件所有者才能变更文件关联组。非超级用户如需要设置关联组可能需要使用 chgrp 命令。
使用权限 : root
语法
chown [-cfhvR] [--help] [--version] user[:group] file...
参数 :
- user : 新的文件拥有者的使用者 ID
- group : 新的文件拥有者的使用者组(group)
- -c : 显示更改的部分的信息
- -f : 忽略错误信息
- -h :修复符号链接
- -v : 显示详细的处理信息
- -R : 处理指定目录以及其子目录下的所有文件
- –help : 显示辅助说明
- –version : 显示版本
实例
把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid
将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
chown :512 /home/runoob
2.系统帮助示例:
- chown root /u 将 /u 的属主更改为”root”。
- chown root:staff /u 和上面类似,但同时也将其属组更改为”staff”。
- chown -hR root /u 将 /u 及其子目录下所有文件的属主更改为”root”。
- GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
- 请向<http://translationproject.org/team/zh_CN.html> 报告chown 的翻译错误
- 要获取完整文档,请运行:info coreutils ‘chown invocation‘
3.示例
3.1.更改拥有者
- [root@itbkz s]#mkdir mulu
- [root@itbkz s]#touch mulu/test.txt
- [root@itbkz s]#ll -d mulu
- drwxr–xr–x 2 root root 22 12月 5 17:00 mulu
- [root@itbkz s]#ll mulu/test.txt
- –rw–r—r— 1 root root 0 12月 5 17:00 mulu/test.txt
- [root@itbkz s]#ll
- 总用量 0
- drwxr–xr–x 2 root root 22 12月 5 17:00 mulu
- [root@itbkz s]#chown itbkz mulu
- [root@itbkz s]#ll
- 总用量 0
- drwxr–xr–x 2 itbkz root 22 12月 5 17:00 mulu
3.2.更改拥有组
- [root@itbkz s]#chown .itbkz mulu
- [root@itbkz s]#ll
- 总用量 0
- drwxr–xr–x 2 root itbkz 22 12月 5 17:00 mulu
3.3.更改拥有者和组
- [root@itbkz s]#chown itbkz:itbkz mulu
- [root@itbkz s]#ll
- 总用量 0
- drwxr–xr–x 2 itbkz itbkz 22 12月 5 17:00 mulu
3.4.拥有用户及组权限递归
- 方法1:
- [root@itbkz s]#chown -R itbkz:itbkz mulu
- [root@itbkz s]#ll -d mulu
- drwxr–xr–x 2 itbkz itbkz 22 12月 5 17:00 mulu
- [root@itbkz s]#ll mulu/test.txt
- –rw–r—r— 1 itbkz itbkz 0 12月 5 17:00 mulu/test.txt
- 方法2:
- [root@itbkz s]#chown -R itbkz.itbkz mulu
- [root@itbkz s]#ll -d mulu
- drwxr–xr–x 2 itbkz itbkz 22 12月 5 17:00 mulu
- [root@itbkz s]#ll mulu/test.txt
- –rw–r—r— 1 itbkz itbkz 0 12月 5 17:00 mulu/test.txt
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
文件或目录的访问权 限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文 件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l
命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:
- $ ls -l sobsrc. tgz
- –rw-r–r– 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz
横线代表空许可。r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。例如:
– rw- r– r–
普通文件 文件主 组用户 其他用户
是文件sobsrc.tgz 的访问权限,表示sobsrc.tgz是一个普通文件;sobsrc.tgz的属主有读写权限;与sobsrc.tgz属主同组的用户只有读权限;其他用户也只有读权限。
确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。
下面分别对这些命令加以介绍。
chmod 命令
chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。
以主文件夹下的一个名为“cc”的文件夹为例。下面一步一步介绍如何修改权限:
1.打开终端。输入”su”(没有引号)
2.接下来会要你输入密码,输入你的root密码。
3.假设我的文件夹在主目录里,地址为 /var/home/dengchao/cc 。假设我要修改文件权限为777,则在终端输入 chmod 777 /var/home/userid/cc 文件夹的权限就变为了777。
如果是修改文件夹及子文件夹权限可以用 chmod -R 777 /var/home/userid/cc
具体的权限(例如777的含意等)在下面解释下:
1.777有3位,最高位7是设置文件所有者访问权限,第二位是设置群组访问权限,最低位是设置其他人访问权限。
其中每一位的权限用数字来表示。具体有这些权限:
- r(Read,读取,权限值为4):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
- w(Write,写入,权限值为2):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
- x(eXecute,执行,权限值为1):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
2. 首先我们来看如何确定单独一位上的权限数值,例如最高位表示文件所有者权限数值,当数字为7时,7用“rwx”表示 –{4(r)+2(w)+1(x)=7}–又如果数值为6,则用“rw-”表示–{4(r)+2(w)+0(x)=6}–,”-”表示不具备权限,这里表 示不具备“执行”权限。
假如我们设定其他用户的访问权限为 “r–”,则数值为4+0+0=4
一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则用1表示,没有则有0表示,那么rwx则可以表示成为:111
而二进制的111就是7。
3.我们再来看下怎么确定3个数位上的权限。假如我们要给一个文件设置权限,具体权限如下:
文件所有者有“读”、“写”、“执行”权限,群组用户有“读”权限,其他用户有“读”权限,则对应的字母表示为”rwx r– r–“,对应的数字为744
一般都是最高位表示文件所有者权限值,第二位表示群组用户权限,最低位表示其他用户权限。
下面来举些例子熟悉下。
权限 | 数值 |
rwx rw- r– | 764 |
rw- r– r– | 644 |
rw- rw- r– | 664 |
该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
1. 文字设定法
chmod [who] [+ | – | =] [mode] 文件名¼
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
- u 表示“用户(user)”,即文件或目录的所有者。
- g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
- o 表示“其他(others)用户”。
- a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
- + 添加某个权限。
- – 取消某个权限。
- = 赋予给定权限并取消其他所有权限(如果有的话)。
- 设置mode所表示的权限可用下述字母的任意组合:
- r 可读。
- w 可写。
- x 可执行。
- X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
- s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
- t 保存程序的文本到交换设备上。
- u 与文件属主拥有一样的权限。
- g 与和文件属主同组的用户拥有一样的权限。
- o 与其他用户拥有一样的权限。
- -c : 若该档案权限确实已经更改,才显示其更改动作
- -f : 若该档案权限无法被更改也不要显示错误讯息
- -v : 显示权限变更的详细资料
- -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
- –help : 显示辅助说明
- –version : 显示版本
文件名:以空格分开的要改变权限的文件列表,支持通配符。在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example使同组和其他用户对文件example 有读权限。
例1:
- $ chmod a+x sort
即设定文件sort的属性为:
文件属主(u) 增加执行权限
与文件属主同组用户(g) 增加执行权限
其他用户(o) 增加执行权限
例2:
- $ chmod ug+w,o-x text
即设定文件text的属性为:
文件属主(u) 增加写权限
与文件属主同组用户(g) 增加写权限
其他用户(o) 删除执行权限
例3:
- $ chmod u+s a.out
假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看):
- –rws–x–x 1 inin users 7192 Nov 4 14:22 a.out
并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw——-”,即该文件只有其属主具有读写权限。
当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。
因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。
例4:
- $ chmod a–x mm.txt
- $ chmod –x mm.txt
- $ chmod ugo–x mm.txt
以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。
2. 数字设定法
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
数字设定法的一般形式为:chmod [mode] 文件名¼
例1:
- $ chmod 644 mm.txt
- $ ls –l
即设定文件mm.txt的属性为:
- –rw-r–r– 1 inin users 1155 Nov 5 11:22 mm.txt
文件属主(u)inin 拥有读、写权限
与文件属主同组人用户(g) 拥有读权限
其他人(o) 拥有读权限
例2:
- $ chmod 750 wch.txt
- $ ls –l
- –rwxr-x— 1 inin users 44137 Nov 12 9:22 wchtxt
即设定wchtxt这个文件的属性为:
文件主本人(u)inin 可读/可写/可执行权
与文件主同组人(g) 可读/可执行权
其他人(o) 没有任何权限
chgrp命令
功能:改变文件或目录所属的组。
语法:chgrp [选项] group filename¼
参数:
- -c或–changes 效果类似”-v”参数,但仅回报更改的部分。
- -f或–quiet或–silent 不显示错误信息。
- -h或–no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件。
- -R或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
- -v或–verbose 显示指令执行过程。
- –help 在线帮助。
- –reference=<参考文件或目录> 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
- –version 显示版本信息。
该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。
该命令的各选项含义为:
– R 递归式地改变指定目录及其下的所有子目录和文件的属组。
例1:
- $ chgrp – R book /opt/local /book
改变/opt/local /book/及其子目录下的所有文件的属组为book。
chown 命令
功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户yusi,为了让用户yusi能够存取这个文件,root用户应该把这个文件的属主设为yusi,否则,用户yusi无法存取这个文件。
语法:chown [选项] 用户或组 文件
说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。
参数说明:
- user : 新的档案拥有者的使用者 ID
- group : 新的档案拥有者的使用者群体(group)
- -c : 若该档案拥有者确实已经更改,才显示其更改动作
- -f : 若该档案拥有者无法被更改也不要显示错误讯息
- -h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
- -v : 显示拥有者变更的详细资料
- -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
- –help : 显示辅助说明
- –version : 显示版本
例1:把文件yusi123.com的所有者改为yusi。
- $ chown yusi yusi123.com
例2:把目录/demo及其下的所有文件和子目录的属主改成yusi,属组改成users。
- $ chown – R yusi.users /demo
例如:chown qq /home/qq (把home目录下的qq目录的拥有者改为qq用户)
例如:chown -R qq /home/qq (把home目录下的qq目录下的所有子文件的拥有者改为qq用户)
用户组 chgrp -R foldname zdz
命令详解直接搜索就很多了,这里不多说了。
================================
chmod命令使用数字修改文件权限
Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:
r –> 4
w –> 2
x –> 1
由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。
拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:
所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x = 4+1 = 5
所以,此权限对应的权限值就是 765。
使用数字修改文件权限的 chmod 命令基本格式为:
[root@localhost ~]# chmod [-R] 权限值 文件名
-R(注意是大写)选项表示连同子目录中的所有文件,也都修改设定的权限。
例如,使用如下命令,即可完成对 .bashrc 目录文件的权限修改:
[root@localhost ~]# ls -al .bashrc
-rw-r–r–. 1 root root 176 Sep 22 2004 .bashrc
[root@localhost ~]# chmod 777 .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Sep 22 2004 .bashrc
再举个例子,通常我们以 Vim 编辑 Shell 文件批处理文件后,文件权限通常是 rw-rw-r–(644),那么,如果要将该文件变成可执行文件,并且不让其他人修改此文件,则只需将此文件的权限该为 rwxr-xr-x(755)即可。
chmod命令使用字母修改文件权限
既然文件的基本权限就是 3 种用户身份(所有者、所属组和其他人)搭配 3 种权限(rwx),chmod 命令中用 u、g、o 分别代表 3 种身份,还用 a 表示全部的身份(all 的缩写)。另外,chmod 命令仍使用 r、w、x 分别表示读、写、执行权限。
使用字母修改文件权限的 chmod 命令,其基本格式如图 1 所示。
图 1 chmod 命令基本格式
例如,如果我们要设定 .bashrc 文件的权限为 rwxr-xr-x,则可执行如下命令:
[root@localhost ~]# chmod u=rwx,go=rx .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Sep 22 2004 .bashrc
再举个例子,如果想要增加 .bashrc 文件的每种用户都可做写操作的权限,可以使用如下命令:
[root@localhost ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Sep 22 2004 .bashrc
[root@localhost ~]# chmod a+w .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Sep 22 2004 .bashrc
增加权限给当前用户 chmod +wx filename
chmod -R 777 /upload
语法:chmod [who] [+ | – | =] [mode] 文件名
命令中各选项的含义为
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
– 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。
实例
修改文件可读写属性的方法
例如:把index.html 文件修改为可写可读可执行:
chmod 777 index.html
要修改目录下所有文件属性可写可读可执行:
chmod 777 *.*
把文件夹名称与后缀名用*来代替就可以了。
比如:修改所有htm文件的属性:
chmod 777 *.htm
修改文件夹属性的方法
把目录 /images/small 修改为可写可读可执行
chmod 777 /images/small
修改目录下所有的文件夹属性
chmod 777 *
把文件夹名称用*来代替就可以了
要修改文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行
chmod -R 777 /upload
总结linux下目录和文件的权限区别
文件:读文件内容(r)、写数据到文件(w)、作为命令执行文件(x)。
目录:读包含在目录中的文件名称(r)、写信息到目录中去(增加和删除索引点的连结)、搜索目录(能用该目录名称作为路径名去访问它所包含的文件和子目录)
具体说就是:
(1)有只读权限的用户不能用cd进入该目录:还必须有执行权限才能进入。
(2)有执行权限的用户只有在知道文件名,并拥有读权利的情况下才可以访问目录下的文件。
(3)必须有读和执行权限才可以ls列出目录清单,或使用cd命令进入目录。
(4)有目录的写权限,可以创建、删除或修改目录下的任何文件或子目录,即使使该文件或子目录属于其他用户也是如此。
查看目录权限
查看文件权限的语句:
在终端输入:
ls -l xxx.xxx (xxx.xxx是文件名)
那么就会出现相类似的信息,主要都是这些:
-rw-rw-r–
一共有10位数
其中: 最前面那个 – 代表的是类型
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r– 代表的是其他人(other)
然后我再解释一下后面那9位数:
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
– 表示相应的权限还没有被授予
现在该说说修改文件权限了
在终端输入:
chmod o w xxx.xxx
表示给其他人授予写xxx.xxx这个文件的权限
chmod go-rw xxx.xxx
表示删除xxx.xxx中组群和其他人的读和写的权限
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替
r ————4
w ———–2
x ————1
– ————0
行动:
表示添加权限
– 表示删除权限
= 表示使之成为唯一的权限
当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
-rw——- (600) 只有所有者才有读和写的权限
-rw-r–r– (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx—— (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx–x–x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
chgrp 命令用于修改文件(或目录)的所属组。
为了方便初学者记忆,可以将 chgrp 理解为是 “change group” 的缩写。
chgrp 命令的用法很简单,其基本格式为:
[root@localhost ~]# chgrp [-R] 所属组 文件名(目录名)
-R(注意是大写)选项长作用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。
使用此命令需要注意的一点是,要被改变的群组名必须是真实存在的,否则命令无法正确执行,会提示 “invaild group name”。
举个例子,当以 root 身份登录 Linux 系统时,主目录中会存在一个名为 install.log 的文件,我们可以使用如下方法修改此文件的所属组:
[root@localhost ~]# groupadd group1
#新建用于测试的群组 group1
[root@localhost ~]# chgrp group1 install.log
#修改install.log文件的所属组为group1
[root@localhost ~]# ll install.log
-rw-r–r–. 1 root group1 78495 Nov 17 05:54 install.log
#修改生效
[root@localhost ~]# chgrp testgroup install.log
chgrp: invaild group name ‘testgroup’
可以看到,在具有 group1 群组的前提下,我们成功修改了 install.log 文件的所属组,但我们再次试图将所属组修改为 testgroup 时,命令执行失败,就是因为系统的 /etc/group 文件中,没有 testgroup 群组。