在linux中一切都是文件,但是每个文件的类型不尽相同,linux系统使用不同的字符来加以区分,常见的字符如下:
字符 | 含义 |
---|---|
- | 普通文件 |
d | 目录文件 |
l | 链接文件 |
b | 块设备文件 |
c | 字符设备文件 |
p | 管道文件 |
每个文件都有所有者和所有组,并且有各自的权限,读(r)写(w)执行(x),对于文件和目录rwx含义是不用的
示例如下:
lrwxrwxrwx. 1 root root 7 Feb 7 19:53 bin -> usr/bin
dr-xr-xr-x. 3 root root 4096 Feb 7 12:08 boot
SUID
SUID是一种对二进制程序进行设置的特殊权限,可以上二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
命令是chmod u+s 文件名
,将所有者的权限由rwx变成rws,其中x变成s表示拥有了SUID权限,如果原本所有者的权限是rw-就会变成rwS,其中-会变成大写的S
例如passwd命令:
[root@localhost /]# ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 30 2014 /bin/passwd
SGID
SGID主要实现两种功能:
chmod g+s 文件名
,将所有组的权限由rwx变成rws,其中x变成s表示拥有了SGID权限,如果原本所有组的权限是rw-就会变成rwS,其中-会变成大写的S[root@localhost /]# chmod 777 /test
[root@localhost /]# ls -l /test
drwxrwxrwx. 2 test test 6 Feb 7 20:36 test
[root@localhost /]# su -l developer -c "touch /test/a.txt"
[root@localhost /]# chmod g+s /test
[root@localhost /]# ls -l /test
drwxrwsrwx. 2 test test 6 Feb 7 20:36 test
[root@localhost /]# su -l developer -c "touch /test/b.txt"
[root@localhost /]# ls -l test/
-rw-r--r--. 1 developer developer 0 Feb 7 20:37 a.txt
-rw-r--r--. 1 developer test 0 Feb 7 20:37 b.txt
SBIT
对一个目录设置了SBIT权限后,改目录中的文件只能被其所有者执行删除操作,其他用户没有删除权限。
命令是 chmod o+t 目录名
,文件的其他人权限部分的x执行权限会被替换成t或者T,原本有x执行权限则会写成r,原本没有x执行权限则会被写成T。
例如系统中的/tmp目录,所有用户都可以在/tmp目录下创建文件,但是不能删除其他用户创建的文件。
原文:https://blog.51cto.com/12227788/2469694