教你如何在 Linux 中禁止普通用户使用 su 命令

原创
ithorizon 7个月前 (10-07) 阅读数 41 #Linux

怎样在 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` 命令。选择适合您系统配置和保险需求的方法,并确保在实施任何更改之前备份相关文件。请注意,某些操作也许需要管理员权限。

本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Linux


热门