繁体   English   中英

任何用户都可以使用setuid()/ setgid更改uid / gid吗?

[英]can any user change uid/gid using setuid()/setgid?

还是只有root可以? 我想通过调用setuid / setgid从.sh脚本更改非根目录的uid / gid。 可能吗?

默认情况下,只有root可以使用setuid / setgid。 也许与selinux或类似的东西。

Bourne shell sh(1)没有可用的setuid或setgid命令。 实际上, setuid(2)和setgid()是系统调用,仅在诸如C或Perl的编程语言(以及除Shell脚本之外的几乎所有代码)中可用。 即使可用,当以非root用户身份调用时,这些调用的实用程序也会受到限制。 这些调用不会赋予实际用户尚未可用的特权。

还有文件模式setuid( setuid位设置)或setgid(意为setgid位设置)。 但是这些仅用于二进制可执行文件,而不是(通常)用于sh脚本*。

对于普通用户而言,即使不通过脚本也可以以其他用户身份运行命令而无需重新输入密码,请使用sudo(8)命令。 Sudo需要系统管理员进行配置。

还有其他方式可以充当不同的用户。 但是所有这些都涉及调用已由超级用户(有设置setuid位 )祝福的外部可执行文件,或由其他用户的进程执行任务。

也可以看看
sudo(8) sudo命令
setuid(2) setuid系统调用

setuid位访问模式
* Shell脚本上的Setuid
如何使setuid shell脚本起作用?

相关命令
sh(1)sg(1)su(1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM