linux - sudo su 给其他用户运行脚本

标签 linux security sudo sudoers

我正在尝试以 USER1 身份登录并将用户切换到 USER2 并以 USER2 身份执行一些脚本(100 多个脚本,无法在 sudoer 文件中一一列出)

在我的 Sudoer 文件中

   USER1 ALL=(USER2) NOPASSWD: ALL

当我以 USER1 运行以下命令时

  sudo su - USER2 -c "test.sh"

我明白了

Sorry, user USER1 is not allowed to execute '/bin/su - USER2 -c test.sh' as root

如果我跑

  sudo su - sassrv

我明白了

Sorry, user USER1 is not allowed to execute '/bin/su - USER2'

如果我将 Sudoer 文件更改为

         USER1 ALL=(ALL) NOPASSWD: /bin/su - USER2

它会让我切换用户,但我还是得到了

Sorry, user USER1 is not allowed to execute '/bin/su - USER2 -c test.sh' as root

我怎样才能做到这一点?

最佳答案

您想以 USER2 身份使用 sudo 运行 test.sh,但您以 root 身份运行 su

su 可能会依次尝试以 USER2 身份运行 test.sh,但这超出了 sudo 的范围和知识范围。从 sudo 的角度来看,您唯一要做的就是尝试以 root 身份运行命令。

相反,要求 sudo 以 USER2 直接运行 test.sh:

sudo -u USER2 test.sh

PS:sudo su 在任何上下文中都是一种代码味道,表明对 sudo 是什么和做什么缺乏理解。

关于linux - sudo su 给其他用户运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52209471/

相关文章:

c - strcpy 没有空间容纳空终止符,那么它打印什么呢?

bash - 使用 sudo 找不到命令,但无需使用 sudo 即可工作

python - pip freeze > requirements.txt - 权限被 sudo 拒绝? (heroku-flask 教程)

mysql - 如何启用对mysql使用man命令

mysql - 如何使用 MySQL aes_encrypt 和 aes_decrypt?

c# - 在项目中使用安全数据库 Access 的最佳解决方案

postgresql - 在 Mac 上切换到 postgres 用户

linux - 将我重定向到 Shibboleth.sso/SAML2/POST

linux - 我如何根据在每个文件上运行管道的结果告诉 find 打印文件列表?

linux - Beagleboard xM 中使用的 mDDR 芯片