如何让 Ubuntu 中的部分用户无法登录到 shell?

2022-02-26 15:25:29 +08:00
 LxnChan

如题,局域网有一个 NAS ,安装的是 Ubuntu 。启用 Samba 共享后新建了许多专门用于 Samba 登录的用户。现在想对这些用户加以限制,不允许这些用户登录到 shell (包括 ssh 和直接在该设备上登录),请问该如何操作?

3366 次点击
所在节点    Linux
12 条回复
Osk
2022-02-26 15:30:56 +08:00
阻止本地登录: shell 设置为 nologin
阻止 ssh 登录: 配置文件中加它为拒绝登录, 不允许密码登录(不给这些用户加公钥)

另外: samba 的 smbpassws 和 passwd 可以是不一样的(如果我没记错), 也就是说, 登陆密码随机数设起, smbpasswd 设成 smb 的密码就行
LxnChan
2022-02-26 15:35:41 +08:00
@Osk 请问 Shell 如何设置为 nologin ?是有配置文件吗还是如何配置?谢谢。
Osk
2022-02-26 15:37:03 +08:00
对了, samba 的用户创建时可以就 home 设置为 /dev/null , 甚至可以试试 passwd -l 锁定这些用户看影响 samba 访问不.
jinliming2
2022-02-26 15:42:59 +08:00
@LxnChan
chsh --shell /sbin/nologin 用户名
Osk
2022-02-26 15:44:51 +08:00
@LxnChan 创建用户时使用这些参数:
useradd --home /dev/null --shell /sbin/nologin --no-create-home 用户名

已有用户: chsh -s /sbin/nologin 用户名



sshd 配置:
/etc/ssh/sshd_config 中加入:
DenyUsers 用户 1 用户 2

或者将 samba 用户加入一个组, 然后 sshd_config 中加入
DenyGroups 组名
LxnChan
2022-02-26 17:07:36 +08:00
@Osk adduser 命令中可以指定该用户禁用登录和禁用密码
EvineDeng
2022-02-26 19:18:29 +08:00
如果是已经创建的用户,直接改 /etc/passwd 就好了,把登陆 shell 改成 nologin ,一般是 /usr/bin/nologin
EvineDeng
2022-02-26 19:19:44 +08:00
也可能是 /usr/sbin/nologin
seers
2022-02-26 19:31:56 +08:00
shell 改成 /sbin/nologin 或者 /bin/false
AllenHua
2022-02-26 22:44:05 +08:00
我给楼主一个例子,以下内容节选自我的某台机器的 /etc/passwd 文件

```
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
ntp:x:106:111::/home/ntp:/bin/false
```

/usr/sbin/nologin 和 /bin/false 都满足需求,你可以直接编辑这个文件,按照以上格式编辑即可
yuedingwangji
2022-02-27 02:53:57 +08:00
难道不应该是配置一个本地不允许的用户+samber 配置虚拟用户么
mingl0280
2022-02-27 03:26:02 +08:00
直接改 passwd 最后的 shell 改成 /bin/false 就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/836582

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX