1) 查看文件/目录的权限和归属
在Linux中文件和目录的访问权限一般有三种:读取、写入和可执行。其中,读取权限就是允许查看文件内容、显示目录列表,写入权限是允许修改文件内容,允许在目录中新建、移动、删除文件或子目录,而可执行权限允许运行程序、切换目录。
而归属是指拥有该文件或目录的用户帐号的属主以及拥有该文件或目录的组帐号的属组。
例:
[root@localhost ~]# ls -l install.log
-rw-r--r-- 1 root root 34298 04-02 00:23 install.log
在上述例子中,“-rw-r--r--”部分的第一个字符表示文件类型,可以是d(目录)、b(块设备文件)、c(字符设备文件),减号“-”(普通文件)、字母“l”(链接文件)等,其余部分指定了文件的访问权限。在表示属主、属组内用户或其他用户对该文件的访问权限时,主要使用了四种不同的权限字符: r(可读)、w(可写)、x(可执行)以及-(无权限)。r、w、x、- 权限字符还可分别表示为8进制数字4、2、1、0。
2) 设置文件/目录的权限
chmod命令
格式1:chmod [ugoa] [+-=] [rwx] 文件或目录
其中:u、g、o、a 分别表示,属主、属组、其他用户、所有用户;
+、-、= 分别表示,增加、去除、设置权限;
rwx表示对应的权限字符
格式2:chmod nnn 文件或目录...
“nnn”为需要设置的具体权限值,如“755”、“644”等
常用命令选项
-R:递归修改指定目录下所有文件、子目录的权限
例:
重新设置mymkdir文件的权限,为属主用户添加执行权限,去除其他用户的读取权限。
[root@localhost ~]# chmod u+x,o-r mymkdir
[root@localhost ~]# ls -l mymkdir
-rwxr----- 1 root root 29588 05-12 06:19 mymkdir
重新设置mymkdir文件的访问权限,恢复为“rwxr-xr-x”
[root@localhost ~]# chmod 755 mymkdir
[root@localhost ~]# ls -l mymkdir
-rwxr-xr-x 1 root root 29588 05-12 06:19 mymkdir
使用递归的方式将“/usr/src/”目录中所有子目录、文件的权限都设置为“rw-r--r--”
[root@localhost ~]# chmod -R 644 /usr/src/
3) 设置文件/目录的归属
chown命令
格式:chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
常用命令选项
-R:递归修改指定目录下所有文件、子目录的归属
需要设置文件或者目录的归属时,也可以通过chgrp命令进行。chown命令既可以修改属主,也可以修改属组,而chgrp命令只用于修改属组信息(因此并不常用)。
4) 使用附加权限
SET位权限
主要用途:
为可执行(有 x 权限的)文件设置,权限字符为“s”
其他用户执行该文件时,将拥有属主或属组用户的权限
SET位权限类型:
SUID:表示对属主用户增加SET位权限
SGID:表示对属组内的用户增加SET位权限
例:
[root@localhost ~]# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 19876 2006-07-17 /usr/bin/passwd
普通用户没有修改/etc/shadow文件的权限而又可以在登陆后修改自己的密码,其原因在于passwd命令程序被设置了SUID权限,普通用户在执行该命令时临时获得相当于属主用户(root)的权限。
不要轻易为可执行文件设置SET位权限,特别是对于那些属主、属组是root的执行程序,使用SET位权限时更应该慎重。例如,若为vim编辑器程序设置SUID权限,将导致普通用户也可以使用vim编辑器修改系统中的任何配置文件。
粘滞位权限(Sticky)
主要用途:
为公共目录(例如,权限为777的)设置,权限字符为“t”
用户不能删除该目录中其他用户的文件
例:
[root@localhost ~]# ls -ld /tmp /var/tmp
drwxrwxrwt 8 root root 4096 09-09 15:07 /tmp
drwxrwxrwt 2 root root 4096 09-09 07:00 /var/tmp
由于系统及服务程序运行的需要, Linux提供了/tmp、/var/tmp等临时目录,允许任意用户、程序写入数据。然而试想一下,若任意一个普通用户都能够删除系统服务运行中使用的临时文件,将造成什么后果?设置粘滞位以后,正好可以保持一种动态的平衡:允许各用户在目录中任意写入、删除数据,但是禁止随意删除其他用户的数据。
设置SET位、粘滞位权限
使用权限字符
chmod ug±s 可执行文件...
chmod o±t 目录名...
使用权限数字:
chmod mnnn 可执行文件...
m为4时,对应SUID,2对应SGID,1对应粘滞位,可叠加
SET位标记字符为“s”,若使用8进制数字形式,则SUID对应为“4”、SGID对应为“2”。在权限模式中可采用“nnnn”的形式时,如“4755”表示设置SUID权限、“6755”表示同时设置SUID、SGID权限。
为普通文件(无执行权限的)设置SET位权限从语法上虽然也可行,但没有实际意义(标记字符将变为大写字母“S”),为普通文件或者用户本没有写入权限的目录设置粘滞位语法上也是可行的,但没有实际意义(标记字符将变为大写字母“T”)。