Mac OS X Snow Leopard 로그온 화면에서 사용자 숨기기


25

어떻게 든, 나는 내 수퍼 유저 / 루트로 가지고있는 postgres 역할에서 설정하는 대신 내 OS에서 _postgres 사용자의 암호를 설정했습니다. 어쨌든, 나는 그 사용자가 계정 섹션과 로그인 화면에 표시하는 데 어려움을 겪어 왔으며 실제로 피하고 싶습니다. 이것에 대해 몇 가지 문서를 읽었으며 암호를 설정하면 *이 문제를 해결하는 데 필요한 모든 것이되어야합니다. 그러나 dscl을 사용하거나 사용하지 않고이 작업을 여러 번 시도한 후에 더 이상 무엇을 해야할지 알 수없는 시점에 도달했습니다.

나는 이것을하기가 어려울 것이라고 생각하지 않았지만 분명히 뭔가를 놓치고 있습니다. 어떻게합니까?


_postgres 사용자의 비밀번호를 갖는 것은 전혀 나쁜 생각이 아닙니다.
Hasaan Chop

1
postgres 문서는 실제로 시스템 사용자 만 postgres에 액세스 할 수있는 방식으로 반대를 권장하며, 보안 / 보안 위험을 기억하기 위해 암호가 하나 더 적습니다.
googletorp

사용자를 삭제하고 다시 작성해 보셨습니까?
Chealion

네, 실제로 몇 번 시도했습니다. passwd가 충분하지 않기 때문에 어떻게 든 passwd를 disabled로 설정해야합니다. 이것이 내가 극복 할 수 없었던 고통의 포인트입니다.
googletorp

답변:


31

로그인 창에서 시스템 사용자를 숨기는 가장 쉬운 방법은 다음 명령을 실행하는 것입니다.

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

1
이것은 훌륭한 답변이며 내 질문에 정확하게 대답했습니다. 그러나 그것은 당신이 묻는 질문과 정확히 일치하지 않을 것입니다.
Bill Michell

3
Hide500Users 플래그가 더 이상 사자 아래에서 작동하지 않는 것 같습니다. 나머지 두 명령 만 Lion에 적용됩니다
Antony

FileVault2가 켜져있는 경우 초기 부팅 화면에서 사용자를 숨기지 않습니다.
James McMahon

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

그러나이 명령에서 *는 문자 그대로의 한 문자 비밀번호를 나타내는 것으로 *간주되므로 dsimport는 사용자에 대한 AuthenticationAuthority 특성을 작성하고 password 특성을 쉐도우 해시 *( ********dscl에 표시됨)로 설정합니다. 비밀번호). 그런 다음 dscl을 사용하여 비밀번호를 "*"로 설정하려고하면 비밀번호를 *비활성화하는 대신 비밀번호를 리터럴 로 설정하면됩니다. 해결책은 원치 않는 속성을 삭제 한 다음 암호를 비활성화하는 것입니다.

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

이것은 사용자를 숨 깁니다.


따옴표 대신 별을 탈출하려고 했습니까? dscl . -create /Users/test Password \*
Eric3

dscl이 "Password"다음에 리터럴 "*"를 보는 한 아무 문제가 없습니다.
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.