我在我们的环境中使用 rhel7.2。我不希望系统上的任何用户“su”到两个特定用户,比如“user3 和 user4”。但“user3 和 user4”可以“su”到系统中的任何用户。
让我详细解释一下我的要求。假设我在服务器上有 4 个用户,分别是用户 1、用户 2、用户 3 和用户 4。
假设我使用用户 1 或用户 2 登录到服务器。“我的要求是它不能将用户“su”切换到用户“用户 3 和用户 4”。但如果我使用“用户 3”或“用户 4”登录服务器,我可以将用户“su”切换到用户 1 或用户 2。
简而言之
以用户 1 身份登录服务器 > su - user3 -------这应该不起作用
以 User3 身份登录服务器 > su - user1 --------这应该可行
答案1
我怀疑您没有问出您想要回答的问题。具体来说,我怀疑您问的是有关如何控制访问的问题sudo su foo
;但我会按要求回答这个问题。
为了防止用户1做某事su user3
,不要告诉用户1用户3的密码。就这么简单。
如果你想控制 user1 的能力sudo su user3
,这是完全不同的事情,那么就不要给他们这种特权sudoers
。Praveen P 的回答对此非常好,尽管如果你认为你可以有意义地授予人们 sudo 所有权限,那么你就离失败只有一步之遥,然后拿走一些命令(我脑海中浮现的,我能想到五种左右不同的方法来更改 root 的密码,在 sudoers 文件的上下文中,他/她引用了)。通常,只给人们做他们需要做的事情的特权。
答案2
您可以使用visudo
它来控制用户访问权限以及他们可以使用哪些功能。
以下是一个例子
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
ubuntu ALL=/bin/sh,/usr/bin/*,/usr/sbin/*,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/usr/bin/su,!/usr/sbin/visudo, /sbin/*, /bin/*
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL, !/usr/bin/passwd root
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
在上面的配置中,用户ubuntu
有限制,sudo
组也有限制。
例如,
ubuntu
可以执行以下操作:
- 运行命令
/bin/sh
- 运行任意命令
/usr/bin/*
- 运行任意命令
/usr/sbin/*
- 更改任何用户的密码
/usr/bin/passwd [A-Za-z]*
但
ubuntu
不能执行以下操作:
- 更改
root
密码!/usr/bin/passwd root
- 成为超级用户
!/usr/bin/su
visudo
自行更新!/usr/sbin/visudo
您也可以这样做groups
。IEsudo
组可以做任何事情,但不能更改root
密码。
更新
如果你真的想尽一切办法阻止某人访问其他用户。我会这么做。
group
查找新组的 下一个可用IDgetent group
使用此命令并找到可用的下一个最大数字组 ID。通常它是您添加的最后一个用户之后的下一个数字。在我的情况下1002
,它是我最后添加的用户之后的下一个数字user1:x:1001:
。
- 然后使用下一个可用的 ID 创建一个新组。
- 就我而言,我做了以下事情。
sudo groupadd -g 1002 restricted
- 就我而言,我做了以下事情。
- 然后更新
viduso
以添加所需的限制。- 就我而言,我在该行后面添加了以下行
%sudo
。 %restricted ALL=(ALL:ALL) ALL, !/usr/bin/su, !/bin/su
。
- 就我而言,我在该行后面添加了以下行
- 最后将用户添加到组中。
sudo adduser user1 restricted