
Я выполнил эти две команды в терминале:
users
и
dscl . -read /Users/
и затем они говорят мне два разных результата. Второй дал мне длинный список, а первый просто показал мое имя пользователя на Mac.
Когда я гуглю "List users on Mac", большинство говорят мне использовать второй вариант. Однако когда я выполняю "man users", он показывает мне, что эта команда предназначена для "list current Users".
Не могли бы вы рассказать мне о различиях?
Также, как мне выполнить команду как пользователь mysql. Следующая команда не сработала:
mkdir mysqldir --user mysql
решение1
dscl . -read /Users/
не печатает ничего особенно интересного; вы, вероятно, имеете в виду dscl . -ls /Users
, которая печатает список учетных записей пользователей, определенных на вашем компьютере (включая большое количество обычно скрытых системных учетных записей). users
, с другой стороны, печатает список пользователейкто в данный момент вошел в системуна вашем компьютере (обычно только вы).
По вашему второму вопросу: вы можете использовать sudo
команду для запуска команд от имени другого пользователя (например sudo -u _mysql mkdir mysqldir
, ). Обратите внимание, что для этого требуются права администратора, и вам будет предложено ввести свой пароль для проверки.
решение2
Получить список всех пользователей (только их краткие имена):
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>
Конечно, вы можете прочитать справочные страницы, чтобы получить более подробную информацию.
решение3
Команда «users» выводит только список пользователей, которые в данный момент находятся в системе.
ОПИСАНИЕ пользователи перечисляет имена пользователей, которые в данный момент находятся в системе, в отсортированном порядке, разделенные пробелом, на одной строке.