Mac OSX: usuarios vs comando dscl para enumerar usuarios

Mac OSX: usuarios vs comando dscl para enumerar usuarios

Ejecuté esos dos comandos en la terminal:

users

y

dscl . -read /Users/

y luego me dicen dos resultados diferentes. El segundo me dio una lista larga mientras que el primero solo mostró mi nombre de usuario en Mac.

Cuando busco en Google "Listar usuarios en Mac", la mayoría me dirá que use el segundo. Sin embargo, cuando ejecuto "usuarios masculinos", me muestra que este comando es para "enumerar los usuarios actuales".

¿Podrías decirme las diferencias?

Además, ¿cómo ejecuto un comando como usuario de MySQL? El siguiente comando no funcionó:

mkdir mysqldir --user mysql

Respuesta1

dscl . -read /Users/no imprime nada particularmente interesante; probablemente te refieres a dscl . -ls /Users, que imprime una lista de cuentas de usuario definidas en tu computadora (incluidas una gran cantidad de cuentas del sistema normalmente ocultas). users, por otro lado, imprime una lista de usuariosquienes actualmente están conectadosen su computadora (generalmente solo usted).

Para su segunda pregunta: puede usar el sudocomando para ejecutar comandos como otro usuario (por ejemplo sudo -u _mysql mkdir mysqldir). Tenga en cuenta que esto requiere derechos de administrador y le pedirá que ingrese su contraseña para su verificación.

Respuesta2

Obtenga una lista de todos los usuarios (solo sus nombres cortos):

dscl . -list /Users

Obtenga información de usuario detallada sobre un usuario en particular:

dscl . -read /Users/<username>

Obtenga un valor particular en la información de un usuario:

dscl . -read /Users/<username> <key>

Ejemplos de <key>son RecordName, RealName, UniqueIDy NFSHomeDirectory.

Obtenga información detallada del usuario entodousuarios:

dscl . -readall /Users

Obtener un valor particular entodoinformación de los usuarios:

dscl . -readall /Users <key>

Ojalá notes la diferencia entre -listy -read. Beneficios adicionales: -plistresultados como XML, -searchle permite especificar una clave y un valor y obtendrá un resultado que indica dónde está ese 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>

Por supuesto, puede leer las páginas de manual para obtener más información.

Respuesta3

El comando 'usuarios' solo enumera los usuarios actualmente conectados.

DESCRIPCIÓN usuarios enumera los nombres de inicio de sesión de los usuarios actualmente en el sistema, en orden, separados por espacios, en una sola línea.

información relacionada