7

我想删除 /etc/sudoers 文件中的 (uncommnet #) 轮组,那么我应该使用什么正则表达式模式?

#cat /etc/sudoers
....
....
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

## Same thing without a password
# %wheel  ALL=(ALL)       NOPASSWD: ALL

....
....

我想从下一行中删除 # 。

...
# %wheel  ALL=(ALL)       NOPASSWD: ALL
...
4

3 回答 3

17

您不应该/etc/sudoers使用任何类型的脚本来编辑文件。这个命令是有原因的visudo。对sudoers文件的编辑应该很少且受到良好控制。

话虽如此,如果您的visudo命令编辑器是 vi,您可以运行类似:%s/^# %wheel/%wheel/取消注释所有以%wheel.

或者,如果您认为有必要:

sudo sed --in-place 's/^#\s*\(%wheel\s\+ALL=(ALL)\s\+NOPASSWD:\s\+ALL\)/\1/' /etc/sudoers

--in-place在没有第一个检查输出的情况下运行它。需要您自担风险使用它。

于 2012-05-02T19:59:02.760 回答
7

以下应该有效:

sed -i 's/^#\s*\(%wheel\s*ALL=(ALL)\s*NOPASSWD:\s*ALL\)/\1/' /etc/sudoers
于 2012-05-02T20:02:05.470 回答
6

无需使用 sed。在 centos 上,您可以简单地在以下位置创建文件/etc/sudoers.d/

echo 'myuser ALL=(ALL) NOPASSWD: ALL' >> ./myuser
sudo chown root:root ./myuser
sudo mv ./myuser /etc/sudoers.d/

这将启用没有密码的 sudo myuser。检查此以获取更多信息:https ://unix.stackexchange.com/questions/375433/etc-sudoers-vs-etc-sudoers-d-file-for-enabling-sudo-for-a-user

于 2019-02-28T21:46:02.827 回答