2

所以这是我刚刚想到的效率是脚本。我想知道是否可以制作一个具有 sudo 权限但不提示密码的自定义命令(即 jello)。我写了很多需要 sudo 权限的脚本,不喜欢每次都输入。我一直在编辑 sudoers 文件并对这些文件进行例外处理。但如果这是可能的,我真的很高兴,所以我可以在我的脚本中输入这个命令,它会像它应该运行的那样运行,而不需要输入密码。

4

1 回答 1

1

一种选择是在 sudoers 文件(sudoers 手册页)中使用通配符。

注意:您需要对这样的任何策略采取适当的预防措施,因为您不一定会提前知道您授予访问权限的所有命令 -一些漏洞风险

如果您可以接受风险,那么将这样的内容放入您的/etc/sudoers文件中将允许您添加相同形式的新命令并启用这些命令的运行,而无需每次都输入密码:

me         ALL= NOPASSWD: /home/me/privil_scripts/priviledged_*.sh

确保其他用户不容易在此目录中添加额外的脚本!欢迎对保持此安全的评论。

作为快速测试:

# create a directory with some files inside
cd ~; mkdir nolook; touch nolook/f1; touch nolook/f2
>>> f1  f2
# make it so regular user can't see inside
sudo chmod -R 700 nolook; sudo chown -R root:root nolook
# test
ls nolook
>>> ls: cannot open directory nolook/: Permission denied

现在编写特权和非特权脚本:

echo "
#!/bin/sh
sudo ls nolook
" > privil_scripts/priviledged_ls.sh
chmod +x !$

echo "
#!/bin/sh
sudo ls nolook
" > privil_scripts/plain_ls.sh
chmod +x !$

并尝试它们:

privil_scripts/priviledged_ls.sh
>>> f1  f2

privil_scripts/plain_ls.sh
>>> [sudo] password for me:
于 2014-02-17T21:15:57.143 回答