我在 bash 脚本上遇到了一个问题:
- 由“root”在系统启动时或按需执行
- 使用“stefano”权限运行脚本
- 如果由“root”触发,则在日志文件上重定向输出;如果由“stefano”触发,则在“/dev/stdout”上重定向输出:
#!/bin/bash
[ "$1" == "log" ] && log="$2" || log="/dev/stdout"
if [ "`/usr/bin/whoami`" != "stefano" ]; then
echo "You are not allowed"
exit 9
fi
runuser -s /bin/bash stefano -c "echo I am Stefano >> $log"
在这种情况下,我获得了一个
bash: /dev/stdout: Permission denied
如果命令由 root 触发,为什么用户“stefano”无法在/dev/stdout 上写入?
显然充当
stefano> echo "I am Stefano" >> /dev/stdout
不会出错。在此先感谢您的帮助!
Stefano, 米兰, 意大利
最佳答案
那可能是因为终端设备归root所有,其他人没有写权限。
改为尝试 /dev/tty
。
关于bash - 在/dev/stdout 上运行用户和权限被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16747449/