有关linux文件及目录的suid/guid和t属性,供大家学习参考。
一、
4000---调整用户号
2000---调整组号
1000---粘着置位
二、suid/guid程序
当一个程序的用户或组被置位的时候,即4000或2000时,可实现某些特殊的功能一般来说,一个运行中的程序为运行这个程序的用户所拥有,但如果该程序是suid/guid程序,则运行的程序则为文件所有者拥有,运行中的程序在程序运行期间拥有文件所有者的全部权限。如果一个普通用户运行了一个属于根用户的带s标志的程序,则该程序不考虑用户权限,自动拥有在系统中读/写任何文件及目录的特权,对于guid程序也是一样的。
最典型的要数/usr/bin/passwd程序了,-r-s--x--x ,可帮助普通用户更改在系统中的密码,利用的就是suid的作用。 但也要严格设置这种权限,避免破坏性。
因为如果你的suid程序是/bin/bash的话,则会导致严重后果,一个普通用户若在某个短时间取得过root权限,他就能设置一个suid程序/binb/bash来取得根特权。
(若拿它来破坏别人的系统,后果自负)
这样当攻击者执行了/home/jephe/.backdoor后就得到了根特权,可用id命令显示suid=0
因此一个管理员应定期运行检查程序检查系统内有无异常的suid/guid程序:象下面这样的命令
把上面的命令放入cron job并邮递文件suid-guid-resuilts给管理员邮箱帐号.
三、程序的t属性
粘着位 告诉系统在程序完成后在内存中保存一份运行程序的备份,如该程序常用,可为系统节省点时间,不用每次从磁盘加载到内存。
四、目录的s属性
目录的S属性使得在该目录下创建的任何文件及目录属于该目录所拥有的组。
例如在apache中为个人设置WEB目录的时候,如果给apache分配的组名为httpd.
则:
#chown -R jephe.httpd ~jephe/public_html
#chmod -R 2770 ~jephe/public_html
确保在public_html中创建新的文件或子目录时,新创建的文件设置了组ID。
另外如有两个用户a和b都属于组c,则希望在某目录下a创建的文件也能被b修改,则可设置该目录chmod +s属性,同时设置a和b的默认umask为770。
五、目录的T属性
设置了目录的T属性后1000,由只有该目录的所有者及root才能删除该目录,如/tmp目录就是drwxrwxrwt
六、文件及目录的三种时间位
每个Linux文件有三种保存着的时间日期标志。
文件建立时间 (实际上是文件I节点建立时间)
文件最后访问时间
文件最后修改时间
默认ls -l时显示的是文件最后修改时间,也可用ls -l --time=atime(文件最后访问时间)
ls -l --time=ctime(文件建立时间)
可用touch命令改变时间日期标志,从而可隐蔽攻击者对文件放置特洛伊木马后对文件时间的修改
七、可用chattr改变文件及目录的属性
有时你会发现对某个文件即使是root用户也不能修改或添加新内容,那很可能是该文件被用chattr命令设置成不可更改或附加新内容了。你必须先用chattr去掉这些属性再更改内容。