我编写了一个简单的bash脚本,用于备份主目录,并将其放入/ var / backups中。 由于该目录受到保护,我以root身份编写脚本,然后设置SUID。
armando@ubuntu:~/scripts/bash $ ll
-rwsr-xr-x 1 root root 2596 Jul 28 10:43 homebackup.sh*
即使这样,我也得到了#34; Permission Denied"脚本尝试写入/ var / backups时出错。为什么呢?
答案 0 :(得分:2)
在Linux和大多数其他现代UNIX系列系统中,setuid位仅被识别为直接二进制可执行文件,而不是脚本。
这是出于设计原因,出于安全考虑。您可以通过为setuid脚本构建编译的包装器,或使用现有工具(例如sudo
的配置来避免在将特定脚本作为所需用户调用时需要密码)来解决此问题。