小知识:Linux 之 chmod 命令

%小知识:Linux 之 chmod 命令-猿站网-插图

 文件权限设置命令 chmod

文件权限指的是文件是否可以执行、写入、读取等操作。

而Linux/Unix的文件存取权限分为三级 : 文件所有者、用户组及其他,分别使用以下字母来表示:

 u:所有者  g:用户组  o:其他用户

如下图所示,每个级别都可以设置为rwx三种权限 。

%小知识:Linux 之 chmod 命令-1猿站网-插图

改命令官方的解释为:

change mode

所以可以通过chmod来控制文件如何被他人所存取。

使用的语法如下所示:

$ chmod [-cfvR] [–help] [–version] mode file… 

其中mode权限设定的格式如下 : [ugoa] [+-=] [rwxX]

其中u表示该文件的拥有者,g表示与该文件的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是。

 + 表示加权限、– 表示减权限、= 表示设定唯一权限。  r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。  -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

对于chmod的使用而言,只有文件所有者和超级用户可以修改文件或目录的权限。

具体的方法为可以使用符号模式或者绝对模式来进行操作。

而我比较喜欢用的是绝对数字模式,比较粗暴简单。

符号模式

使用符号模式需要考虑多个因素,其中包括用户类型,操作符 和设定权限。

who 用户类型 说明 u user 文件所有者 g group 文件所有者所在组 o others 所有其他用户 a all 所用用户, 相当于 ugo

operator 的符号模式表:

Operator 说明 + 为指定的用户类型增加权限去除指定用户类型的权限 = 设置指定用户权限的设置,即将用户类型的所有权限重新设置

permission 的符号模式表:

模式 名字 说明 r 设置为可读权限 w 设置为可写权限 x 执行权限 设置为可执行权限

绝对数字模式

chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者的读、写、执行权限,用户组的读、写、执行以及其它用户的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。比如下面的0-7分别表示各自的权限定义。

No 权限 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

如表所示:

 对于7而言就表示所有者的权限为可读、可写、可执行,也就是对应的八进制为111,所以就是7;  而对于 5而言,表示所有者的权限为可读、可执行,对应的八进制为101,所以就是5;

其他类似。

实例更改为全部可读

接下来将文件 a.c 设为所有人皆可读取 ,有三种方式可以使用,如下,分别为 :

 chmod ugo+r filename  chmod a+r filename  chmod 444 filename

具体如下所示:

通过方法1:

# 默认设定为没有任何属性  $ ll  ———-  1 user  user     5KB  Feb  12 22:22 a.c  # 更改为全部可读  $ chmod ugo+r file1.txt  $ ll  -r–r–r–  1 user  user     5KB  Feb  12 22:22 a.c 

通过方法2:

# 默认设定为没有任何属性  $ ll  ———-  1 user  user     5KB  Feb  12 22:23 a.c  # 更改为全部可读  $ chmod a+r file1.txt  $ ll  -r–r–r–  1 user  user     5KB  Feb  12 22:23 a.c 

通过方法3:

# 默认设定为没有任何属性  $ ll  ———-  1 user  user     5KB  Feb  12 22:23 a.c  # 更改为全部可读  $ chmod 444 file1.txt  $ ll  -r–r–r–  1 user  user     5KB  Feb  12 22:24 a.c  

 设置用户及组可读写,其他用户无法写入但可以查看

接下来继续把文件 a.c设置为用户 和组可以读写,而其他 用户无法写入但是 可以查看 。

使用符号模式如下:

$ ll  -r–r–r–  1 user  user     5KB  Feb  12 22:24 a.c  $ chmod ug+rw,o+r,o-w a.c  $ ll  -rw-rw-r–  1 user  user     5KB  Feb  12 22:26 a.c 

使用数字模式如下:

$ ll  -r–r–r–  1 user  user     5KB  Feb  12 22:24 b.c  $ chmod 664 a.c  $ ll  -rw-rw-r–  1 user  user     5KB  Feb  12 22:26 b.c 

设定为所有人只有可执行权限

此时不管文件的权限是什么,因为只具有可执行权限,所以符号模式可以使用=,而数字模式只需要1即可,如下:

$ chmod a=x filename  #或者  $ chmod 111 filename  # 无法读取  $ cat a.c  cat: a.c: Permission denied 

所以对于只有可执行权限的文件,是无法执行读取或者写入操作的,这也保证了文件的安全性。

原文链接:https://mp.weixin.qq.com/s/MhKJxzB-OKnBxhTcKV_3sA

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Linux内核中Container_Of宏的详细解释

2023-4-26 6:23:47

建站知识

小知识:10+张图来探究Linux内核,以及如何高效学习

2023-4-26 6:40:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索