linux - SUID 在 Bash 中不起作用

标签 linux bash shell suid

我写了一个简单的 bash 脚本来备份主目录,e 把它放到/var/backups 中。 由于该目录是 protected ,所以我以 root 身份编写脚本,然后设置 SUID。

armando@ubuntu:~/scripts/bash $ ll
-rwsr-xr-x 1 root    root    2596 Jul 28 10:43 homebackup.sh*

即便如此,当脚本尝试写入/var/backups 时,我仍收到“权限被拒绝”错误。为什么?

最佳答案

在 Linux 和大多数其他现代 UNIX 系列系统中,setuid 位只能被直接二进制可执行文件识别,而不是脚本。

这是设计使然,也是出于安全原因。您可以通过为您的 setuid 脚本构建编译的包装器或使用现有工具(例如带有配置的 sudo 来避免在以所需用户身份调用特定脚本时需要密码)来解决这个问题。

参见 this comprehensive discussion on UNIX StackExchange .

关于linux - SUID 在 Bash 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25001206/

相关文章:

bash - 在 Bash 中运行 PHP 函数(并将返回值保存在 bash 变量中)

linux - 如何在Shell脚本中多次检查if条件?

docker - 试图在docker sdk入口点内使用$(command)

linux - 如何重命名所有文件而不覆盖?

linux - 在 If 语句中使用 grep 获取所有项目,忽略空格

c - Windows 8.1 上带有 Cygwin 的 ARM GCC : fatal error: no input file

bash - shell脚本输出最大

c# - 检索可执行信息

c - 如何解码Linux中系统调用的输入标志?

c - 升级 glibc - 它如何在没有发行版补丁的情况下工作