学习了SUID之后,SGID就容易理解了,它是setgid的缩写。可以对一个可执行二进制文件设置SGID。SGID的作用是:其他账户在执行时具有文件所属组的权限。
例如,在Ubuntu的/usr/bin目录下,执行命令ls-l|grep'^......s',可以看见一些具有SGID属性的可执行文件:
以crontab命令为例(该命令用来设置周期性的指令,这里不展开讨论它),具体解释一下SGID的作用。
任何账户都可以运行crontab命令,/usr/bin/crontab所属组为crontab(组名与命令名相同),任何账户在执行crontab命令时,都临时具有了属于crontab组时所具有的权限。
还可以对一个目录设置SGID,这时,SGID的作用是:任何账户如果可以在该目录内建立新文件或者新的子目录,那么新建的文件或子目录的所属组与该目录的所属组保持一致。下面举例说明。
账户user创建目录/home/user/doc,并在目录中创建新文件a:
现在需要使用另外一个账户,先介绍切换账户的方法。最容易想到的方法是退出Linux,用另外的账户重新登录。若不退出Linux,运行命令su<账户名>或者ssh<账户名>@<计算机名或IP>也可以切换账户。这几种方法当然都需要知道相应的账户密码。例如:
假设现已切换为账户shiqdong,该账户在目录/home/user/doc中创建新文件b:(https://www.xing528.com)
可见文件a的所属组为user,文件b的所属组为shiqdong。下面,账户user将目录/home/user/doc加上SGID属性:
账户shiqdong重新在目录/home/user/doc中创建新文件b:
可见,这时文件a和b的所属组都为user,和doc目录的所属组一致。
给文件或者目录增加SGID属性除了用命令chmodg+s之外,还可以用数值的方法,chmod后面跟四位八进制数,最前面一位为2时,表示设置SGID属性。例如:
与SUID同样道理,设置SGID属性要同时确保目录或者文件对于所属组有执行权限,如果没有,会看见大写的S,例如:
这是不正常的,增加所属组的执行权限,即运行chmodg+xphoto之后,就正常了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
