假设我使用adduser命令创建了一个名为“ bogus”的用户。在不禁用帐户的情况下,如何确定该用户将不是可行的登录选项。简而言之,我希望可以通过su - bogus访问该帐户,但是我不希望通过常规的登录提示符访问该帐户。

搜索时,似乎我需要禁用该用户的密码,但是做passwd -d bogus没有帮助。实际上,这使情况变得更糟,因为现在我什至无需输入密码就可以登录到伪造的产品。

是否可以禁用给定帐户的常规登录?

注意:请注意,我知道如何从图形登录屏幕(如gdm)的菜单选项中删除用户,但是这些方法只是隐藏了帐户,而没有实际禁用登录。我正在寻找一种完全禁用常规登录(包括文本模式)的方法。

评论

您的-d是删除密码的标志。这与禁用它不同(称为锁定,请参阅乍得的答案)。

您可能希望完全禁用它们:unix.stackexchange.com/questions/7690/…另请参见以下Ubuntu的提问:askubuntu.com/questions/282806/how-to-enable-or-disable-a-user

#1 楼

passwd -l user


是您想要的。

这将锁定用户帐户。但是您仍然可以

su - user


,但是您必须以root用户身份su - user

或者,您可以完成相同的操作通过在!中的用户密码前面加上/etc/shadow可以解决此问题(这是passwd -l在后台执行的所有操作)。而passwd -u将撤消此操作。

评论


通过使用passwd -l选项,您应该知道用户可以使用其他身份验证令牌(例如SSH密钥)登录。

–pl1nk
13年2月20日在16:42



请参阅以下有关如何避免这种情况的推荐解决方案的解答。

–Jörg Gottschlich
2014-10-29 15:58



这在ubuntu 16.04上不起作用。它将更改过期日期,并且不再允许su-用户。

–梅林
17年2月7日在17:09

这与为adduser提供的--disabled-password选项相同吗?创建没有--disabled-password的用户然后在该用户上运行passwd -l是否会获得与首先使用--disabled-password运行adduser相同的结果?

–haridsv
18年4月16日在9:18

#2 楼

passwd(1)的手册页上介绍了passwd -l


请注意,这不会禁用该帐户。用户可能仍然可以
使用其他身份验证令牌(例如SSH
密钥)登录。要禁用该帐户,管理员应使用usermod
--expiredate 1(此设置该帐户的到期日期为1970年1月2日,
1970)。


所以

usermod --expiredate 1 [LOGIN]


对我来说就像是禁用帐户的正确方法,用户应该再也不能使用它了(例如,因为他离开了公司)。

评论


在我的CentOs 6.3上,passwd -l会阻止用户的ssh连接,而usermod --expiredate 1不会!

–fduff
15年2月6日在8:20

在我的CentOS 7.4上,passwd -l不再阻止用户的ssh连接,而usermod --expiredate 1用户确实阻止了。每个人密码也可以使用chage -E 0 user阻止用户。应用usermod或chage之后,我可以sudo su user

–user12345
17-10-23在20:42



usermod --expiredate 0 [LOGIN]也有效,它将过期日期设置为1970年1月1日,而将1设置为1970年1月2日。

–slm♦
17年11月15日在4:39

“不应使用值0,因为它将被解释为无有效期的帐户或1970年1月1日到期。” -影子(5)

–约翰内斯
18年8月5日在7:07



#3 楼

有两种防止用户登录的方法:


您可以通过直接发出/etc/passwd命令并编辑passwd

来锁定用户。 -l开关

在第二种情况下,用户可以使用其他身份验证令牌(例如SSH密钥)登录。

方法#1


/>查找Nologin在哪里:/ bin / nologin或/ bin / sbin / nologin
打开终端并以root用户身份登录
键入vi /etc/passwd


现在您是在passwd文件中,按Ins编辑该文件。

使用nologin选项更改以下行(/bin/bash表示用户可以登录)。

root:x:0:0:root:/root:/bin/bash


对此。 nologin表示用户无法登录。

root:x:0:0:root:/root:/bin/nologin


(或使用/ bin / sbin / nologin)


关闭vi Esc:wq


方法#2

要锁定用户:passwd -l username

要解锁用户:passwd -u username

评论


在Ubuntu 14.04系统上,我找到了/ usr / sbin / nologin而不是/ bin / nologin。

–丹尼斯·威廉姆森
2014年10月10日23:25

提示:使用哪个nologin来确定系统的正确路径

–musicin3d
20-10-9在20:49

在现代发行版中,如果用户的shell设置为nologin,则您将无法再成功使用su-user,因为您将被弹回。该帐户当前不可用。尽管对于用passwd -l锁定的帐户,您仍然可以成功。

– Marcin Orlowski
20-10-10在17:53

#4 楼

它非常简单,您只需在/etc/passwd文件中进行一些更改。

只需更改外壳程序(默认情况下通常是/bin/bash)即可,即,您可以使用此外壳程序登录,将其更改为/bin/nologin/bin/false。由于/bin/nologin已过时,建议将其更改为/bin/false

#5 楼

/bin/false设置为/etc/passwd中的外壳

评论


当将shell设置为/ bin / false时,将阻止使用su充当该用户。此外,使用/ bin / false不会产生错误,也不会提示发生了什么问题-如果确实想防止以su身份使用su来获取该用户的shell,则应将shell更改为/ sbin / nologin确实会产生错误。

– HedgeMage
11年8月24日在16:22

不,对于在passwd中使用/ bin / false shell的用户来说,su仍然可行-只需使用--shell选项即可:su---shell / bin / sh bogus。

–马特·科瓦奇(Matej Kovac)
2014-2-27在9:56

/ usr / sbin / nologin与/ bin / false具有相同的作用,但也显示有用的信息性消息。

–罗德
18年1月31日在15:20

#6 楼

当我们使用passwd -l user命令锁定用户时,在!!文件中会显示“ /etc/shadow”。但是我们仍然可以从root帐户切换到用户外壳程序,但是不能通过其他普通用户登录外壳程序切换到用户帐户。

我们还可以通过在以下帐户中提供/bin/nologin/bin/false来禁用帐户到/etc/passwd文件。因此用户可能无法登录。

#7 楼

假设您要使用新的用户帐户开始:
 sudo adduser --no-create-home --disabled-password --disabled-login <uname>
 


使用usermod --expiredate 1 <uname>我遇到了这个帐户的问题不能再用于任何用途(例如,用于samba登录)。我的用例是我想禁用ssh,普通...登录的所有功能,但仍将其用作Samba用户。

#8 楼

您可以使用命令

usermod -s /sbin/nologin username