Ubuntu 自定义Sudo命令

Ubuntu 自定义Sudo命令,ubuntu,command,sudo,sudoers,Ubuntu,Command,Sudo,Sudoers,所以这是我刚刚为提高效率而提出的一个想法,就是编写脚本。我想知道是否有可能生成一个具有sudo权限但不提示密码的自定义命令(即jello)。我写了很多需要sudo权限的脚本,不喜欢每次都输入它们。我一直在编辑sudoers文件,并对这些文件进行例外处理。但是如果这是可能的话,我真的很想这样做,所以我可以在脚本中键入这个命令,它会像应该的那样运行,而不需要密码。一个选项是在sudoers文件()中使用通配符 注意:对于任何类似的策略,您都需要采取适当的预防措施,因为您不一定知道要提前授予访问权限的

所以这是我刚刚为提高效率而提出的一个想法,就是编写脚本。我想知道是否有可能生成一个具有sudo权限但不提示密码的自定义命令(即jello)。我写了很多需要sudo权限的脚本,不喜欢每次都输入它们。我一直在编辑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:

我不是Linuz方面的专家,我不知道这是否可行,但您是否考虑过在脚本中可能需要一个令牌(或者更糟糕的是,一个纯文本密码)来实现这一点?我希望你的脚本不是给其他人使用的。嘿,这个脚本只是给我的电脑用的。我只是好奇这种可能性。我不想在计算机上有巨大的安全风险,这就是为什么一个特殊的命令会很好,因为只有我看到它才会知道。什么是代币?我以前没有听说过这个术语,您可以设置特定的命令来进行无密码sudo访问(对特定的用户组)。在
/etc/sudoers
中,您可以使用像
usr ALL=NOPASSWD:/home/me/bin/custom\u ping
这样的协同命令,使组成员
usr
运行通常需要root密码的
custom\u ping
。@Bonlenfum,如果我读对了,这就是我目前正在做的事情;在没有密码提示的情况下为特定脚本授予所有sudo权限。但是,我猜没有办法给一个特定的命令passworldess sudo访问权限,可以用来运行脚本?我想保持sudo命令的“神圣性”,并且有一个单独的无密码命令。很抱歉,我的评论没有帮助。似乎您可以在sudoers文件中的命令上使用通配符,因此您可以让所有需要sudo访问的脚本都有一些通用的前缀/后缀,并使sudoers规则与之匹配?我自己也没有尝试过通配符——似乎比显式地使用一小部分提升的特殊命令更容易被滥用。(请参阅通配符语法)是的,是的,很抱歉,我还没有将其标记为答案。非常感谢。