将用户添加到 sudoers 后,它无权运行 sudo。
我真的很困惑问题是什么,但我正在运行安装了 Plesk 的 CentOs 7.9。
我已将主要 Plesk 订阅用户添加到wheel
组中,并取消注释以下行/etc/sudoers
:
## Allows people in group wheel to run all commands
wheel ALL=(ALL) ALL
我保存 sudoers,并su
从 root 保存到用户,任何以以下开头的命令sudo
都会返回:
sudo: command not found
中的$PATHsudoers
如下:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
虽然我也尝试过以下方法但无济于事:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/opt/plesk/php/7.4/bin:/root/bin
我正在尝试让有问题的用户获得 sudo 访问权限,以便他们可以访问,crontab
因为 cron 作业需要在该特定用户下运行(并且我无法让它在 Plesk 界面中运行)。
目前,用户只是得到crontab: command not found
- 事实上,几乎所有命令都没有找到(不确定这是否是因为这些命令仅适用于 sudo 用户)。
任何人都可以建议我到底需要做什么才能为该用户运行 sudo 吗?提前致谢。
答案1
你不需要做任何这些。如果目标是以该用户身份运行 cronjob,您所需要做的就是向/etc/crontab
.该文件有一个普通的每用户 crontab 没有的额外字段,您可以在其中定义运行命令的用户:
# m h dom mon dow user command
0 * * * * plesk command_to_be_run
它将command_to_be_run
由用户每小时运行一次plesk
。
您的方法不起作用,因为作为系统用户,plesk
没有正确的登录 shell,正如您在 中看到的那样/etc/passwd
,并且没有设置为交互式使用,因此没有$HOME/.profile
正确的PATH
变量等。结果,用户PATH
不包含可执行文件的路径sudo
,因此无法运行它。在任何情况下,您都无法sudo
轻松运行 cron 内容,您需要将其设置为无密码运行,但如上所述,不需要整个操作。
最后,PATH
问题中显示的不是实际用户的路径plesk
,因为su plesk
不会读取用户的启动文件,您需要su - plesk
.从man su
:
-, -l, --login
Start the shell as a login shell with an environment similar to a
real login:
• clears all the environment variables except TERM and variables
specified by --whitelist-environment
• initializes the environment variables HOME, SHELL, USER,
LOGNAME, and PATH
• changes to the target user’s home directory
• sets argv[0] of the shell to '-' in order to make the shell a
login shell