
Executei esses dois comandos no terminal:
users
e
dscl . -read /Users/
e então eles me dizem dois resultados diferentes. O segundo me deu uma longa lista, enquanto o primeiro mostrou apenas meu nome de usuário no Mac.
Quando eu procuro no Google "Listar usuários no Mac", a maioria me diz para usar o segundo. No entanto, quando executo "man users", ele me mostra que este comando é para "listar os usuários atuais".
Você poderia me dizer as diferenças?
Além disso, como executo um comando como usuário mysql. O seguinte comando não funcionou:
mkdir mysqldir --user mysql
Responder1
dscl . -read /Users/
não imprime nada particularmente interessante; você provavelmente quer dizer dscl . -ls /Users
, que imprime uma lista de contas de usuário definidas em seu computador (incluindo muitas contas de sistema normalmente ocultas). users
, por outro lado, imprime uma lista de usuáriosque estão atualmente logadosno seu computador (geralmente só você).
Para sua segunda pergunta: você pode usar o sudo
comando para executar comandos como outro usuário (por exemplo sudo -u _mysql mkdir mysqldir
,). Observe que isso requer direitos de administrador e solicitará que você insira sua senha para verificação.
Responder2
Obtenha uma lista de todos os usuários (apenas seus nomes abreviados):
dscl . -list /Users
Obtenha informações detalhadas sobre um usuário específico:
dscl . -read /Users/<username>
Obtenha um valor específico nas informações de um usuário:
dscl . -read /Users/<username> <key>
Exemplos de <key>
são RecordName
, RealName
, UniqueID
e NFSHomeDirectory
.
Obtenha informações detalhadas do usuário emtodosUsuários:
dscl . -readall /Users
Obtenha um valor específico emtodosinformações dos usuários:
dscl . -readall /Users <key>
Esperamos que você perceba a diferença entre -list
e -read
. Vantagens adicionais: -plist
saída como XML, -search
permite especificar uma chave e um valor e você obterá uma saída indicando onde está esse valor.
2rs2ts:~/ $ dscl . -search /Users RealName "Andrew Garrett" [12:04:07]
2rs2ts RealName = (
"Andrew Garrett"
)
2rs2ts:~/ $ dscl -plist . -read /Users/nobody [12:05:29]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>dsAttrTypeStandard:AppleMetaNodeLocation</key>
<array>
<string>/Local/Default</string>
</array>
<key>dsAttrTypeStandard:GeneratedUID</key>
<array>
<string>FFFFEEEE-DDDD-CCCC-BBBB-AAAAFFFFFFFE</string>
</array>
<key>dsAttrTypeStandard:NFSHomeDirectory</key>
<array>
<string>/var/empty</string>
</array>
<key>dsAttrTypeStandard:Password</key>
<array>
<string>*</string>
</array>
<key>dsAttrTypeStandard:PrimaryGroupID</key>
<array>
<string>-2</string>
</array>
<key>dsAttrTypeStandard:RealName</key>
<array>
<string>Unprivileged User</string>
</array>
<key>dsAttrTypeStandard:RecordName</key>
<array>
<string>nobody</string>
</array>
<key>dsAttrTypeStandard:RecordType</key>
<array>
<string>dsRecTypeStandard:Users</string>
</array>
<key>dsAttrTypeStandard:SMBRID</key>
<array>
<string>501</string>
</array>
<key>dsAttrTypeStandard:UniqueID</key>
<array>
<string>-2</string>
</array>
<key>dsAttrTypeStandard:UserShell</key>
<array>
<string>/usr/bin/false</string>
</array>
</dict>
</plist>
Claro, você pode ler as páginas de manual para obter mais informações.
Responder3
O comando 'users' lista apenas os usuários logados no momento.
DESCRIÇÃO users lista os nomes de login dos usuários atualmente no sistema, em ordem de classificação, separados por espaço, em uma única linha.