web-dev-qa-db-ja.com

Mac OS X Snow Leopardログオン画面でユーザーを非表示にする

どういうわけか、自分のスーパーユーザー/ rootとして持っているpostgresロールに設定するのではなく、自分のOSに_postgresユーザーのパスワードを設定することができました。とにかく、それ以来、私はそのユーザーがアカウントセクションとログイン画面に表示されるのに苦労してきました。これに関するいくつかのドキュメントを読みました。パスワードを*に設定するだけで、これを修正できます。しかし、dsclを使用して、または使用せずにこれを何回か試した後、何をしたらよいかわからなくなってしまいました。

これを行うのは難しいとは思いませんでしたが、明らかに何かが足りないので、どうすればよいですか。

25
googletorp

ログインウィンドウでシステムユーザー(ユーザーIDが500未満の場合)を非表示にする最も簡単な方法は、次のコマンドを実行することです。

Sudo defaults write /Library/Preferences/com.Apple.loginwindow Hide500Users -bool TRUE

または、次のコマンドを実行して、ユーザー名のみを手動で非表示にすることもできます

Sudo defaults write /Library/Preferences/com.Apple.loginwindow HiddenUsersList -array-add '_postgres'

必要に応じて、[その他...]アイテムをログインウィンドウから非表示にするには:

Sudo defaults write /Library/Preferences/com.Apple.loginwindow SHOWOTHERUSERS_MANAGED -bool FALSE
31
Chealion
dscl . create /Users/test
dscl . create /Users/test UniqueID 420
dscl . create /Users/test PrimaryGroupID 420
dscl . create /Users/test UserShell /bin/bash
dscl . create /Users/test NFSHomeDirectory /tmp
dscl . create /Users/test RealName Test
dscl . create /Users/test Password test

これにより、sysprefs/Accountsに表示されるユーザーが作成されます。

dscl . create /Users/test Password "*"

これはユーザーを隠します。 「*」を引用符で囲んでください。そうしないと機能しません。

[〜#〜] edit [〜#〜]:ユーザーのパスワードを「*」に設定してもユーザーを非表示にできないというgoogletorpの状況を誤って再現し、修正方法を発見しました。今回は、次のようにdsimportを使用してユーザーを作成しました。

dsimport /dev/fd/0 /Local/Default I --template StandardUser << EOF
test:*:520:520:Test user:/Users/test:/bin/bash
EOF

ただし、このコマンドでは、*は*の1文字のリテラルパスワードを表すために使用されるため、dsimportはユーザーのAuthenticationAuthorityプロパティを作成し、パスワードプロパティを*(これは、すべてのパスワードと同様に、dsclでは********として表示されます)。その後、dsclを使用してパスワードを「*」に設定しようとすると、パスワードを無効にするのではなく、パスワードをリテラル*に設定し続けるだけです。解決策は、不要なプロパティを削除してから、パスワードを無効にすることです。

Sudo dscl . delete /Users/test AuthenticationAuthority
Sudo dscl . create /Users/test Password "*"

これはユーザーを隠します。

12
LaC

実行可能な解決策が見つからない場合(または他の誰かがGoogleからこの質問を見つけた場合)に備えて、ユーザーのシェルを/usr/bin/falseに設定すると、ユーザーがログインできなくなり、ログイン画面に表示されなくなりますandシステム設定から。そのためには、次のコマンドラインを使用します。

Sudo dscl . -change /Users/[username] UserShell /bin/bash /usr/bin/false

変更を元に戻すには:

Sudo dscl . -change /Users/[username] UserShell /usr/bin/false /bin/bash

ここで、[username]は非表示にするユーザーの名前です(あなたの場合は_postgres)。 dsclが最初に古い値を必要とする理由はわかりませんが、それがマンページに書かれていることであり、非常にうまく機能します。

7
zneak