我写了一个简单的 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
来避免在以所需用户身份调用特定脚本时需要密码)来解决这个问题。
关于linux - SUID 在 Bash 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25001206/