nlu*_*oni 5 user-accounts passwords command-line administration macos
尽管我很想弄清楚这个问题,但在我已经有了一个有效的解决方案(命令行创建)时,在删除一个愚蠢的键上已经投入了太多时间。我将删除用户并运行我需要的命令。得到答案仍然很棒,但我认为这不会发生。
我有一个连接到buildbot的奴隶网络,每个奴隶都有一个 buildbot 用户帐户。我希望他们的帐户没有密码(阅读:不是空密码)。我在其中一个盒子上成功地做到了这一点,这是远程创建用户而不是在过程中设置密码的重要结果。
我通过 GUI 设置的另外两台 OSX 机器确实有密码,我想知道是否有办法删除密码而不将其留空。我查看了一些关于dscland的文档passwd,但他们没有我正在寻找的选项。我可以将它们设置为一些随机的数字串。那会同样有效吗?我的描述是否等同于拥有一个空密码并锁定帐户(如针对 linux 的讨论)?如果是这样,我如何锁定 OSX 帐户?
我的问题的第二部分是关于我最初创建用户的方式。下面是命令,它们似乎工作正常,但我想知道我是否遗漏了一些重要的设置——尽管 buildslave 确实启动并执行了作业。
sudo dscl . -create /Users/buildbot
sudo dscl . -create /Users/buildbot UserShell /bin/bash
sudo dscl . -create /Users/buildbot RealName "BuildBot"
sudo dscl . -create /Users/buildbot UniqueID <ID>
sudo dscl . -create /Users/buildbot PrimaryGroupID 61
sudo dscl . -create /Users/buildbot NFSHomeDirectory /Users/buildbot
sudo mkdir /Users/buildbot
sudo chown buildbot /Users/buildbot
Run Code Online (Sandbox Code Playgroud)
编辑:对于已经拥有通过系统偏好设置创建的带有密码的帐户的机器,Dan Black 建议的命令实际上并没有删除密码密钥,
sudo dscl . -delete /Users/buildbot Password
sudo dscl . -read /Users/buildbot Password
Run Code Online (Sandbox Code Playgroud)
第二个命令的输出是,
Password: *******
Run Code Online (Sandbox Code Playgroud)
继续好像密码被删除一样,我运行
sudo dscl . -create /Users/buildbot Password '*'
su buildbot
Run Code Online (Sandbox Code Playgroud)
并且之前的密码访问该帐户。这是在 OSX 10.5.8 和 10.6.8 上。
sudo dscl . -change /Users/buildbot Password 'OLDPASS' '*'
su buildbot
Run Code Online (Sandbox Code Playgroud)
这也不会更改密码,并且 OLDPASS 可以在要求输入密码时切换用户。
这是我遇到问题的用户的完整键值对输出 --created 通过 sys-preferences。为了澄清不一致,这台机器使用用户'developer'而不是'buildbot',但之前的命令都是一样的,只是明显的替换
Amoy:~ lyn$ sudo dscl . -read /Users/developer
dsAttrTypeNative:_writers_hint: developer
dsAttrTypeNative:_writers_jpegphoto: developer
dsAttrTypeNative:_writers_LinkedIdentity: developer
dsAttrTypeNative:_writers_passwd: developer
dsAttrTypeNative:_writers_picture: developer
dsAttrTypeNative:_writers_realname: developer
dsAttrTypeNative:_writers_UserCertificate: developer
AppleMetaNodeLocation: /Local/Default
AuthenticationAuthority: ;ShadowHash; ;Kerberosv5;;developer@LKDC:SHA1.08FF6FDC52096FD6C53DEDEE75A2F9315F964B22;LKDC:SHA1.08FF6FDC52096FD6C53DEDEE75A2F9315F964B22;
AuthenticationHint:
developer for auto testing
GeneratedUID: BF95A834-A7F1-4DDD-8DFB-6B80B8120CA7
NFSHomeDirectory: /Users/developer
Password: ********
Picture:
/Library/User Pictures/Fun/Flippers.tif
PrimaryGroupID: 20
RealName: Developer
RecordName: developer
RecordType: dsRecTypeStandard:Users
UniqueID: 512
UserShell: /bin/bash
Run Code Online (Sandbox Code Playgroud)
我认为您对 @Daniel Beck 的回答遇到的问题是密码没有存储在用户记录的“密码”属性中,而是作为 /var/db/shadow/hash/USERGUID 中的影子哈希文件和 AuthenticationAuthority 属性存储仍然指出这一点。这似乎对我有用:
sudo dscl . -delete /Users/buildbot AuthenticationAuthority
buildbotGUID=$(dscl . -read /Users/buildbot GeneratedUID | awk '{print $2}')
sudo rm "/var/db/shadow/hash/$buildbotGUID" "/var/db/shadow/hash/$buildbotGUID.state"
Run Code Online (Sandbox Code Playgroud)
理想情况下,您还应该删除帐户的 Kerberos 主体(OS X 客户端运行自己的“本地”Kerberos 领域,并且它偶尔会陷入困境)。但这有点复杂,我认为很大程度上取决于您使用的 OS X 版本。
顺便说一句,如果上面的方法不能完全解决问题,请尝试以下操作:
sudo dscl . -create /Users/buildbot AuthenticationAuthority ";DisabledUser;"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5787 次 |
| 最近记录: |