Mac OS X Snow Leopardログオン画面からユーザーを隠す


25

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

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


_postgresユーザーにパスワードを設定することは、特に悪い考えではありません。
ハサーンチョップ

1
postgresのドキュメントでは、実際にはシステムユーザーのみがpostgresにアクセスできるという反対の方法が推奨されており、覚えるべきパスワードが1つ少なくなります。
googletorp 2009年

ユーザーを削除して再作成しようとしましたか?
Chealion

ええ、私は実際にそれを数回試しました。passwdを持たないだけでは不十分なので、どうにかしてpasswdを無効に設定する必要があります。これは私が克服できなかった問題点です。
googletorp 09年

回答:


31

ログインウィンドウでシステムユーザーを非表示にする最も簡単な方法(ユーザー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

2
これはややハックな解決策であり、実際には問題を「解決」せず、単に症状を隠します。mysqlやwhatnotなどのシステムユーザーがたくさんいますが、パスワードに「*」のマークが付いているため表示されません。これは私がpostgresユーザーのために達成しようとしていることです。非表示にしたい他のユーザーがいたとしても、他のユーザーを使用してログインできる場合、あなたのソリューションは悪いでしょう。問題を隠すのではなく、根本に行き、実際にこれを修正したいと思います。
googletorp 09年

1
これは素晴らしい答えであり、私の質問に正確に答えました。しかし、それはあなたが尋ねた質問そのものではないことはおそらく正しいでしょう。
ビルミシェル

3
Hide500Usersフラグは、ライオンの下ではもう機能しないようです。ライオンのための唯一の残りの二つのコマンドの仕事
アントニー

FileVault2をオンにしている場合、初期ブート画面でユーザーが非表示にならないことに注意してください。
ジェームズマクマホン

12
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 "*"

これにより、ユーザーが非表示になります。必ず「*」を引用してください。引用しないと機能しません。

編集:私は誤ってパスワードを「*」に設定することで、ユーザーを隠すことができないという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 "*"

これにより、ユーザーが非表示になります。


引用符の代わりに、星を脱出しようとしましたか? dscl . -create /Users/test Password \*
Eric3

dsclが「パスワード」の後にリテラル「*」を見る限り、何でもかまいません。
LaC

7

実行可能な解決策が見つからない場合(または他の誰かがGoogleからこの質問を見つけた場合)に、ユーザーのシェルを設定/usr/bin/false してログインを禁止し、ログイン画面システム環境設定から非表示にします。これを行うには、次のコマンドラインを使用します。

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古い値が最初に必要な理由はわかりませんが、それがマンページに書かれていることであり、非常にうまく機能します。


1
このソリューションは、そのユーザーのシェルを無効にするため、非常に貧弱です。データベースなどを再起動したい場合
-googletorp

@googletorp:sudo -s -u _postgres管理者アカウントからでもシェルを取得でき_postgresます; これは、彼UserShellがに設定されていても機能し/usr/bin/falseます。それに、パスワードを「パスワードなし」に設定しないと、あなたがやろうとして、アカウントも無効になりますか?
zneak
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.