求最小根

求最小根

我正在构建一个脚本来自动化并最小化对 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

相关内容