sudoers sudoedit 递归通配符

sudoers sudoedit 递归通配符

我想允许通过 sudoers 编辑特定目录下的任何文件(递归)。

以下均不起作用(Debian 9 sudo)

ops ALL=(root) NOPASSWD: sudoedit /opt/myapps/
ops ALL=(root) NOPASSWD: sudoedit /opt/myapps/*
ops ALL=(root) NOPASSWD: sudoedit /opt/myapps/**
ops ALL=(root) NOPASSWD: sudoedit /opt/myapps/**/*

正确的语法是什么?

答案1

您可以授予用户访问 sudo 组的权限:

以下是我在 Ubuntu 18.04 上设置非 root 用户的方法:

groupadd -g 999 foobaz && useradd -u 999 -g foobaz -G sudo -m -s /bin/bash foobaz &&
sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' &&
sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' &&
sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' &&
echo "foobaz ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers &&
echo "Enabled passwordless access to the sudo group for the foobaz user!" &&
echo "foobaz user:";  su - foobaz -c id

上述代码会发生什么情况:

  • 用户和组foobaz已创建。
  • 该用户foobaz被添加到foobazsudo组中。
  • uidgid设置为 的值999
  • 主目录设置为/home/foobaz
  • 外壳设置为/bin/bash
  • sed命令对文件进行内联更新,/etc/sudoers以允许foobaz用户root无密码访问该sudo组。
  • sed命令禁用#includedir允许子目录中的任何文件覆盖这些内联更新的指令。

然后您就可以运行su foobaz、、等sudo -sexit


如果你想要简短版本,只需运行:

echo "foobaz ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

请注意,这将附加到现有/etc/sudoers文件而不是正确更新内容。

相关内容