Linux特殊权限

Posted by Codeboy on May 12, 2016

Linux下常用的权限的有读、写和执行,也即常说的rwx,但是除了rwx权限外,Linux系统还有着一些特殊权限,他们是setUID、setGID和setBIT,同时还有一个chattr命令来修改文件的隐藏属性,具体介绍如下:

setUID


###功能

文件执行中将以属主(owner)身份运行

###使用前提

操作文件必须具有可执行权限

###命令操作

chmod 4xxx exec_file
chmod u+s exec_file

###检查文件

find / -perm -4000

setGID


###功能

  • 操作对象是文件时,文件执行中将以组(group)身份运行
  • 操作对象是目录时,在此目录中创建的文件或目录将继承上级目录的group组,即与父目录组是相同的

###使用前提

  • 操作的文件必须具有可执行权限
  • 操作的目录时需要具有相应的权限

###命令操作

chmod 2xxx exec_file/dir
chmod g+s exec_file/dir

###检查文件

find / -perm -2000

setBIT(Sticky Bit, 粘着位)


###功能

如果目录被设置了setBIT,那么该目录下的文件,除文件创建者和root可以进行更改和删除操作外,其他用户不能进行更改删除操作

###使用前提

  • 操作对象为目录
  • 用户需要对该目录具有写(w)和执行(x)权限

###命令操作

chmod 1xxx dir
chmod o+t dir

###检查文件

find / -perm -1000

chattr


###功能

修改文件的隐藏属性,有很多的操作,常见的有a和i操作,a是让文件或目录仅供附加用途,i是不得任意更动文件或目录。

###命令操作

chattr +a file/dir
chattr +i file/dir

###查看

lsattr file/dir

小结


特征 setUID setGID setBIT chattr
操作对象 文件 文件/目录 目录 文件/目录
使用场景 以属组身份运行(例如passwd) 以组身份运行文件,目录权限继承 防止其他用户更改删除文件 限制文件(目录)修改方式,例如只能追加

Linux特殊权限的设置需要非常的谨慎,错误的设置可能造成信息的泄露等。例如将vim设置为setUID后,那么普通用户就可以以root身份修改任何文件了。

如有任何知识产权、版权问题或理论错误,还请指正。

转载请注明原作者及以上信息。