禁用用户登录而不禁用帐户

Mal*_*rba 109 users password login authorization

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

四处搜索,似乎我需要禁用该用户的密码,但这样做passwd -d bogus并没有帮助。事实上,这让事情变得更糟,因为我现在甚至不用输入密码就可以登录到伪造的。

有没有办法禁用给定帐户的常规登录?

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

Cha*_*ler 123

passwd -l user
Run Code Online (Sandbox Code Playgroud)

是你想要的。

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

su - user
Run Code Online (Sandbox Code Playgroud)

但你必须以su - userroot 身份。

或者,您可以通过在!用户密码前添加 a来完成同样的事情/etc/shadow(这都是passwd -l在幕后进行的)。而passwd -u将撤消这一点。

  • 通过使用`passwd -l` 选项,您应该知道用户可以使用另一个身份验证令牌(例如SSH 密钥)登录。 (35认同)
  • 这与给 `adduser` 的 `--disabled-password` 选项相同吗?创建一个没有 `--disabled-password` 的用户,然后在该用户上运行 `passwd -l` 是否与首先使用 `--disabled-password` 运行 `adduser` 获得相同的结果? (3认同)
  • 请参阅我的[下面的答案](http://unix.stackexchange.com/a/129477/67687) 关于如何避免这种情况的推荐解决方案。 (2认同)
  • 这不适用于 ubuntu 16.04。它将更改过期日期并且不再允许 su - 用户。 (2认同)
  • @haridsv 在 Alpine 上(可能与其他发行版相同,未经测试)如果我使用 `--disabled-password` 然后运行 ​​`passwd -l user` 我收到错误 `passwd:用户的密码已锁定`。我认为它们是相同的。 (2认同)

Jör*_*ich 43

的手册页passwd(1)passwd -l

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

所以

usermod --expiredate 1 [LOGIN]
Run Code Online (Sandbox Code Playgroud)

在我看来,这是禁用用户不应再使用的帐户的正确方法(例如,因为他离开了公司)。

  • 在我的 CentOs 6.3 上,`passwd -l` 确实会阻止用户的 `ssh` 连接,而 `usermod --expiredate 1` 不会! (5认同)
  • “不应使用值 0,因为它被解释为没有到期的帐户,或在 1970 年 1 月 1 日到期。” -- 影子(5) (2认同)

小智 31

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

  1. 您可以通过编辑锁定用户 /etc/passwd
  2. 通过直接passwd-l开关发出命令

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

方法#1

  1. 查找 nologin 的位置:/bin/nologin 或 /bin/sbin/nologin
  2. 打开终端并以 root 身份登录
  3. 类型 vi /etc/passwd

现在您正在按passwd文件Ins编辑文件。

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

root:x:0:0:root:/root:/bin/bash
Run Code Online (Sandbox Code Playgroud)

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

root:x:0:0:root:/root:/bin/nologin
Run Code Online (Sandbox Code Playgroud)

(或使用 /bin/sbin/nologin)

  1. 关闭 vi Esc :wq

方法#2

锁定用户: passwd -l username

解锁用户: passwd -u username

  • 在 Ubuntu 14.04 系统上,我找到了 `/usr/sbin/nologin` 而不是 `/bin/nologin`。 (2认同)
  • 提示:使用 `which nologin` 确定系统的正确路径 (2认同)

小智 7

您只需对/etc/passwd文件进行一些更改即可,这是一项非常简单的任务。

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