ซ่อนผู้ใช้จากหน้าจอเข้าสู่ระบบ Mac OS X Snow Leopard


25

อย่างใดฉันจัดการเพื่อตั้ง passwd สำหรับผู้ใช้ _postgres ของฉันในระบบปฏิบัติการของฉันแทนที่จะตั้งค่าในบทบาท postgres ที่ฉันมีเป็น superuser / root ของฉัน อย่างไรก็ตามตั้งแต่นี้มาฉันได้รับผลกระทบจากผู้ใช้รายนั้นในส่วนบัญชีและหน้าจอเข้าสู่ระบบซึ่งฉันต้องการหลีกเลี่ยง ฉันได้อ่านเอกสารเกี่ยวกับเรื่องนี้แล้วและตั้งค่ารหัสผ่านให้*เป็นสิ่งที่จำเป็นสำหรับการแก้ไข แต่หลังจากความพยายามหลายครั้งในการทำสิ่งนี้ทั้งที่มีและไม่มี dscl ถึงไม่มีประโยชน์ฉันก็ถึงจุดที่ฉันไม่รู้จะทำอะไรอีกแล้ว

ฉันไม่คิดว่ามันจะเป็นการยากที่จะทำสิ่งนี้ แต่เห็นได้ชัดว่าฉันขาดอะไรบางอย่างไปคุณจะทำอย่างไร


การมีรหัสผ่านสำหรับผู้ใช้ _postgres ของคุณไม่ใช่ความคิดที่ไม่ดีเลย
Hasaan Chop

1
docs postgres แนะนำจริงตรงกันข้ามซึ่งเป็นวิธีที่ผู้ใช้ระบบเท่านั้นที่สามารถเข้าถึง postgres และมีรหัสผ่านน้อยกว่าหนึ่งที่จะจำ / เสี่ยงด้านความปลอดภัย
googletorp

คุณลองลบและสร้างผู้ใช้ใหม่หรือไม่
Chealion

ใช่ฉันได้ลองแล้วสองสามครั้งจริง ๆ คุณต้องตั้งค่ารหัสผ่านเป็นปิดใช้งานเนื่องจากไม่มีรหัสผ่านไม่เพียงพอ นี่คือจุดปวดที่ฉันไม่สามารถเอาชนะได้
googletorp

คำตอบ:


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

1
นี่เป็นคำตอบที่ยอดเยี่ยมและตอบคำถามของฉันอย่างแม่นยำ แต่คุณอาจพูดถูกไม่ใช่คำถามที่คุณถาม
Bill Michell

3
Hide500 ผู้ใช้งานธงดูเหมือนว่าจะไม่ทำงานภายใต้สิงโตอีกต่อไป มีเพียงสองคำสั่งที่เหลือเท่านั้นที่ใช้ได้กับ 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 สำหรับผู้ใช้และตั้งค่าคุณสมบัติรหัสผ่านเพื่อกัญชาเงา*(ซึ่งแสดงให้เห็นว่าขึ้นเป็น********ใน 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ต้องการค่าเก่าก่อน แต่นั่นคือสิ่งที่ manpage พูดและทำงานได้ค่อนข้างดี


1
โซลูชันนี้แย่มากเนื่องจากปิดการใช้งานเชลล์สำหรับผู้ใช้นั้นสิ่งที่ฉันต้องการใช้ ถ้าฉันต้องการรีสตาร์ทฐานข้อมูลเป็นต้น
googletorp

@googletorp: คุณยังสามารถทำได้sudo -s -u _postgresจากบัญชีผู้ดูแลระบบเพื่อรับเชลล์เป็น_postgres; นี้จะทำงานแม้ว่าเขาถูกตั้งค่าให้UserShell /usr/bin/falseนอกจากนี้ไม่ได้ตั้งค่ารหัสผ่านเป็น "ไม่มีรหัสผ่าน" ตามที่คุณพยายามจะปิดการใช้งานบัญชีหรือไม่
zneak
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.