我想编辑我的 sudoers 文件,以便用户根据他们登录的位置拥有不同的权限。我想要有 3 个不同的位置:外部网络(互联网)、内部(本地局域网)和控制台(坐在电脑前的用户)。定义外部和内部将是这样的:
Host_Alias PRIVNET = 10.6.66.0/25, 10.6.67.128/28
但是我该如何定义控制台?
我不希望用户能够更改防火墙或 sudoers,例如,如果他不在现场,如果出现问题,或者即使他的帐户被盗用。
我只是想确保用户在进行关键更改时在附近。
答案1
sudoers Host 定义(以及 Host_Alias)用于定义此 sudoers 文件条目适用于哪些主机。换句话说,它定义了用户拥有哪些权限在此主机不从他们在哪些主机上拥有这些权利。(如果我没记错的话)
长话短说,您想要做的事情无法通过 sudoers 条目来完成。
答案2
如果您能做到这一点,我认为可以使用 PAM(可插入式身份验证模块)来完成。或者可能是 suoders 文件的“requiretty”指令(man sudoers
)。
但是,我想你可能想提一下你的目标。从安全角度来看,我觉得这不对。我认为更有意义的是拥有具有不同访问级别的不同帐户,然后只允许这些帐户从特定 IP 地址登录。然后你就有两个宏级别的安全性,密码验证和基于 IP。主要级别是帐户——我认为无论从哪里登录,帐户都应该能够做同样的事情。
使用 sudoers 文件来限制命令对我来说似乎有点太过分,所以我只会将其用作上述内容的额外安全层。
所以最后我的建议是:
- 创建具有所需访问权限的不同帐户/组,并授予他们访问 suoders 文件中这些命令的权限。这个想法是,存在可以绝不运行某些命令,以及可以运行的特权帐户。
- 使用 PAM 来控制这些特权账户可以登录到哪里,这里这是一个使用 ssh 执行此操作的示例。