我正在构建一个脚本来自动化并最小化对 root 的访问。我将尝试通过 SSH 进行操作。我目前在使用sed
将 UID 和 GID 0 shell 替换为/sbin/nologin
.
我为什么要这样做?这会禁用login
, gdm
, kdm
, su
, ssh
, scp
,上的 root 权限sftp
。我试图仅通过 执行 root 权限sudo
。如果您知道任何关于最小化 root 访问权限的建议,也请提出建议。
这是当前的问题:
grep :0:0: /etc/passwd | sudo sed 's_/bin/bash_/sbin/nologin_' /etc/passwd
目前正在做的就是全部替换/bin/bash
为/sbin/nologin
.
答案1
1. 获取一个 sudoer 帐户
su -
echo '<YOU> ALL=(ALL:ALL) ALL'>>/etc/sudoers
exit
2.禁用root账户
sudo usermod --expiredate 1 root
3.测试一下
$ su -
Password: <correct password>
Your account is expired.
在 Debian GNU/Linux 上测试
答案2
什么
grep :0:0: /etc/passwd | sudo sed 's_/bin/bash_/sbin/nologin_' /etc/passwd
做 ?
grep :0:0: /etc/passwd
搜索 uid/gid 为 0 的行,这通常给出带有 root 的行,该行被馈送到 STDOUT (标准输出)|
grep 的输出被提供给 sudo sed,由于在命令行中指定了文件,该输出被丢弃。sed 's_/bin/bash_/sbin/nologin_' /etc/passwd
这将 bash 从 /etc/passwd 替换为 nologin 到 STDOUT,/etc/passwd 保持不变。
你有没有尝试过..?
sudo sed -i '/:0:0:/s_/bin/bash_/sbin/nologin_' /etc/passwd