Linux文件权限

Linux文件权限

在Linux终端下输入ls -al,可以看到当前文件夹下文件的详细信息,其通常的形式为:

1
-rwxr--r-- 1 root root 1864 May 4 18:00 initial-setup.cfg

其中前10个字符-rwxr--r--便代表着文件类型与权限。

  • 第1个字符代表文件类型,-为文件,d为目录,l为链接,b表示设备文件中的可随机存取装置(U盘、硬盘等),c表示设备文件中的串行端口设备(鼠标、键盘等一次性读取装置)。

  • 接下来的9个字符,每3个为一组,均为rwx的组合。r表示可读,w表示可写,x表示可执行,如果没有对应的权限,则对应位置为-

之所以会存在3组,是因为在Linux下文件的权限可分为文件拥有者的权限文件所属群组的权限其他人的权限。由于Linux系统是针对多用户设计的,这种分别是为了保证多用户场景下的数据安全。比如文件拥有者是小明,而小明是三年二班这个群组的班长,小明发布了一份公告文件,小明希望这份文件他自己可以查看和修改,所有班级成员都可以查看,但是其他班级的人不能够看到,则可以设置这个文件的权限为rw- r-- ---,这样的话,便满足了要求。

文件权限修改

Linux下的文件权限是与使用者、群组相关的,系统提供了三个用来修改文件权限的命令:

  • chgrp:改变文件所属群组;
  • chown:改变文件拥有者;
  • chmod:改变文件的读、写、执行权限。

改变群组chgrp

用法:chgrp [-R] FILE_OR_DIR,其中-R为进行递归变更,常用在变更目录内所有文件权限。

改变拥有者chown

用法与chgrp类似:chown [-R] USER:GROUP FILE_OR_DIR,可以同时修改拥有者和群组,比较方便。

改变权限chmod

权限的使用有两种方法,一种是利用数字类型改变文件权限,一种是利用符号类型改变文件权限。

对于数字类型改变权限,rwx三者对应的数值为421,因此3组权限可以用对应数值累加来计算权限,比如rwxr-xr--便可以用数字表示为754,因此设置权限为:

1
chmod [-R] 754 FILE_OR_DIR

对于符号类型改变权限,3组权限可由ugo分别代表user,group,others三种身份,此外a代表全部身份;而rwx则代表读写权限,因此设置权限为:

1
chmod [-R] [ugoa] [+-=] [rwx] FILE_OR_DIR

例如要设置一个文件权限为-rwxr-xr-x,则可以为chmod u=rwx,go=rx FILE_OR_DIR。此外,若不知道原先文件属性,只想增加每个人均可以写入的权限,则可以为chmod a+w FILE_OR_DIR

注意

  • 对于文件来说,w权限代表可以编辑、新增或修改文件内容,但是不可以修改文件。

  • 对于目录来说,w权限代表可以新建、删除、重命名目录与文件(与该目录下的文件名异动有关);x代表可以进入目录成为工作目录,若目录权限中只有r而没有x,则无法进入该目录。