通过“useradd -ms `which false`”创建用户到底会发生什么?

通过“useradd -ms `which false`”创建用户到底会发生什么?

我正在观看一个视频,其中作者说我们可以使用此命令来阻止用户登录。

useradd -ms `which false` u2

下面是我的测试。

[root@192 ~]# tree -dL 1 /home
/home
├── u1
└── user1

2 directories
[root@192 ~]# useradd -ms `which false` u2
[root@192 ~]# tree -dL 1 /home
/home
├── u1
├── u2
└── user1

3 directories
[root@192 ~]# passwd u2
Changing password for user u2.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@192 ~]# logout
[u1@192 ~]$ whoami
u1
[u1@192 ~]$ logout
[user1@192 ~]$ whoami
user1
[user1@192 ~]$ su - u2
Password: 
[user1@192 ~]$ whoami
user1
[user1@192 ~]$ su - u2
Password: 
Last login: Tue Apr 19 11:22:01 PDT 2022 on pts/0
[user1@192 ~]$ whoami
user1
[user1@192 ~]$

对我来说,我觉得用户可以成功登录,因为没有错误。而且,正如您所看到的,当我尝试再次登录时,它甚至会告诉我上次登录时间。只是用户一连接就断开了。这是真的?下面究竟发生了什么?

答案1

选项(-suseradd手册页) 是:

-s,--shell SHELL
用户登录 shell 的名称。

并且`which false`只给出 command 的路径false,它除了退出之外什么也不做(有错误,但这并不重要)。

因此,在大多数情况下,用户可以正常工作,只是他们有一个不运行的 shell,因此他们实际上无法执行任何操作。

你也许应该不是为他们创建一个密码,然后使用类似usermod -L u2手册页) 锁定账户密码,或chage(手册页)使帐户过期,这取决于您想用它做什么。

/etc/shadow(就内核而言,锁定密码或让帐户过期完全没有任何作用。只是与登录等相关的各种工具和库。看看那些东西。)

相关内容