0%

Linux读写&执行权限笔记

  • Linux下文件的权限类型一般可分为执行,分别对应字母rwx
  • Linux下权限的粒度有拥有者(拥有者所属的)用户组其他用户,每个文件都可以针对三个粒度分别设置不同的权限类型;一般情况下,一个文件仅能归属于一个用户和用户组,若其他用户想获得该文件的权限,可将该用户加入具有权限的用户组,一个用户可同时归属于多个用户组。

更改文件权限(chmod命令)

命令格式

chmod <可选项> <权限设定字串> <文件名>

参数说明

常用的可选项
  • -R:以递归的方式对当前目录下的所有文件与子目录进行相同的权限更改
权限设定字串
<ugoa> <+-=> <rwx>
  • u:该文件的拥有者
  • g:与该文件拥有者同属一个用户组的用户
  • o:其他用户
  • a:所有用户
  • +:授予权限
  • -:撤销权限
  • =:唯一设定权限
  • r:可读取
  • w:可写入
  • x:可执行
备注

对于目录来说,

  • 拥有r权限可查看该目录下的内容(即可以使用ls命令)

  • w权限是最高权限,例如:

    • 在该目录下新建文件或子目录
    • 删除该目录下已有的文件或子目录(无视文件和子目录的权限)
    • 对已有的文件或子目录更名
    • 移动或复制该目录下的文件/子目录
  • 拥有x权限即可进入目录(即可以使用cd命令)

文件名

支持单个或多个的文件名/目录名

举个栗子

向所有用户授予读取文件A.txt的权限

chmod ugo+r A.txt
chmod a+r A.txt

只向文件B.sh的拥有者授予读写以及执行的权限

chmod u+rwx B.sh

只向拥有者以及与拥有者同属一个用户组的用户授予读写文件A.txtB.conf的权限,其他用户可读不可写

chmod a+r,ug+w,o-w A.txt B.conf

向所有用户授予读写当前路径下所有文件和子目录的权限

chmod -R a+rw *

文件权限数字表示

用数字421分别表示文件的执行权限,不同的权限组合也由其他八进制数字表示,例如:

  • 读写和执行权限(rwx)为4+2+1=7

  • 可读写不可执行的权限(rw-)为4+2=6

  • 可读可执行不可写的权限(r-x)为4+1=5

因为每个文件都可针对三个粒度分别授予不同的权限,所以可用3个八进制数分别表示拥有者(拥有者所属的)用户组其他用户的权限。

chmod <ugo> <文件名>

其中,ugo分别为表示拥有者(拥有者所属的)用户组其他用户拥有的权限的八进制数。

举个栗子

授予所有人读写和执行文件x.sh的权限

chmod 777 x.sh

只向拥有者授予可读写文件C.json的权限

chmod 600 C.json

更改文件拥有者(chown命令)

一般只有root用户拥有该操作权限。

chown <可选项> <user>(<:group>) <文件名>
  • 可选项:同chmod
  • user:新的文件拥有者
  • :group:新的文件拥有者所属的用户组

举个栗子

将文件a.txtb.json的拥有者更改为用户组users的用户nimitiz

chown nimitiz:users a.txt b.json

将当前目录下的文件和子目录的所有内容的拥有者更改为用户组users的用户nimitiz

chown -R nimitiz:users *

也可以只更改拥有者:

chown nimitiz c.conf

十位权限表示

十位权限的最高位(第一位)表示的是文件类型:

  • d:表示的是目录
  • -:表示的是文件
  • s:表示的是套接字文件
  • p:表示的是管道文件或有名管道文件
  • l:表示的是符号链接文件
  • b:表示的是面向块的设备文件
  • c:表示的是面向字符的设备文件

十位权限的第二位到第四位对应的粒度是拥有者,第五位到第七位对应的粒度是(拥有者所属的)用户组,第八位到第十位对应的粒度是其他用户

举个栗子

-rw-------

只向拥有者授予读写权限。

-rwxr-xr-x

拥有者授予读写和执行权限,向(拥有者所属的)用户组其他用户只授予读和执行的权限。


参考资料

Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)

Linux chown命令:修改文件和目录的所有者和所属组

Linux chmod命令:修改文件或目录的权限