运行Ubuntu。更新后
/etc/aliases
文件
newaliases
必须运行命令以构建别名数据库
/etc/aliases.db
。我可以成功跑步
sudo newaliases
但是当我创建一个shell脚本(名为
myscript.sh
)使用
纽瓦利斯
命令,我得到
postalias: fatal: open /etc/aliases.db: Permission denied
错误。我用
sudo myscript.sh
启动脚本(
whoami
由脚本执行,打印出“root”),脚本成功执行了多个需要root权限的命令(例如写入
/etc/别名
)在遇到错误之前
纽瓦利斯
.
我尝试了以下操作:
-
已验证访问
/etc/别名
和
/etc/aliases.db
命令-两者都是755 root:root
-
更改了的属性
myscript.sh
到755根:根
-
更改了的属性
myscript.sh
到4755根:根
-
而不是跑步
纽瓦利斯
,我试过了
postalias /etc/aliases
以及
sendmail -bi
因为它们似乎提供了类似的功能
-
更新了sudoers配置,不允许执行密码
纽瓦利斯
:
myuser ALL=(ALL) NOPASSWD: /etc/myscript.sh
myuser ALL=(ALL) NOPASSWD: /usr/bin/newaliases
-
允许我的用户使用sudo执行任何命令:
myuser ALL=(ALL:ALL) NOPASSWD:ALL
-
习惯于
sudo newaliases
在脚本中
-
习惯于
sudo bash -c "newaliases"
在脚本中
上述所有尝试都失败了,总是得到相同的错误。
主要问题:
我该如何执行
纽瓦利斯
来自shell脚本
? 知道有什么特别的吗
纽瓦利斯
考虑到脚本执行其他需要root访问权限的操作而没有问题?
我在步骤4中发现的是
纽瓦利斯
只是一个符号链接
sendmail
:
ubuntu@mail:~$ ls -l /usr/bin/newaliases
lrwxrwxrwx 1 root root 16 Jan 29 2024 /usr/bin/newaliases -> ../sbin/sendmail
但当我只是跑步时
sendmail
它不会像以前那样执行别名数据库的更新
纽瓦利斯
(相反,它需要
sendmail-bi
命令执行相同的操作)。这是第二个问题——如果你能解释这个谜团,它可能会有所帮助。
谢谢!
林俊杰