chmod [选项] … MODE[,MODE] … FILE …

chmod [选项] … OCTAL-MODE FILE …

chmod [选项] … --reference=RFILE FILE …

  chmod命令用来更改指定文件访问权限。将改变每个FILE的模式为MODE。使用—reference时,将每个FILE的模式更改为RFILE的模式。

  MODE有两种更改方式:一种是用符号标记进行更改,另一种是采用八进制数指定新的访问权限。

  符号模式的格式是[ugoa…][[+ - =][perms…]…],其中perms可以来自集合{rwxXst}中的零个或多个,也可以来自集合{ugo}中的一个。可以给出多个符号模式,以逗号分隔。

  字母ugoa的组合控制哪些用户对文件的访问权限将被更改:文件的所有者(u),在文件组中的用户(g),其他的用户(o),所有用户(a)。如果没有给出,则默认使用a,但是在umask中设置的位不会受到影响。注意:这里所有的文件组都指代的是文件所有者所在的组

  操作符’+’给指定文件添加用户所选的权限;操作符’-’使得指定文件撤消用户所选的权限;’=’使得指定文件只有用户所选的权限(少增多删)。

  集合{rwxXst}和集合{ugo}给用户选择文件新的属性:读取(r)、写入(w)、执行(或搜索目录)(x)、精当文件是目录或已经具有某些执行权限时才执行/搜索用户(X)、在执行时设置用户或组ID(s)、限制删除标志或粘滞位(t)、授予目标文件的所有者权限(u)、授予目标文件的文件组成员权限(g)、授予目标文件的其他用户权限(o)。

  数字模式是从1到 4个八进制数,数值从0到7,每个数由0与位权为4,2,1的3个数叠加得出。被省略的数字缺省值为0。第一个八进制数设置用户ID(4)、组ID(2)、限制删除和粘滞位(1);第二个八进制数设置拥有该文件的用户权限:读取(4)、写入(2)和执行(1)。第三个八进制数设置文件组中其他用户的权限,值与第二个八进制数相同;第四个八进制数设置其他用户的权限,值与第二个八进制数相同。注意:这里的省略值是在前面,例如444,完整就是0444。

  chmod永远不会改变符号链接的权限;chmod系统调用无法更改其权限。但这不是问题,因为从不使用符号链接的权限。对于命令行中列出的每个符号链接,chmod会更改指向文件的权限,但忽略递归目录遍历时遇到的符号链接。

(1).选项

-c,--change 类型verbose,但仅在进行更改时报告。
-f,--silent,--quiet 不列出大多数错误信息。
-v,--verbose 为每个处理为文件输出诊信息。
--no-preserve-root 要特别对待’/’(根目录?)(默认)
--perserve-root 无法以’/’(根目录?)递归操作
--reference=RFILE 使用RFILE的MODE,而不是指定的MODE值
-R,--recurive 以递归方式操作文件和目录。
--help 打印帮助并退出
--version 打印版本信息并退出

(2).实例

符号模式

[root@xuexi xf]# ls -l 1.txt
-rw-rw-r--. 1 xf xf 0 11月 7 13:28 1.txt
[root@xuexi xf]# chmod o+w 1.txt    //增加权限
[root@xuexi xf]# ls -l 1.txt
-rw-rw-rw-. 1 xf xf 0 11月 7 13:28 1.txt
[root@xuexi xf]# chmod a-r 1.txt    //撤销权限
[root@xuexi xf]# ls -l 1.txt
--w--w--w-. 1 xf xf 0 11月 7 13:28 1.txt
[root@xuexi xf]# chmod a=rw 1.txt    //完全匹配权限,多删少加
[root@xuexi xf]# ls -l 1.txt
-rw-rw-rw-. 1 xf xf 0 11月 7 13:28 1.txt
[root@xuexi xf]# chmod u=rwx,g=r,o=--- 1.txt    //不同用户不同要求
[root@xuexi xf]# ls -l 1.txt
-rwxr-----. 1 xf xf 0 11月 7 13:28 1.txt

数字模式

[root@xuexi xf]# chmod 4 1.txt
[root@xuexi xf]# ls -l 1.txt
-------r--. 1 xf xf 0 11月 7 13:28 1.txt
[root@xuexi xf]# chmod o=r 1.txt    //可以看出这两个是等价的
[root@xuexi xf]# ls -l 1.txt
-------r--. 1 xf xf 0 11月 7 13:28 1.txt

递归目录,设置权限

[root@xuexi xf]# ls -l
总用量 0
drwxrwxr-x. 2 xf xf 32 11月 7 13:29 newDir
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 公共
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 模板
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 视频
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 图片
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 文档
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 下载
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 音乐
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 桌面
[root@xuexi xf]# ls -l newDir/
总用量 0
-rw-rw-r--. 1 xf xf 0 11月 7 13:29 2.txt
-rw-rw-r--. 1 xf xf 0 11月 7 13:29 3.txt
[root@xuexi xf]# chmod -R o=--- newDir
[root@xuexi xf]# ls -l
总用量 0
drwxrwx---. 2 xf xf 32 11月 7 13:29 newDir
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 公共
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 模板
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 视频
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 图片
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 文档
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 下载
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 音乐
drwxr-xr-x. 2 xf xf 6 9月 6 11:43 桌面
[root@xuexi xf]# ls -l newDir/
总用量 0
-rw-rw----. 1 xf xf 0 11月 7 13:29 2.txt
-rw-rw----. 1 xf xf 0 11月 7 13:29 3.txt

注意:只要是文件所有者就一定可以写文件,哪怕文件权限是000。vim进入文件,wq!强制保存文件。

(3).扩展

1)补码(了解)

  创建文件和目录时,默认权限是根据/etc/profile(全局永久应用)和当前用户主目录(也叫家目录)的.bash_profile或.profile(个人永久应用)中设置的umask值决定。

  umask命令允许创建文件时使用缺省值,对应每一类用户(所属主、所属组、其他用户)。

  文件默认值666(rw-rw-rw-),目录默认值777(rwxrwxrwx)。

  例如/etc/profile中判断标准如下:

if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi

  说明:如果UID大于199,并且用户名和组名相同umask值为002(-------w-),否则为022(----w--w-)。

  注:-gt在shell中表示大于;id-g显示组ID,id-gn显示组名;id-u显示用户ID,id-un显示用户名。

  如果root用户创建,那么计算方法:

  创建文件时默认权限=文件初始默认666(rw-rw-rw-)去除022(----w--w-)=664(rw-r--r--)

  创建目录时默认权限=目录初始默认777(rwxrwxrwx)去除022(----w--w-)=755(rwxr-xr-x)

  另外还可以用umask命令临时修改,实例如下:

[root@xuexi ~]# umask 033
[root@xuexi ~]# touch 1
[root@xuexi ~]# ls -l 1
-rw-r--r--. 1 root root 0 1月 8 14:28 1

  就算过程:创建文件时默认权限=文件初始默认666(rw-rw-rw-)去除033(----wx-wx)=664(rw-r--r--)。文件默认初始没有x权限,所以也没法去除x权限,可以无视。

2)文件的特殊权限suid、sgid、sticky(了解)

suid:程序运行时会临时拥有该文件的所有者权限。

   限定,只能设置在二进制可执行程序上,对目录无效。

sgid:在设置了sgid权限的目录下新建文件,该文件的所属组集成上级目录的所属组。

   限定,既可以给二进制可执行程序设置,也可以给目录设置。

sticky:目录下创建的文件只有root、文件创建者、目录所有者才能删除。

   限定,粘滞位权限是针对目录的,对文件无效,也叫防删除位。

特殊权限

实现方式(数字模式可以混合使用)

suid

u+s或4XXX(后面是正常权限)

sgid

g+s或2XXX(后面是正常权限)

sticky

o+t或1XXX(后面是正常权限)

suid实例:设置suid权限

[root@xuexi ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
[root@xuexi ~]# ll /usr/bin/less
-rwxr-xr-x. 1 root root 158240 7月 31 2015 /usr/bin/less
Try 'chmod --help' for more information.
[root@xuexi ~]# chmod 4755 /usr/bin/less
[root@xuexi ~]# ll /usr/bin/less
-rwsr-xr-x. 1 root root 158240 7月 31 2015 /usr/bin/less

sgid实例:设置sgid权限

[root@xuexi ~]# mkdir test
[root@xuexi ~]# ll -d test
drwxr-xr-x. 2 root root 6 1月 8 16:29 test
[root@xuexi ~]# chmod g+s test
[root@xuexi ~]# ll -d test
drwxr-sr-x. 2 root root 6 1月 8 16:29 test
[root@xuexi ~]# chown :bin test/
[root@xuexi ~]# ll -d test
drwxr-sr-x. 2 root bin 6 1月 8 16:30 test
[root@xuexi ~]# touch test/1
[root@xuexi ~]# ll test/1
-rw-r--r--. 1 root bin 0 1月 8 16:31 test/1

sticky实例:设置sticky权限

[root@xuexi ~]# chmod g-s test
[root@xuexi ~]# ll -d test
drwxr-xr-x. 2 root bin 15 1月 8 16:31 test
[root@xuexi ~]# chmod o+t test
[root@xuexi ~]# ll -d test
drwxr-xr-t. 2 root bin 15 1月 8 16:31 test

3)文件扩展权限ACL(了解)

setfacl [选项] file

某用户不是文件所属主,也不在所属组,但又笔other所要的权限多时使用此命令

(1).常用选项

-b,--remove-all 删除所有扩展的ACL项

-d,--default 设置默认ACL,可对目录使用此选项,目录下创建新的文件或目录将继承指定的ACL权限

-m,--modify=acl 修改当前ACL项

-R,--recursive 递归到子目录

-x,--remove=acl 从文件的ACL中删除条目

  ACL格式:

[d[efault]:] [u[ser]:]uid [:perms]  指定用户的权限,文件所有者的权限(如果uid没有指定)。
[d[efault]:] g[roup]:gid [:perms] 指定群组的权限,文件所有群组的权限(如果gid未指定)
[d[efault]:] m[ask][:] [:perms] 有效权限掩码
[d[efault]:] o[ther] [:perms] 其他的权限

(2).实例

给文件添加某个用户的扩展权限

[root@xuexi ~]# touch 1
[root@xuexi ~]# ll 1
-rw-r--r--. 1 root root 0 1月 9 10:33 1
[root@xuexi ~]# setfacl -m u:xf:rwx 1    //u代表用户
[root@xuexi ~]# ll 1
-rw-rwxr--+ 1 root root 0 1月 9 10:33 1
[root@xuexi ~]# getfacl 1
# file: 1
# owner: root
# group: root
user::rw-
user:xf:rwx
group::r--
mask::rwx
other::r--

给文件夹添加某个用户扩展权限

[root@xuexi ~]# mkdir test
[root@xuexi ~]# ll -d test
drwxr-xr-x. 2 root root 6 1月 9 10:38 test
[root@xuexi ~]# setfacl -m d:u:xf:rwx test    //d设置默认ACL,新建的文件或目录继承指定ACL权限
[root@xuexi ~]# ll -d test
drwxr-xr-x+ 2 root root 6 1月 9 10:38 test
[root@xuexi ~]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:xf:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

对目录递归添加某个用户的扩展权限

[root@xuexi ~]# mkdir t1
[root@xuexi ~]# touch t1/{a,b,c}
[root@xuexi ~]# ll -d t1
drwxr-xr-x. 2 root root 33 1月 9 10:43 t1
[root@xuexi ~]# ll t1/
总用量 0
-rw-r--r--. 1 root root 0 1月 9 10:43 a
-rw-r--r--. 1 root root 0 1月 9 10:43 b
-rw-r--r--. 1 root root 0 1月 9 10:43 c
[root@xuexi ~]# setfacl -R -m u:xf:rwx t1/    //-R要在-m前,因为-m要加参数
[root@xuexi ~]# ll -d t1
drwxrwxr-x+ 2 root root 33 1月 9 10:43 t1
[root@xuexi ~]# ll t1/
总用量 0
-rw-rwxr--+ 1 root root 0 1月 9 10:43 a
-rw-rwxr--+ 1 root root 0 1月 9 10:43 b
-rw-rwxr--+ 1 root root 0 1月 9 10:43 c
[root@xuexi ~]# getfacl t1
# file: t1
# owner: root
# group: root
user::rwx
user:xf:rwx
group::r-x
mask::rwx
other::r-x
[root@xuexi ~]# getfacl t1/a
# file: t1/a
# owner: root
# group: root
user::rw-
user:xf:rwx
group::r--
mask::rwx
other::r--

给文件或文件夹去掉某个用户的扩展权限

[root@xuexi ~]# setfacl -x u:xf t1/a
[root@xuexi ~]# ll t1/a
-rw-r--r--+ 1 root root 0 1月 9 10:43 t1/a
[root@xuexi ~]# getfacl t1/a
# file: t1/a
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--

给文件或文件夹去掉所有扩展权限

[root@xuexi ~]# setfacl -b t1/b
[root@xuexi ~]# ll t1/b
-rw-r--r--. 1 root root 0 1月 9 10:43 t1/b
[root@xuexi ~]# getfacl t1/b
# file: t1/b
# owner: root
# group: root
user::rw-
group::r--
other::r--

  

Linux命令之chmod的更多相关文章

  1. 我用过的Linux命令之chmod

    chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. Linux系统中的每 ...

  2. Linux命令之chmod、chown

    一.chmod命令 chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. ...

  3. linux 命令——27 chmod

    chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法. 一种是包含字母和操作符表达式的文字设定法: 另一种是包含数字的数字设定法. Linux系统中 ...

  4. Linux 命令之 chmod

    命令格式 chmod有以下三种格式 chmod [-cfvR] MODE[,MODE]... FILE... chmod [-cfvR] OCTAL-MODE FILE... chmod [-cfvR ...

  5. linux 命令:chmod权限设置命令

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  6. linux命令之------Chmod命令

    Chmod命令 1)作用:linux和unix的文件调用权限分为三级:文件拥有者/群组/其他.利用chmod可以控制文件如何被他人所调用.(主要就是修改文件夹,文件的权限) 2)U表示该文件的拥有者, ...

  7. linux命令中chmod 777 以及drwxr-xr-x分别代表什么意思

    最近跟一个运维人员学了点新东西,感觉以前没怎么注意,但现在感觉很有用,特来记录一下. linux使用==ll==命令列出列表的时候,前面总是有一堆drwxr-xr-x ,这些代表什么意思从来还没有去在 ...

  8. linux命令:chmod

    1.命令介绍: chmod用来改变系统文件或目录的相关权限,可读,可写,可执行等. 2.命令格式: chmod [选项] 模式 文件 3.命令参数: 必要参数:-c 当发生改变时,报告处理信息-f 错 ...

  9. linux命令之chmod 2011.11.24转载于网络

    使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix 的档案调用权限分为三级 : 档案 ...

  10. Linux命令之chmod 及+s 参数(临时以所有者权限执行)

    转自: http://blog.csdn.net/shaobingj126/article/details/7031221 chmod用于改变文件或目录的访问权限.用户用它控制文件或目录的访问权限.该 ...

随机推荐

  1. Linux系统查看系统信息

    1. CPU # lscpu # cat /proc/cpuinfo //可以知道每个cpu信息,如每个CPU的型号,主频等 2. 内存 # free -m # cat /proc/meminfo / ...

  2. asp.net 文件上传,大文件上传。

    新建一个asp.net页面,在工具栏里拖入 FileUpload 上传控件.一个按钮 Button  !    !     ! 进入Button事件 //----------------------- ...

  3. 函数式编程--响应式编程 ---android应用例子

    RxJava implements this operator as create. It is good practice to check the observer’s isUnsubscribe ...

  4. How to write educational schema.

    Sometimes, writing such educational schemas could be of much use, and creating such docs can be bene ...

  5. 复现VGG19训练自定义图像分类

    1.复现VGG训练自定义图像分类,成功了哈哈. 需要代码工程可联系博主qq号,在左边连接可找到. 核心代码: # coding:utf-8 import tensorflow as tf import ...

  6. CTF线下赛AWD模式下的生存技巧

    作者:Veneno@Nu1L 稿费:200RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 原文:https://www.anquanke.com/post/id/8467 ...

  7. Mel倒谱系数

    Mel倒谱系数:MFCC Mel频率倒谱系数(Mel Frequency Cepstrum Coefficient)的缩写是MFCC,Mel频率是基于人耳听觉特性提出来的,它与Hz频率成非线性对应关系 ...

  8. Linux 入门记录:十三、Linux 扩展权限

    一.默认权限 每一个终端都有一个 umask 属性,是用来确定新建文件或目录的默认权限的“掩码”(mask 有“掩码”的含义,至于 u,后面说). Linux 中一般有默认的权限掩码,使用命令 uma ...

  9. java===java基础学习(4)---字符串操作

    java中的字符串操作和python中的大致相同,需要熟悉的就是具体操作形式. 关于具体api的使用,详见:java===字符串常用API介绍(转) package testbotoo; public ...

  10. Bookmarks www

    Bookmarks alexis- (Alex Incogito) - Repositories · GitHub GitHub - aetcnc-Arduino_DeltaHMI_RS485 Ope ...