我创建了一个新用户,adduser
但是当我尝试从他的帐户中执行 sudo 时,我得到了xxxx * is not in the sudoers file. This incident will be reported.
.
所以我开始篡改visudo
命令......
我发现 root 帐户具有以下配置:
root ALL=(ALL:ALL) ALL
但我不想为我的新用户重复这个......
我希望我的用户 xxxx 没有 root 访问权限,除非使用 sudo。
使用 sudo 时,我希望 xxxx 用户提示输入 root 密码,而不是他自己的密码!
谢谢
使用 debian 10
VM,仅 ssh
答案1
我希望我的用户 xxxx 没有 root 访问权限,除非使用 sudo。
sudo
这实际上是普通用户的正常状态:除了配置以指定允许哪些命令之外,您无需执行任何操作。
root ALL=(ALL:ALL) ALL
sudo
该行的存在只是为了允许您在已经切换到 root 用户的情况下使用。向非 root 用户授予权限的重要一行是这一行:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
(在某些 Linux 发行版中,操作系统安装过程中生成的第一个常规用户可能会成为该组的成员sudo
,从而自动为其启用 root 访问权限。这是例外情况,并非所有用户的默认设置。)
sudoers 文件中权限规范的基本形式是
<who> <where>=(<as_who>) <what>
<who>
指定哪些用户可以使用此条目。它可以是一个用户、一个组(以 % 符号为前缀)或一个先前定义的 User_Alias(基本上是一长串用户和/或组的简写)以及其他一些东西。<where>
可以是主机名:它将此项限制为特定系统。它在企业环境中可能很有用,在企业环境中,您将集中管理的标准sudoers
文件放在所有主机上,但通常将其指定为 ALL,以避免主机名解析不起作用或系统配置错误时出现问题。(<as_who>)
定义可以运行命令的用户帐户。默认值为 root,但您也可以限制用户,例如只能在某些特定的非 root 应用程序帐户上使用 sudo 运行命令。<what>
是允许的命令(或多个命令,用逗号分隔)。
还有各种标签和选项,但sudoers
简而言之,以上是文件的重要部分。
使用 sudo 时,我希望 xxxx 用户提示输入 root 密码,而不是他自己的密码
这是可能的,而且很容易做到。如果您将这些行添加到您的sudoers
文件中:
Defaults:xxxx rootpw,timestamp_timeout=0
xxxx ALL=(ALL:ALL) ALL
然后对于用户xxxx
(和仅有的对于他们),该sudo
命令将要求输入 root 密码 - 并且它会询问每次使用该sudo
命令,而不是允许最多 15 分钟使用该sudo
命令而无需再次询问密码的默认行为。
如果您计划监视用户并在该用户需要时亲自输入 root 密码,这一点很重要 - 如果您错过了该timestamp_timeout=0
选项,用户可能会首先要求您输入 root 密码以进行某些合法操作,然后进行一些干扰在接下来的 15 分钟内为您提供帮助,在此期间他们将能够使用sudo
他们想要的任何东西。
但请注意如果您告诉用户 root 密码,他们也可以通过该su
命令使用它,除非您对 应用非默认限制su
。经典的(通常也是唯一的)限制方法是要求用户成为特定组的成员,否则他们将根本su
无法使用。su
要应用此限制,请编辑/etc/pam.d/su
并在开头附近找到此部分:
# Uncomment this to force users to be a member of group root
# before they can use `su'. You can also add "group=foo"
# to the end of this line if you want to use a group other
# than the default "root" (but this may have side effect of
# denying "root" user, unless she's a member of "foo" or explicitly
# permitted earlier by e.g. "sufficient pam_rootok.so").
# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
# auth required pam_wheel.so
#
只需从最后一行的开头删除,该su
命令将仅可由该组的成员使用root
。