linux对文件的权限管理简直是让人叹为观止,又回顾了一下SUID, SGID和SBIT的作用,总结一下。
其实SUID和SGID的作用跟sudo是相似的。当用户一个想执行一个原本属于用户B的可执行文件时,若B的文件设置了SUID位,则一个在执行时是以用户B的身份来执行。
SUID是集UID的简称,翻译过来是设置用户ID、感觉很别扭,还是觉得SUID最为简炼。它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。例如,使用如下命令:
ls - l/usr/bin/passwd
我们会得到如下的结果:
-rwsr-xr-x 1根根42824年9月13日,2012年/usr/bin/passwd
引用>可以看的到,在文件拥有者的执行位上出现为年代而不是x,所以说passwd这个程序是具有SUID权限的。我们直到在修改用户密码的时候,用的就是passwd这个命令,而我们又知道在linux下面,用户密码是存储在/etc/影子这个文件里面的。首先查看一下/etc/影子这个文件的权限:
ls - l/etc/shadow返回的结果如下:
-rw-r - - - - - - 1根影子1138年12月13日20:00/etc/shadow
引用>由上面的结果,我们知道只有根可以往阴影文件中写入数据,其他用户连查看的权限都没有。那我们平时是怎么修改密码呢?没错,就是和SUID有关。当我们使用passwd命令时,就获得了passwd的所有者即根的权限,进而可以对影子文件进行写入操作。
1。SUID只对二进制文件有效
2。调用者对该文件有执行权
3。在执行过程中,调用者会暂时获得该文件的所有者权限
4。该权限只在程序执行的过程中有效
ls ld/tmp
可以得到以下结果:
drwxrwxrwt 12根根12288年12月17日你们/tmp
引用>可以看到最后一位为t,这说明/tmp文件就是这种文件。
那么,如何设置上面所说的三种权限呢?首先来介绍一点预备的知识,用数字来表示权限:
4表示SUID
引用>
2表示SGID
1)表示SBIT如果两个或三个权限同时存在时,就将者写权限的值相加就是需要的结果了。利于SUID和SGID同时存在,则为6。下面可以看一下修改的例子:
chmod 4777测试使测试文件具有SUID权限,你可能已经看明白了,就是在普通文件权限前面再加上这些特殊权限值就可以了。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
linux中SUID, SGID与SBIT的奇妙用途详解