我有一个问题,我们可以吗使用“密码”保护“命令”
例如如果我输入
pwd
终端上的命令,即使我是系统管理员,Linux 也应该提示输入密码。
或者我们可以强制用户sudo
在 Linux 上的特定命令前添加前缀吗
答案1
一种可能的解决方案是隔离用户,以限制他/她可以发出的命令集,并为了更好地控制系统,他/她需要获得 root 访问权限。要实现这一点,首先你应该受限外壳该用户的默认 shell:
usermod -s /bin/rbash user
您还可以为该用户创建一个特定的目录来存储您想要授予访问权限的可执行文件的符号链接:
mkdir /home/user/programs
编辑用户的.bash_profile
文件来限制用户可以运行的命令的范围:
PATH=$HOME/programs
export PATH
创建一些符号链接(即从 Windows 角度而言的快捷方式):
ls -s /bin/ls /home/user/programs/
ls -s /bin/date /home/user/programs/
ls -s /bin/uname /home/user/programs/
最后一步是防止用户实际修改.bash_profile
文件的元数据:
chattr +i /home/user/.bash_profile
此属性使文件不可变。
如果您想恢复此操作,只需运行:
chattr -i /home/user/.bash_profile
不要忘记添加符号链接,/bin/su
以使知道 root 用户密码的用户能够获得 root 访问权限。(要正常工作,这还需要通过为 root 帐户设置密码来启用基于密码的登录。)
别忘了不是将用户添加到sudo
组中,或从该组中删除用户(如果存在)。如果用户是该sudo
组的成员,则用户可以通过自己的密码获得 root 访问权限!
或者另一种解决方法是/usr/bin/sudo
根本不对文件进行符号链接。
如果有人有更好的想法,我很高兴听到。