4

Я выполнил эти две команды в терминале:

users

а также

dscl . -read /Users/

а потом они говорят мне два разных результата. Второй дал мне длинный список, в то время как первый только показал мое имя пользователя на Mac.

Когда я найду Google для "Список пользователей на Mac", большинство из них скажет мне использовать второй. Однако, когда я выполняю "man users", это показывает, что эта команда "выводит список текущих пользователей".

Не могли бы вы сказать мне различия?

Кроме того, как я могу выполнить команду от имени пользователя mysql. Следующая команда не работает:

mkdir mysqldir --user mysql

3 ответа3

16

Получить список всех пользователей (только их короткие имена):

dscl . -list /Users

Получить подробную информацию о конкретном пользователе:

dscl . -read /Users/<username>

Получить конкретное значение в информации пользователя:

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

Примерами <key> являются RecordName , RealName , UniqueID и NFSHomeDirectory .

Получите подробную информацию обо всех пользователях:

dscl . -readall /Users

Получить конкретное значение в информации всех пользователей:

dscl . -readall /Users <key>

Надеюсь , вы заметили разницу между -list и -read Дополнительные плюсы : -plist выводит в виде XML, -search позволяет вам указать ключ и значение, и вы получите вывод, указывающий, где это значение.

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>

Конечно, вы можете прочитать справочные страницы, чтобы получить больше информации.

6

dscl . -read /Users/ не печатает ничего особенно интересного; Вы, вероятно, имеете в виду dscl . -ls /Users , который печатает список учетных записей пользователей, определенных на вашем компьютере (включая множество обычно скрытых системных учетных записей). users , с другой стороны, печатает список пользователей , которые в данный момент вошли в систему на вашем компьютере (обычно только вы).

Ваш второй вопрос: вы можете использовать команду sudo для запуска команд от имени другого пользователя (например, sudo -u _mysql mkdir mysqldir). Обратите внимание, что для этого требуются права администратора, и вам будет предложено ввести пароль для проверки.

0

Команда «users» выводит список только тех, кто в данный момент вошел в систему.

ОПИСАНИЕ users перечисляет имена пользователей, которые в настоящее время находятся в системе, в отсортированном порядке, через пробел, в одной строке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .