Mac OSX: 사용자 및 사용자 목록을 표시하는 dscl 명령

Mac OSX: 사용자 및 사용자 목록을 표시하는 dscl 명령

터미널에서 다음 두 명령을 실행했습니다.

users

그리고

dscl . -read /Users/

그리고 그들은 나에게 두 가지 다른 결과를 말해줍니다. 두 번째는 나에게 긴 목록을 제공했고 첫 번째는 Mac에서 내 사용자 이름을 표시했습니다.

Google에서 "Mac의 사용자 목록"을 검색하면 대부분 두 번째 항목을 사용한다고 알려줍니다. 그러나 "man 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>있습니다 .RecordNameRealNameUniqueIDNFSHomeDirectory

자세한 사용자 정보 얻기모두사용자:

dscl . -readall /Users

특정 값을 가져옵니다.모두사용자 정보:

dscl . -readall /Users <key>

-list와 의 차이점을 알아차렸기를 바랍니다 -read. 추가 장점: -plistXML로 출력되며 -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' 명령은 현재 로그인된 사용자만 나열합니다.

설명 users는 현재 시스템에 있는 사용자의 로그인 이름을 공백으로 구분하여 정렬된 순서로 한 줄에 나열합니다.

관련 정보