我团队中的大多数人都具有 sudo 访问权限。但我仍然希望他们在执行 sudo su 之前确认。如果用户按 Y,则允许他作为 root,否则将他返回到他自己的主目录。我尝试了下面的代码,但是当用户按任何其他键时,他仍然可以以 root 身份登录。请帮忙
!/bin/bash
echo -e "You are entering into high security env."
echo -e "If You are still not sure about the purpose, please logout of root user immediately."
echo -e "Contact admin immediately in case of any doubt."
sleep 1
echo -e "Press Y if you still want to enter as a root user"
read ch
case $ch in
'Y'|'y' )
echo -e "Risk is all yours. PT team welcome you here."
;;
*)
bash /root/.bash_logout
exit
;;
esac
答案1
显然,如此多的用户拥有 sudo 访问权限,这令人担忧。
我建议采用更标准的方法,而不是重新发明轮子,并且因为 root.profile
仅在执行时运行sudo su -
,而且还因为 sudo 的别名除了不太方便之外还被预先打印。
该/etc/sudoers
配置有一个选项可以永久保留每个用户第一次使用它时收到的默认警告。
我们相信您已经收到了本地系统管理员的常规讲座。通常可以归结为以下三件事:
#1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.
root的密码:
为了使其始终打开,您可以/etc/sudoers.d/privacy
使用以下内容创建一个文件:
Defaults lecture = always
如果你想用当前用户尝试,你必须先注销。
默认消息位于 sudo 源代码中,如果您想更改它,则必须重新编译 sudo。我建议不要这样做;如果你坚持,你必须从 apt-src 编译软件包,然后固定/冻结它,因为它不会随机更新,而只能手动更新。
作为您请求的补充,我强烈建议您开始记录人们的行为,尤其是在他们可以不受限制地sudo
访问的情况下。
如果您添加到您的/etc/bash.bashrc
:
readonly PROMPT_COMMAND='history -a >(logger -t "commandlog $USER[$PWD] $SSH_CONNECTION")'
这会将所有用户命令记录到系统日志中。
我将配置syslog
将日志转发到锁定的中央系统日志服务器,因此,如果发生黑客攻击或流氓系统管理员,他们将无法篡改证据。
答案2
脚本是从哪里调用的? root 的 .bash_profile 或 .bashrc ?
我不相信这一行会注销用户:
bash /root/.bash_logout
它创建一个新的 bash 进程,该进程将运行 .bash_logout 文件中的命令。
你可以尝试这一行:
logout
更新:或尝试:
exit
假设 shell 启动文件正在运行警告脚本,“退出”将仅退出警告脚本,而不是 shell。
如果运行“exit”的 bash 代码位于 .bashrc 文件中,而不是单独的警告脚本中,那么它应该退出 shell。