对于linux下文件权限的s位和t位的理解

 

作用:创建st权限,是为了让一般用户在执行某些程序时,能够暂时拥有改程序拥有者的权限。

 

SUIDSet User  Id

SGIDSet Group Id

 

ls -l查看文件格式一共有10

9 8 7 6 5 4 3 2 1 0

- r w x r - x r - x

10位中8-6位是文件所有者权限

5-3位是同组用户权限

2-0位其他用户权限

形式为rwx

r表示可读,可以读出文件的内容

w表示可写,可以修改文件的内容

x表示可执行,可运行文件

 

9位表示文件类型:

   p表示命名管道文件

   d表示目录文件

  l表示符号链接文件

  -表示普通文件

  s表示socket文件

  c表示字符设备文件

  b表示块设备文件

 

其实在unix下,文件权限用12个二进制位表示

11 10 9 8 7 6 5 43 2 1 0

 S G T r w x r w x r w x


11位为SUID

10位为SGID

9位为sticky

 

给文件加SUIDSGID的方法:

1. 使用命令:

chmod  u+s  filename 设置SUID

chmod  u-s  filename去掉SUID

chmod  g+s  filename 设置SGID

chmod  g-s  filename 去掉SGID

2.使用数字表示:

  4SUID

  2SGID

  1Sticky bit


# ll

-rw-r--r-- 1 root root 37 Aug 21 04:17 test1

 

# chmod  4755  test1

# ll  test1

-rwsr-xr-x 1 root root 37 Aug 21 04:17 test1

 

# chmod  6755  test1

# ll  test1

-rwsr-sr-x 1 root root 37 Aug 21 04:17 test1

 

# chmod  7666  test1

# ll  test1

-rwSrwSrwT 1 root root 37 Aug 21 04:17 test1

 

为什么给test文件赋予权限为7666之后,st变成大写的呢?

因为7666表示usergroup以及others都没有执行权限,所以ST表示空的

SUID 是表示该文件在执行时,具有文件拥有者的权限,然而,连拥有者都没有执行的权限时,其他人就更没有执行权限了。