给指定的用户无需密码执行 sudo 的权限


给指定的用户无需密码执行 sudo 的权限

cat /etc/passwd       可以查看所有用户的列表
w                     可以查看当前活跃的用户列表
cat /etc/group        查看用户组

cat /etc/passwd

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
www:x:1001:1001::/home/www:/sbin/nologin

cat /etc/group

daemon:x:1:
nogroup:x:65534:
www-data:x:33:
www:x:1001:

=======================================================

/usr/bin/sudo -u www:     www is not in the sudoers file.  This incident will be reported.
/usr/bin/sudo -u nobody:  sudo: no tty present and no askpass program specified
/usr/bin/sudo -u root:    sudo: no tty present and no askpass program specified
/usr/bin/sudo -u          sudo: unknown user: wget
sudo: unable to initialize policy plugin
/usr/bin/sudo             sudo: no tty present and no askpass program specified

以上错误,是由于 shell 在执行 sudo 时指定的用户需要权限和密码
在服务器上运行以下php脚本,可以看到当前 PHP 用户的名称,一般是 www

<?php
$uname = shell_exec ('whoami');
echo ("用户名是: <b>$uname </b>");
?>

用 visudo 编辑 sudo 的权限,给指定的用户无需密码
sudo visudo

# 对组 %wheel 所有脚本均无需密码执行sudo
%wheel    ALL=(ALL)    NOPASSWD: ALL
# 对用户 www 只有 /user/path/shell.sh 无需密码执行 sudo
www ALL=(ALL)           NOPASSWD: /user/path/shell.sh

之后使用 www 用户执行 sudo 则不会报错。 /usr/bin/sudo -u www



原文链接:,转发请注明来源!

发表评论