Mac OSX: ユーザーを一覧表示する users vs dscl コマンド

Mac OSX: ユーザーを一覧表示する users vs dscl コマンド

ターミナルで次の 2 つのコマンドを実行しました。

users

そして

dscl . -read /Users/

すると、2 つの異なる結果が表示されます。2 番目には長いリストが表示されましたが、最初の結果には Mac 上のユーザー名だけが表示されました。

「Mac でユーザーを一覧表示する」を Google で検索すると、ほとんどの場合、2 番目の方法を使用するように指示されます。ただし、「man users」を実行すると、このコマンドは「現在のユーザーを一覧表示する」コマンドであることが示されます。

違いを教えていただけますか?

また、mysql ユーザーとしてコマンドを実行するにはどうすればいいですか。次のコマンドは機能しませんでした。

mkdir mysqldir --user mysql

答え1

dscl . -read /Users/は特に興味深いものを出力しません。おそらく、dscl . -ls /Usersコンピュータ上で定義されているユーザーアカウントのリストを出力する (通常は非表示のシステムアカウントも多数含む) を意味しているのでしょう。users一方、 はユーザーのリストを出力します。現在ログインしている人あなたのコンピューター上(通常はあなただけ)。

2 番目の質問について: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 は、現在システムに登録されているユーザーのログイン名を、スペースで区切られたソート順で 1 行にリストします。

関連情報