查询和修改 macOS 本地目录服务中的用户、组与属性记录。
macOS 的本地账户存放在目录服务中,dscl . 表示本地节点。读操作安全:-list /Users、-read /Users/短名、-read /Groups/admin GroupMembership;写操作需要 sudo,包括 -create、-append、-delete、-passwd。现代 macOS 没有 NetInfo,底层是 /var/db/dslocal/nodes/Default/ 下的 plist,但不要直接编辑这些文件。
边界:dscl 只改目录记录,不创建家目录、不同步钥匙串密码,也不处理 SecureToken。创建用户优先用 sysadminctl 或系统设置;改登录密码用 passwd,用 dscl . -passwd 可能导致钥匙串与登录密码不一致。加入组后通常要重新登录才在图形会话生效。
# 1. 列出本地用户,排除以下划线开头的系统账户
% dscl . -list /Users | grep -v '^_'
# 2. 查看当前用户的 UID、主组、家目录和登录 shell
% dscl . -read /Users/$USER UniqueID PrimaryGroupID NFSHomeDirectory UserShell
# 3. 查看管理员组成员;改动前先留档
% dscl . -read /Groups/admin GroupMembership
# 4. 找出 UID 最大的几个账户,排查手工创建造成的冲突
% dscl . -list /Users UniqueID | sort -k2,2n | tail -5
# 5. 把用户加入管理员组;下次登录生效,验证前不要关闭当前管理会话
% sudo dscl . -append /Groups/admin GroupMembership alice
% dscl . -read /Groups/admin GroupMembership
# 6. 检查账户是否持有 SecureToken(FileVault 相关)
% dscl . -read /Users/$USER AuthenticationAuthority | grep -o SecureToken
dscl . -passwd 改登录密码,可能导致登录密码与钥匙串密码不一致,用户下次登录看不到原有钥匙串;应使用系统设置或 passwd。-create 用户时漏掉 UniqueID、PrimaryGroupID、NFSHomeDirectory、UserShell,账户能建出来但无法正常登录;优先用 sysadminctl -addUser。dscl . -delete /Users/name,家目录和钥匙串仍在磁盘上;删除前备份,再明确清理 /Users/name。id -Gn alice 可能仍显示旧组;让用户重新登录,必要时先 dscacheutil -flushcache。dscl . -list /Users UniqueID | sort -k2,2n 检查,UID 低于 500 通常保留给系统账户。AuthenticationAuthority 不显示 SecureToken 不代表账户完全不可用,但 FileVault 解锁和软件更新可能需要它;不要用 dscl 强行伪造。sudo — 修改目录记录需要管理员权限。security — 钥匙串密码与登录密码的关系。defaults — 部分账户相关偏好。useradd、passwd — 对照 Linux 用户管理。net — 对照 Windows 本地账户与组命令。合上页面,先回答,再展开对照。
dscl . 里的点号代表什么?网络目录账户能用它看到吗?dscl . -passwd 修改登录密码?admin 组后,为什么当前终端可能仍没有管理员权限?. 看不到。passwd。
小程序版
微信扫码,随时查命令