我正在观看一个视频,作者说我们可以使用此命令来阻止用户登录。
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 ~]$
对我来说,我觉得用户可以成功登录,因为没有错误。而且,如您所见,当我再次尝试登录时,它甚至会告诉我上次登录时间。只是用户一连接就断开了连接。这是真的?下面到底发生了什么?
(手册页)的
-s
选项是:useradd
并且
`which false`
只给出 command 的路径false
,除了 exit 之外什么都不做(有错误,但这没关系)。所以,在大多数情况下,用户正常工作,只是他们有一个不运行的外壳,所以他们实际上不能做任何事情。
您可能不应该为他们创建密码,而是使用类似
usermod -L u2
( man page ) 来锁定帐户密码,或chage
( man page ) 使帐户过期,这取决于您想用它做什么。(就内核而言,将密码锁定在 中
/etc/shadow
或使帐户过期完全没有任何作用。只是与登录等相关的各种工具和库。看看那些东西。)