脚本中的新别名导致权限被拒绝

问题描述 投票:0回答:1

运行 Ubuntu。更新

/etc/aliases
文件后,必须运行
newaliases
命令来构建别名数据库
/etc/aliases.db
。我可以成功运行
sudo newaliases
,但是当我创建使用
myscript.sh
命令的 shell 脚本(名为
newaliases
)时,我收到
postalias: fatal: open /etc/aliases.db: Permission denied
错误。我使用
sudo myscript.sh
启动脚本(由脚本执行的
whoami
打印出“root”),并且在使用
/etc/aliases 出现错误之前,脚本成功执行了多个需要 root 权限的命令(例如写入 
newaliases
.

我尝试了以下方法:

  1. 验证了
    /etc/aliases
    /etc/aliases.db
    命令的访问 - 均为 755 root:root
  2. myscript.sh
    的属性更改为755 root:root
  3. myscript.sh
    的属性更改为4755 root:root
  4. 我没有运行
    newaliases
    ,而是尝试了
    postalias /etc/aliases
    以及
    sendmail -bi
    ,因为它们似乎提供了类似的功能
  5. 更新了 sudoers 配置以允许无密码执行
    newaliases
    :
myuser ALL=(ALL) NOPASSWD: /etc/myscript.sh
myuser ALL=(ALL) NOPASSWD: /usr/bin/newaliases
  1. 允许我的用户使用 sudo 执行任何命令:
myuser ALL=(ALL:ALL) NOPASSWD:ALL
  1. 在脚本中使用了
    sudo newaliases
  2. 在脚本中使用了
    sudo bash -c "newaliases"

以上所有尝试都失败了 - 总是遇到相同的错误。

主要问题:如何从 shell 脚本执行

newaliases
?鉴于脚本执行需要 root 访问权限的其他操作而不会出现问题,你知道 newaliases
 有什么特别之处吗?

我在第 4 步中发现

newaliases

 只是 
sendmail
 的符号链接:

ubuntu@mail:~$ ls -l /usr/bin/newaliases lrwxrwxrwx 1 root root 16 Jan 29 2024 /usr/bin/newaliases -> ../sbin/sendmail
但是当我简单地运行 

sendmail

 时,它不会像 
newaliases
 那样执行别名数据库的更新(相反,它需要 
sendmail -bi
 命令来执行相同的操作)。这是第二个问题 - 如果你能解释这个谜团可能会有所帮助。

谢谢! 杰杰

bash email alias sudo
1个回答
0
投票
/etc/alisaes 文件的权限应为 644(而不是 755)。

© www.soinside.com 2019 - 2024. All rights reserved.