it-swarm.cn

如何完全禁用帐户?

如何完全禁用帐户? passwd -l不允许任何人使用密码登录帐户,但是您仍然可以通过私钥/公钥登录。我将如何完全禁用该帐户?作为快速修复,我将文件重命名为authorized_keys_lockme。还有另一种方法吗?

49
user4069

根据usermod(8)的正确方法是:

usermod --lock --expiredate 1970-01-02 <username>

(实际上,--expiredate可以是当前日期之前的任何日期,格式为YYYY-MM-DD。)


说明:

  • --lock锁定用户密码。但是,仍然可以通过其他方法(例如公共密钥)登录。

  • --expiredate YYYY-MM-DD在指定的日期禁用该帐户。根据 man shadow 5 1970-01-01是一个不明确的值,不得使用。

我已经在我的机器上测试过了。执行此命令后,无法使用密码登录也不能使用公钥登录。


要在以后重新启用该帐户,您可以运行:

usermod --unlock --expiredate '' <username>
61
Christoph Wurm

锁定密码,然后将Shell更改为/bin/nologin

Sudo usermod --lock --Shell /bin/nologin username

(或更简洁地说,Sudo usermod -L -s /bin/nologin username。)

10
mattdm

这是另一种简单的方法。您可以将用户帐户设置为过期。这将阻止该帐户的基于密码的登录和基于ssh密钥的登录,但是not触摸了密码。

锁定帐户:

# chage -E 0 username

用户帐户“用户名”将在系统上被锁定。要重新启用用户帐户,请执行以下操作。

解锁帐户:

# chage -E -1 username

用户帐户“用户名”将在您的系统上重新启用使用相同的密码。 'chage'二进制文件是Red Hat Linux上shadow-utils软件包或passwd在Debian Linux上的软件包。

4
miklosq

我没有足够的代表对Legate的答案发表评论,但我想分享一下此答案对另一个用例的帮助:

1.)有问题的帐户是运行应用程序的本地服务帐户,而不是最终用户帐户。

2.)最终用户以自己的身份使用ssh,并且Sudo /bin/su <user>由于服务帐户不能具有直接登录功能的审核跟踪要求而成为用户和管理应用程序。

3.)服务帐户必须具有有效的命令行管理程序(/bin/bash,而不是/sbin/nologin),因为企业调度平台(代理在本地以root用户身份运行)必须能够su - <user>并且没有su -s /bin/bash <user>完整Shell所具有的功能,远程运行作业对于包含多个服务器和数据库的较大批处理操作是必需的。


所以...

passwd -l <user>
不满足约束,因为公钥身份验证绕过PAM并仍允许直接登录。

usermod -s /sbin/nologin <user>
不满足约束条件,因为会破坏企业调度程序

usermod --lock --expiredate 1970-01-01 <user>
这是我们的赢家。远程登录已禁用,但root仍可以su <user>,其他用户也可以通过Sudo,因此调度程序可以正常运行,并且授权的最终用户可以根据需要成为目标服务帐户。

谢谢您的解决方案!

3
user1880028

要完全删除它,请使用userdel

请注意,如果删除帐户,则存在其用户ID仍将在文件系统中某个位置使用的风险,并且如果新用户以相同的用户ID进入,则新用户将继承这些文件的所有权。

您可能要更改已删除用户拥有的所有文件的所有者。

如果要稍后再添加该用户,请将其行从/etc/passwd(以及在Solaris /etc/shadow上)保存到诸如/etc/passwd_deleted的临时文件中。

这样,当您将其添加回去时,您可以使用相同的用户ID和相同的密码(在上述文件之一中加密)

免责声明:我是自己学习UNIX的,因此,如果有更好的方法来临时禁用用户,我不会感到惊讶。实际上,我什至不知道您在谈论什么私钥/公钥。另外,我确定有一个find命令可用于查找具有该所有者userid的文件

1
Bryan Field

有没有人尝试通过ssh_config来做到这一点?也许这可以帮助 http://www.techrepublic.com/blog/opensource/set-up-user-accounts-quickly-and-securely/86

另外,还要确保将PasswordAuthentication设置为no,以强制所有登录使用公钥。

0
icasimpan