मैक ओएस एक्स स्नो लेपर्ड लॉगऑन स्क्रीन से उपयोगकर्ताओं को छिपाएं


25

किसी तरह, मैं अपने ओएस पर मेरे _postgres उपयोगकर्ता के लिए एक पासवार्ड सेट करने में कामयाब रहा, इसे मैंने अपने सुपरयुजर / रूट के रूप में पोस्टग्रेज भूमिका पर सेट करने के बजाय। वैसे भी, मैं उस उपयोगकर्ता के साथ संघर्ष कर रहा हूं जो खाता अनुभाग और लॉगिन स्क्रीन में दिखा रहा है, जिससे मैं वास्तव में बचना चाहूंगा। मैंने इस बारे में कुछ डॉक्स के माध्यम से पढ़ा है, और *इसे ठीक करने के लिए आवश्यक सभी पासवर्ड होना चाहिए। लेकिन बिना किसी लाभ के dscl के साथ ऐसा करने के कई प्रयासों के बाद, मैं एक ऐसे बिंदु पर पहुंच गया हूं, जहां मुझे नहीं पता कि अब क्या करना है।

मुझे नहीं लगा कि ऐसा करना और भी कठिन होगा, लेकिन स्पष्ट रूप से मुझे कुछ याद आ रहा है, तो आप यह कैसे करते हैं?


आपके _postgres उपयोगकर्ता के लिए पासवर्ड रखना विशेष रूप से बुरा विचार नहीं है।
हसन चोप

1
पोस्टग्रेट्स डॉक्स वास्तव में विपरीत की सिफारिश करते हैं, इस तरह से केवल सिस्टम उपयोगकर्ता ही पोस्टग्रेज तक पहुंच सकते हैं, और याद रखने / सुरक्षा जोखिम के लिए एक कम पासवर्ड है।
googletorp

क्या आपने उपयोगकर्ता को हटाने और पुनः बनाने का प्रयास किया है?
चीलियन

हाँ, मैंने कोशिश की है कि वास्तव में कुछ बार। आपको किसी तरह से पासवार्ड को निष्क्रिय करने की आवश्यकता है क्योंकि पासवार्ड पर्याप्त नहीं है। यह दर्द बिंदु है जिसे मैं दूर नहीं कर पाया हूं।
२३:३३ पर गोगोलेटॉर्प

जवाबों:


31

सिस्टम उपयोगकर्ताओं को छिपाने के लिए सबसे आसान तरीका (यदि उनकी यूजर आईडी <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 जैसे सामानों के लिए बहुत से अलग-अलग सिस्टम उपयोगकर्ता हैं, और वे नहीं दिखाते हैं क्योंकि उनका पासवर्ड * '' के रूप में चिह्नित है। यह वही है जो मैं अपने पोस्टग्रेज उपयोगकर्ता के लिए पूरा करने की कोशिश कर रहा हूं। आपका समाधान बुरा होगा यदि मेरे पास अन्य उपयोगकर्ता हैं जिन्हें मैं छिपाना चाहता था, लेकिन दूसरों का उपयोग करके लॉगिन करने में सक्षम हो। मैं वास्तव में रूट पर जाना चाहूंगा और वास्तव में समस्या को छिपाने के बजाय इसे ठीक करूंगा।
googletorp

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

यह उपयोगकर्ता को छुपाता है। सुनिश्चित करें कि आप "*" उद्धृत करते हैं या यह काम नहीं करेगा।

EDIT : मैं गलती से अपने पासवर्ड को "*" पर सेट करके किसी उपयोगकर्ता को छिपाने में सक्षम नहीं होने की स्थिति में Googletorp को फिर से बनाने में कामयाब रहा, और मुझे पता चला कि इसे कैसे ठीक किया जाए। इस बार, मैंने dsimport का उपयोग करके एक उपयोगकर्ता बनाया था, जैसे:

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

लेकिन उस कमांड में, * के शाब्दिक एक-वर्ण पासवर्ड का प्रतिनिधित्व करने के लिए लिया जाता है *, और इसलिए dsimport उपयोगकर्ता के लिए एक प्रमाणीकरण संपत्ति बनाता है और पासवर्ड संपत्ति को उस छाया हैश के लिए सेट करता है *(जो ********dscl में दिखाता है , जैसा कि सभी के लिए है) पासवर्ड)। उसके बाद, dscl का उपयोग करके पासवर्ड को "*" पर सेट करने का प्रयास किया जाता है, ताकि पासवर्ड को *निष्क्रिय करने के बजाय, पासवर्ड को शाब्दिक रूप से सेट किया जा सके । समाधान अवांछित संपत्ति को हटाने के लिए है, और फिर पासवर्ड अक्षम करें:

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

यह उपयोगकर्ता को छुपाता है।


उद्धरण के बजाय, क्या आपने स्टार से बचने की कोशिश की है? dscl . -create /Users/test Password \*
एरिका 3

जब तक dscl "पासवर्ड" के बाद एक शाब्दिक "*" देखता है, तब तक कुछ भी हो जाता है।
लाक

7

बस मामले में आप एक व्यवहार्य समाधान नहीं मिला है (या मामले में किसी और गूगल से इस सवाल पाता है), के लिए उपयोगकर्ता के खोल की स्थापना /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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.