linux 禁止用户通过shell登录
封面图
•
2025-12-02
•
Linux
189
0
0
0
在 Linux 系统中,如果你希望**禁止某个用户通过 shell 登录**(即不能通过 SSH 或本地终端登录),可以通过以下几种方式实现: --- ## ✅ 方法一:修改用户的登录 Shell 为 `/usr/sbin/nologin` 或 `/bin/false` 这是最常见、最有效的方法。 ### 步骤如下: 1. **查看当前用户的登录 Shell**: ```bash grep username /etc/passwd ``` 输出示例: ``` username:x:1001:1001::/home/username:/bin/bash ``` 2. **修改用户的登录 Shell** 为 `/usr/sbin/nologin` 或 `/bin/false`: - 使用 `usermod` 命令: ```bash sudo usermod -s /usr/sbin/nologin username ``` 或者: ```bash sudo usermod -s /bin/false username ``` 3. **验证修改是否生效**: ```bash grep username /etc/passwd ``` 输出应类似: ``` username:x:1001:1001::/home/username:/usr/sbin/nologin ``` ### 说明: - `/bin/false`:用户尝试登录时会立即退出。 - `/usr/sbin/nologin`:显示一条消息(如“Login not allowed”)并退出。 --- ## ✅ 方法二:修改 `/etc/ssh/sshd_config` 文件(仅限 SSH 登录) 如果你只是想**禁止通过 SSH 登录**,而不是本地终端登录,可以使用这个方法。 ### 步骤如下: 1. 编辑 SSH 配置文件: ```bash sudo nano /etc/ssh/sshd_config ``` 2. 添加以下内容来禁止特定用户登录: ```bash DenyUsers username ``` 或者如果要禁止多个用户: ```bash DenyUsers user1 user2 user3 ``` 3. 保存并退出编辑器。 4. 重启 SSH 服务: ```bash sudo systemctl restart sshd ``` > 注意:这种方法只影响 SSH 登录,不影响本地终端登录。 --- ## ✅ 方法三:删除用户的 shell 权限(不推荐) 虽然可以手动修改 `/etc/passwd` 文件,但不建议直接编辑该文件,容易出错。建议使用 `usermod` 命令。 --- ## 📌 补充说明 | 方法 | 是否阻止本地登录 | 是否阻止 SSH 登录 | 是否推荐 | |------|------------------|-------------------|----------| | 修改 Shell 为 `/bin/false` 或 `/usr/sbin/nologin` | ✅ 是 | ✅ 是 | ✅ 推荐 | | `DenyUsers` 在 `sshd_config` 中 | ❌ 否 | ✅ 是 | ⚠️ 仅适用于 SSH | | 手动修改 `/etc/passwd` | ✅ 是 | ✅ 是 | ❌ 不推荐 | --- ## ✅ 示例:禁止用户 `testuser` 登录 ```bash sudo usermod -s /usr/sbin/nologin testuser ``` 之后,`testuser` 将无法通过 SSH 或本地终端登录系统。 --- 如有其他需求(如禁止某些命令、限制访问目录等),也可以进一步配置 PAM 模块或使用 `chroot` 等高级功能。欢迎继续提问!
上一篇:
最值得一读的真心话
下一篇:
GIT日常用到的命令
标题录入,一次不能超过6条
留言
评论