SUID权限、SGID权限、SBIT权限都是极不安全的权限。去设置那些权限!一、设置UID权限(SUID权限)1、设置UID权限的限制和作用只有可执行的二进制程序才能设置SUID权限(对普通shell脚本无效)。命令执行者拥有程序执行命令的execute(x)权限用户在执行程序时获得程序文件所有者的身份(程序执行过程中灵魂拥有文件所有者)。SUID权限只在程序执行期间有效。2.SetUID权限的设置方法chmod4755文件名chmod+x,u+s文件名TIPS原来的umask值是0022,第一位是指特殊权限位,设置权限的时候经常输入755644,此时省略特殊权限。在文件的普通权限前加4代表SUID权限。当文件有设置UID权限时,文件属主对应的权限会变为rws。设置SetUID权限,owner必须有文件的execute(x)权限,否则文件owner对应的权限会变成rwS,属于无效权限。例子[root/tmp/suid]#touch4755.sh[root/tmp/suid]#touchu+s.sh[root/tmp/suid]#ll总消耗4.0K-rw-r--r--1rootroot0Jun809:224755.sh-rw-r--r--1rootroot0Jun809:22u+s.sh[root/tmp/suid]#chmod47554755.sh[root/tmp/suid]#chmod+x,u+su+s.sh[root/tmp/suid]#lltotalusage4.0K-rwsr-xr-x1rootroot0June809:224755.sh*-rwsr-xr-x1rootroot0六月8日09:22u+s.sh*3。取消设置UID权限的方法chmod0755filenamechmodu-sfilenameexample[root/tmp/suid]#llTotalusage4.0K-rwsr-xr-x1rootroot0Jun809:224755.sh*-rwsr-xr-x1rootroot0Jun809:22u+s.sh*[root/tmp/suid]#chmod07554755.sh[root/tmp/suid]#chmodu-su+s.sh[root/tmp/suid]#lltotalusage4.0K-rwxr-xr-x1rootroot0June809:224755.sh*-rwxr-xr-x1rootroot0June809:22u+s.sh*4.SUID权限的系统命令passwd实际上修改的是/etc/shadow文件,该文件的权限为000,理论上只有root用户才有权限修改这个文件。[root/tmp/suid]#ll/etc/shadow------------1rootroot829June802:21/etc/shadowpasswd具有SUID权限,普通用户执行passwd命令时,其身份自动切换到root,普通用户可以自行修改密码。[root/tmp/suid]#ll/usr/bin/passwd-rwsr-xr-x。1rootroot28KJune102014/usr/bin/passwd*其他有SUID权限的常用命令(文件)find/-perm-4000/usr/bin/mount/usr/bin/su/usr/bin/chsh/usr/bin/chage/usr/bin/gpasswd/usr/bin/newgrp/usr/bin/chfn/usr/bin/umount/usr/bin/pkexec/usr/bin/crontab/usr/bin/sudo/usr/bin/passwd/usr/sbin/pam_timestamp_check/usr/sbin/unix_chkpwd/usr/sbin/usernetctl/usr/sbin/mount.nfs5。危险的SetUIDkey目录要严格控制写权限。如/、/usr等。列出系统中默认应该有SetUID权限的文件,并定期检查其他文件是否有SetUID权限。查看所有具有SUID或SGID权限的文件find/-perm-4000-o-perm-2000用于检查SUID和SGID权限的脚本#!/bin/bashfind/-perm-4000-o-perm-2000>/tmp/setuid。检查我在$(cat/tmp/setuid.check)dogrep$i/home/suid.log>/dev/nullif["$?"!="0"]thenecho"$iisn'tinlistfile!">>/home/suid_log_$(date+%F)fidonerm-rf/tmp/setuid.check2.设置GID权限(SGID权限)1、SetGIDforfiles的功能只能由可执行的二进制程序设置SetSGIDpermission命令执行者必须有程序的执行(x)权限。当命令执行器执行程序时,组标识升级为属于程序文件的组。SetGID权限仅在程序执行过程中有效。2、为目录设置GID作用普通用户必须对该目录有r、x权限才能进入该目录。该目录下普通用户的有效组将成为该目录的所属组。如果普通用户对这个目录有w权限,新建文件的默认组就是这个目录的组。3、SetSetGIDchmod2755文件名chmod+x,g+s文件名TIPS在文件普通权限前加2,表示SGID权限。当文件有SGID权限时,文件所属组对应的权限会变为rws。设置SGID权限,其所属组必须有该文件的execute(x)权限,否则文件所属组对应的权限会变成rwS,为无效权限。在实例中创建一个新的文件文件。如果没有execute(x)权限,直接设置SGID权限,组权限会变成r-S,这个权限是没有的。[root/tmp/sgid]#touchfile[root/tmp/sgid]#chmodg+sfile[root/tmp/sgid]#lltotalusage0-rw-r-Sr--1rootroot0June810:44file给file增加执行权限,改成普通SUID权限[root/tmp/sgid]#chmod+xfile[root/tmp/sgid]#lltotalusage0-rwxr-sr-x1rootroot0June810:44file*新建目录dir,修改权限为settings为2777(为了让普通用户可以在该目录下创建文件)[root/tmp/sgid]#chmod2777dir/[root/tmp/sgid]#lltotalusage0drwxrwsrwx2rootroot6June810:48dir/切换到普通用户vagrant,在dir目录下创建一个文件,可以看出该文件所属的组为root(该组为whichdirbelongs)[vagrant/tmp/sgid/dir]$touchfile[vagrant/tmp/sgid/dir]$lltotalUsage0-rw-rw-r--1vagrantroot0Jun810:52file4.CancelSetGIDchmod0755filename(doesn'tseemtoworkwellforfolders)chmodg-sfilenameExamplechmod0755filenameisvalidforfiles,Butitdoesn'tseemtoworkforfolders[root/tmp/sgid]#ll总使用量0drwxrwsrwx2rootroot6Jun810:48dir/-rwxr-sr-x1rootroot0Jun810:44file*[root/tmp/sgid]#chmod0755dir/[root/tmp/sgid]#chmod0755file[root/tmp/sgid]#lltotalusage0drwxr-sr-x2rootroot17June810:52dir/-rwxr-xr-x1rootroot0june810:44file*chmodg-sfilename对文件和文件夹都有效[root/tmp/sgid]#lltotalusage0drwxrwsrwx2rootroot6Jun810:57dir/-rwxr-sr-x1rootroot0June810:44file*[root/tmp/sgid]#chmodg-sdir/[root/tmp/sgid]#chmodg-sfile[root/tmp/sgid]#lltotalusage0drwxrwxrwx2rootroot6June810:57dir/-rwxr-xr-x1rootroot06月8日10:44文件*5。应用SUID权限的系统命令locate。locate命令实际查询的是/var/lib/mlocate/mlocate.db文件,该文件的权限为640,理论上普通用户是没有权限查看该文件的。[root/tmp/sgid]#ll/var/lib/mlocate/mlocate.db-rw-r-----1rootslocate2.4MJun803:20/var/lib/mlocate/mlocate.dblocate拥有SGID权限,普通用户执行locate命令时,组标识自动切换为slocate,slocate组对/var/lib/mlocate/mlocate.db文件有读权限,所以普通用户可以使用locate命令查找对于文件。[vagrant/tmp/sgid/dir]$ll/usr/bin/locate-rwx--s--x1rootslocate40KApril1103:46/usr/bin/locate*其他具有SGID权限的常用命令(文件)find/-perm-2000/usr/bin/wall/usr/bin/lockfile/usr/bin/write/usr/bin/ssh-agent/usr/bin/locate/usr/sbin/netreport/usr/sbin/sendmail.sendmail/usr/libexec/utempter/utempter/usr/libexec/openssh/ssh-keysign3.StickyBIT(SBIT权限)1.SBITstickybit功能stickybit目前只对目录有效普通用户拥有该目录w和x权限,即普通用户可以对该目录有写权限。如果没有sticky位,因为普通用户有w权限,可以删除该目录下的所有文件,包括其他用户创建的文件。sticky位是给单个的,除了root可以删除所有文件外,普通用户即使有w权限也只能删除自己创建的文件,不能删除其他用户创建的文件。不建议使用SBIT手动创建目录。2、设置SBITchmod1755目录名chmodo+t目录名TIPS在文件普通权限前加1,代表SBIT权限。当文件有SGID权限时,文件所属组对应的权限会变为rwt。示例创建两个目录dir_1755和dir_o+t,分别授予SBIT权限[root/tmp/sbit]#mkdirdir_1755[root/tmp/sbit]#mkdirdir_o+t[root/tmp/sbit]#[root/tmp/sbit]#[root/tmp/sbit]#chmod1755dir_1755/[root/tmp/sbit]#chmodo+tdir_o+t/[root/tmp/sbit]#lltotalusage0drwxr-xr-t2rootroot6月8日11:34dir_1755/drwxr-xr-t2根根6月8日11:34dir_o+t/3。取消SBITchmod0755目录名chmodo-t目录名实例[root/tmp/sbit]#lltotalDosage0drwxr-xr-t2rootroot6Jun811:34dir_1755/drwxr-xr-t2rootroot6Jun811:34dir_o+t/[root/tmp/sbit]#chmod0755dir_1755/[root/tmp/sbit]#chmodo-tdir_o+t/[root/tmp/sbit]#ll总使用量0drwxr-xr-x2rootroot6月8日11:34dir_1755/drwxr-xr-x2root6月8日11:34dir_o+t/4。应用SBIT权限的系统目录/tmp目录其实有777权限。一般情况下,任何用户都可以删除/tmp目录下的文件[root/tmp/sbit]#ll-d/tmpdrwxrwxrwt.12rootroot4.0KJune811:33/tmp/但是普通用户不能删除别人创建的文件[vagrant/tmp]$ll/tmp/test.md-rw-r--r--1rootroot215May3104:24/tmp/test.md[vagrant/tmp]$rmtest.mdrm:是否删除写保护普通文件“test.md”?yesrm:Unabletodelete"test.md":Operationnotallowed4.chattr权限1.chattr命令chattr[+-=][选项][文件或目录][+-=]+:添加权限-:删除权限=:设置权限选项i:(insert)插入文件:不能删除和重命名文件,不能添加和修改文件数据directory:不能创建和删除文件,可以修改目录中的文件数据a:(append)appendfiles:不能删除和修改数据,只能以echo'string'>file的形式向文件追加数据。目录:只允许在目录中添加和修改文件,不允许删除文件导出目录本身的属性,不导出子文件的属性。3、i选项不能用于删除和重命名文件,也不能为实例文件添加或修改文件数据。创建文件file_i,随机写入一些内容[root/tmp/chattr]$touchfile_i[root/tmp/chattr]$date>file_i[root/tmp/chattr]$catfile_i2018-06-08Friday12:04:57UTCchattr+ifile_i[root/tmp/chattr]#chattr+ifile_i[root/tmp/chattr]#lsattrfile_i----i--------file_i无法删除[root/tmp/chattr]#rmfile_irm:无法删除"file_i":不允许操作无法重命名[root/tmp/chattr]#mvfile_ifilemv:无法将"file_i"移动到"file":不允许操作无法添加数据[root/tmp/chattr]#date>>file_ibash:file_i:Insufficientpermissionscannotmodifydata[root/tmp/chattr]#date>file_ibash:file_i:Insufficientdirectoryapplicationi选项无法创建和删除文件,可以修改目录创建directorydir_i存放文件数据,并创建文件file[root/tmp/chattr]#mkdirdir_i[root/tmp/chattr]#touchdir_i/file[root/tmp/chattr]#lldir_i/totalusage0-rw-r--r--1rootroot0Jun812:13filechattr+ifile_i[root/tmp/chattr]#chattr+idir_i/[root/tmp/chattr]#lsattr-ddir_i/----i----------dir_i/无法创建文件[root/tmp/chattr]#touchdir_i/file2touch:无法创建“dir_i/file2”:权限不足,无法删除文件[root/tmp/chattr]#rmdir_i/filerm:Unabletodelete"dir_i/file":权限不足,无法修改目录下的文件数据[root/tmp/chattr]#date>dir_i/file[root/tmp/chattr]#catdir_i/fileFriJun0812:17:16UTC2018
