教你如何在 Linux 中禁止普通用户使用 su 命令
原创怎样在 Linux 中禁止普通用户使用 su 命令
在 Linux 系统中,`su` 命令是一个常用的工具,它允许用户切换到另一个用户的身份。然而,对于一些系统管理员来说,他们也许期望局限普通用户使用 `su` 命令,以扩大系统的保险性。以下是一些方法,可以帮助您在 Linux 中禁止普通用户使用 `su` 命令。
### 1. 使用 `nologin` 命令
一个简洁的方法是使用 `nologin` 命令来禁止用户登录。这可以通过修改用户的登录shell来实现。
bash
# 修改用户登录shell为nologin
sudo chsh -s /usr/sbin/nologin 用户名
执行上述命令后,指定用户将无法使用 `su` 命令切换到其他用户。
### 2. 修改 `/etc/passwd` 文件
`/etc/passwd` 文件包含了系统中的所有用户信息。您可以直接编辑这个文件来禁止用户使用 `su` 命令。
bash
# 修改/etc/passwd文件,禁止用户使用su
sudo nano /etc/passwd
找到需要禁止使用 `su` 的用户行,将其 `Shell` 字段修改为 `/usr/sbin/nologin`。例如:
用户名:x:UID:GID:注释:/home/用户名:/usr/sbin/nologin
保存并关闭文件,用户将无法使用 `su` 命令。
### 3. 修改 `/etc/shells` 文件
`/etc/shells` 文件列出了系统中允许用户登录的 shell。您可以移除或注释掉 `/bin/su` 或 `/usr/bin/su` 来禁止用户使用 `su` 命令。
bash
# 修改/etc/shells文件,禁止使用su
sudo nano /etc/shells
找到 `/bin/su` 或 `/usr/bin/su` 行,并在该行前添加一个 `#` 符号来注释掉它。
# /bin/su
# /usr/bin/su
保存并关闭文件。注意,此方法也许不会立即生效,归因于一些用户也许已经缓存了 `/etc/shells` 文件。您可以重启 `login` 服务或注销并重新登录来应用更改。
### 4. 使用 `usermod` 命令
`usermod` 命令是用于修改用户账户信息的工具。您可以使用它来设置用户的登录shell为 `nologin`。
bash
# 使用usermod命令禁止用户使用su
sudo usermod -s /usr/sbin/nologin 用户名
执行上述命令后,用户将无法使用 `su` 命令。
### 5. 使用 `pam-su` 模块
`pam-su` 是一个 PAM 模块,可以用来控制对 `su` 命令的访问。您可以在 `/etc/pam.d/su` 文件中配置 `pam-su` 模块来禁止普通用户使用 `su`。
bash
# 编辑/etc/pam.d/su文件
sudo nano /etc/pam.d/su
找到 `auth` 部分,添加以下行:
auth required pam_wheel.so use_first_pass
这将允许只有 wheel 组成员才能使用 `su` 命令。确保您将用户添加到 wheel 组:
bash
# 将用户添加到wheel组
sudo usermod -aG wheel 用户名
保存并关闭文件,用户将无法使用 `su` 命令,除非他们是 wheel 组成员。
### 总结
以上方法可以帮助您在 Linux 中禁止普通用户使用 `su` 命令。选择适合您系统配置和保险需求的方法,并确保在实施任何更改之前备份相关文件。请注意,某些操作也许需要管理员权限。