Linux文件及目录的Suid/Guid和T属性
1. 4000---调整用户号2000---调整组号
1000---粘着置位
2. suid/guid程序
当一个程序的用户或组被置位的时候,即4000或2000时,可实现某些特殊的功能一般来说,一个运行中的程序为运行这个程序的用户所拥有,但如果该程序是suid/guid程序,则运行的程序则为文件所有者拥有,运行中的程序在程序运行期间拥有文件所有者的全部权限如果一个普通用户运行了一个属于根用户的带s标志的程序,则该程序不考虑用户权限, 自动拥有在系统中读/写任何文件及目录的特权,对于guid程序也是一样的。
最典型的要数/usr/bin/passwd程序了,-r-s--x--x ,可帮助普通用户更改在系统中的密码, 利用的就是suid的作用。 但也要严格设置这种权限,避免破坏性,
因为如果你的suid程序是/bin/bash的话,则会导致严重后果,一个普通用户若在某个短时间取得过root权限,他就能设置一个suid程序/binb/bash来取得根特权。
(若拿它来破坏别人的系统,后果自负)
# cp /bin/bash /home/jephe/.backdoor
# chmod 4755 /home/jephe/.backdoor
这样当攻击者执行了/home/jephe/.backdoor后就得到了根特权,可用id命令显示suid=0
因此一个管理员应定期运行检查程序检查系统内有无异常的suid/guid程序:象下面这样的命令
#find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \; >suid-sguid-results
把上面的命令放入cron job并邮递文件suid-guid-resuilts给管理员邮箱帐号.
3. 程序的t属性
粘着位 告诉系统在程序完成后在内存中保存一份运行程序的备份,如该程序常用,可为系统节省点时间,不用每次从磁盘加载到内存
4.目录的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。
5. 目录的T属性
设置了目录的T属性后1000,由只有该目录的所有者及root才能删除该目录,如/tmp目录就是drwxrwxrwt
6. 文件及目录的三种时间位
每个Linux文件有三种保存着的时间日期标志。
文件建立时间 (实际上是文件I节点建立时间)
文件最后访问时间
文件最后修改时间
默认ls -l时显示的是文件最后修改时间,也可用ls -l --time=atime(文件最后访问时间)ls -l --time=ctime(文件建立时间)
可用touch命令改变时间日期标志,从而可隐蔽攻击者对文件放置特洛伊木马后对文件时间的修改
7。可用chattr改变文件及目录的属性。
有时你会发现对某个文件即使是root用户也不能修改或添加新内容,那很可能是该文件被用chattr命令设置成不可更改或附加新内容了。你必须先用chattr去掉这些属性再更改内容。