Mac OSX: comando users vs dscl para listar usuário

4

Eu executei esses dois comandos no terminal:

users

e

dscl . -read /Users/

e depois eles me dizem dois resultados diferentes. O segundo me deu uma longa lista enquanto o primeiro mostrava meu nome de usuário no Mac.

Quando busco no Google por "Listar usuários no Mac", a maioria me diz que usa o segundo. No entanto, quando eu executo "man users", ele me mostra que esse comando é "listar 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
    
por petwho 08.05.2013 / 07:59

3 respostas

6

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 que estão definidas em seu computador (incluindo muitas contas do sistema normalmente ocultas). users , por outro lado, imprime uma lista de usuários que estão logados no momento em seu computador (geralmente só você).

Para sua segunda pergunta: você pode usar o comando sudo para executar comandos como outro usuário (por exemplo, sudo -u _mysql mkdir mysqldir ). Observe que isso exige direitos de administrador e solicitará que você insira sua senha para verificação.

    
por 08.05.2013 / 16:51
15

Obtenha uma lista de todos os usuários (apenas seus nomes curtos):

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 em todos usuários:

dscl . -readall /Users

Obtenha um valor específico em todas informações dos usuários:

dscl . -readall /Users <key>

Espero que você perceba a diferença entre -list e -read . Guloseimas adicionais: -plist de saídas como XML, -search permite que você especifique uma chave e um valor e obterá uma saída indicando onde esse valor está.

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 man pages para obter mais informações.

    
por 17.07.2013 / 21:06
0

O comando 'users' apenas lista os usuários atualmente conectados.

DESCRIÇÃO      usuários lista os nomes de login dos usuários atualmente no sistema, em      ordem classificada, espaço separado, em uma única linha.

    
por 08.11.2013 / 21:27

Tags