对于所有 OS X 帐户

对于所有 OS X 帐户

是否有任何可能的解决方案可以从 CLI(例如通过 SSH)禁用用户?必须有一个 dscl 命令。或者是否有我可以相应地设置的 dsAttrTypeStandard 属性?

有什么指点吗?

答案1

对于所有 OS X 帐户

pwpolicy不适用于 OS X 客户端上的本地帐户。但是你可以使用 dscl 命令直接编辑这些身份验证设置。此方法保证适用于用户级 OS X 帐户(登录窗口中列出的来宾、管理员和其他常规帐户)。使用此方法,帐户是否使用 OS-X 服务器/LDAP 帐户进行管理并不重要。此方法也适用于所有 OSX 系统帐户(否则您将禁用其登录 shell)。

就是这样:

# Read the AuthenticationAuthority key
dscl . -read /Users/username AuthenticationAuthority

AuthenticationAuthority: ;Kerberosv5;; \
username@LKDC:SHA1.41BE28E3B64EB62A42D0673968B9591DE18210F5; \
LKDC:SHA1.07264456235E49D45C4B99FC9549FC366CE32343; ; \
ShadowHash;HASHLIST:<SALTED-SHA1>

禁用

如果尚未禁用,则附加DisabledUser到此键的值。使用分号作为字段分隔符。多余/空白; ;字段将被忽略。

dscl . -append /Users/username AuthenticationAuthority ";DisabledUser;"

查看

要检查帐户的启用/禁用状态:

dscl . -read /Users/username AuthenticationAuthority | grep DisabledUser

对于 OSX 系统帐户:这些帐户一开始没有AuthenticationAuthority密钥。因此,检查其启用/禁用状态取决于UserShell属性是否具有有效的登录 shell。因此,当 shellAuthenticationAuthority不存在时,请检查该 shell。

使能够

要重新启用用户帐户,我们只需DisabledUser从 AuthenticationAuthority 条目中删除子字符串。然后我们使用 cmddscl . -create并写回整个内容。

dscl . -read /Users/username AuthenticationAuthority | \
sed 's/AuthenticationAuthority: //;s/DisabledUser//g;s/[; ]*$//' | \
xargs dscl . -create /Users/username AuthenticationAuthority

获取所有用户的 AuthenticationAuthority 凭证:

dscl . -list /Users AuthenticationAuthority

系统账户:请记住系统账户还必须有一个有效的登录 shell。

答案2

这在 10.5 和 10.6 版的 LDAP/OD 帐户中有效:

pwpolicy -a diradmin -u ajohnson -setpolicy "isDisabled=1"

或者对于本地帐户:

sudo dscl . -create /Users/ajohnson UserShell /usr/bin/false

将 ajohnson 替换为您想要禁用的用户的短用户名。

要重新启用,只需将“isDisabled=0”设置为 1。或者,对于本地帐户,将其设置为/etc/shells

pwpolicy例子来自用户管理文档(Snow Leopard)或第 106 页命令行管理 Leopard手动的。

答案3

我们有一些 OSX 客户端从 Linux LDAP 服务器进行身份验证。对我有用的方法是将用户的 loginShell 属性设置为 /usr/bin/false。这似乎可以阻止 SSH 和图形登录。

相关内容