使用chmod改变文件和文件夹权限
扫码查看 原文链接 : https://blog.lmlphp.com/tutorial/1/SHELL/item/20/Use_chmod_to_change_file_and_folder_permissions 来自 : LMLPHP后院
chmod 命令用来改变文件或目录的权限。
使用八进制权限码来改变文件权限(读,写,执行的权限值分别为 4, 2, 1),数字分别对应自己,同组用户,其他用户,示例:
$ chmod 760 lmlphp.txt
使用语义符号模式来改变文件权限,如下示例:
$ chmod g+x lmlphp.txt
说明如下:
- 第一个字符有 u,g,o,a,分别代表自己,同组用户,其他用户,所有用户。
- 第二个字符有 +,-,=,这个很容易理解。
- 第三组字符比较多,除了 r,w,x,代表读,写,执行(对而言目录就是访问)之外,还有 X,s,t,u,g,o,但这些个人认为,除了 s ,t(粘着位)之外其他用处不大,后面会讲到。
关于 Linux 文件系统权限的另外三个要点,SUID,SGID,SBIT(粘着位)。
关于 SUID,最经典的例子就是 /usr/bin/passwd 这个文件。
$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 42824 Sep 13 2016 /usr/bin/passwd
当权限位出现 s 时,代表这个文件有 SUID 权限。如果此时三个权限字符都是小写,表示还拥有 x 权限,否则会全部显示成大写字符。
拥有 SUID 权限的文件在执行时会暂时的获得文件的所有者权限,在上面的例子中也就是 root 权限,这个也就是为什么所有的用户都可以修改自己的密码的原因。用户修改的密码会加密后写入 /etc/shadow 文件中,此文件其他用户是没有任何权限的。设置 SUID 如下示例:
$ sudo chmod u+s filename
SGID 同 SUID 比较相似,但针对的是目录权限。如果一个目录有设置 SGID 权限,则所有在该目录下有写入权限的用户在该目录下创建文件时,会临时性的获得目录所属组的权限,这样写入的文件都属于目录的所属组。设置 SGID 如下示例:
$ sudo chmod g+s folder_name
SBIT 即粘着位,一般用来对目录设置权限。当一个目录被设置拥有 SBIT 权限时,用户在该目录下创建的文件只有自己和 root 权限用户可以删除,其他用户是不可以删除的。
关于 SUID,SGID,SBIT 的设置,使用数字的方式来设置更加简单。数字和权限的对应关系如下:
- 4 表示 SUID
- 2 表示 SGID
- 1 表示 SBIT
设置权限时,将这些权限位放在三个数字之前,如下示例:
$ sudo chmod 1777 folder_name
权限是比较难理解的,需要长时间的练习才能融会贯通。