मैं घर की निर्देशिका को सुरक्षित रूप से अपडेट करने का प्रयास कर रहा हूं /etc/passwd
, लेकिन सिगविन द्वारा प्रदान नहीं किए जाने के लिए मानक लिनक्स के बर्तन - usermod और vipw -।
क्या कोई मुझे बता सकता है कि उन्होंने साइगविन में इसे कैसे बदल दिया?
मैं घर की निर्देशिका को सुरक्षित रूप से अपडेट करने का प्रयास कर रहा हूं /etc/passwd
, लेकिन सिगविन द्वारा प्रदान नहीं किए जाने के लिए मानक लिनक्स के बर्तन - usermod और vipw -।
क्या कोई मुझे बता सकता है कि उन्होंने साइगविन में इसे कैसे बदल दिया?
जवाबों:
संपादित करें: सिगविन (1.7.34 और उससे आगे) के हाल के संस्करणों के लिए, यह नया प्रश्न देखें ।
Sblundy के उत्तर की तरह, आप हमेशा हाथ से संपादित कर सकते हैं।
लेकिन अगर आप इसे "आधिकारिक" तरीके से करना चाहते हैं, तो साइबर-विशिष्ट mkpasswd
कमांड का उपयोग करें । नीचे आधिकारिक डॉक्स से एक स्निपेट दिया गया है mkpasswd
:
उदाहरण के लिए, यह आदेश:
उदाहरण 3.11। एक वैकल्पिक होम रूट का उपयोग करना
$ mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
स्थानीय उपयोगकर्ताओं के होम निर्देशिकाओं को विंडोज 'प्रोफाइल' डायरेक्टरी में रखा जाएगा।
Cygwin उपयोगिताएँ प्रलेखन पृष्ठ (जिसमें शामिल हैं mkpasswd
) पर वर्णित अन्य वास्तव में उपयोगी आदेशों का एक समूह है । cygpath
उपरोक्त उदाहरण में उपयोग इन साइबर-विशिष्ट उपकरणों में से एक है।
जब आप इस पर होते हैं, तो आप शायद विंडोज डॉक्यूमेंटेशन के साथ यूजिंग सिग्विन को भी प्रभावी ढंग से पढ़ना चाहते हैं । वहाँ वास्तव में अच्छी सलाह का एक गुच्छा है।
-d
डोमेन के लिए) $ mkpasswd -l -d -p "$(cygpath -H)" > /etc/passwd
यह मेरे लिए काम नहीं किया - यह मूल रूप से लटका हुआ है। चूँकि मैं इस मशीन का उपयोग करने वाला एकमात्र व्यक्ति हूं, इसलिए मैं इस विकल्प का उपयोग कर सकता हूं, जो सुरक्षित होना चाहिए चाहे आप एक डोमेन पर हों या नहीं ( -c
वर्तमान उपयोगकर्ता के लिए है) $ mkpasswd -l -c -p "$(cygpath -H)" > /etc/passwd
$HOME
। इसे ठीक करने के लिए कोई भी विचार?
मैंने अपने सभी सागविन गोले से बाहर निकल कर एक पाठ संपादक में हाथ से संपादन किया। अब तक सब ठीक है।
नोट: "दस्तावेज़ और सेटिंग" निर्देशिका में रिक्त स्थान से बच नहीं। प्रवेश जैसा दिखेगा
user:...:/cygdrive/c/Documents and Settings/user:/bin/bash
रेखा :
चरित्र पर अंकित है ।
मैंने जो सबसे आसान उत्तर पाया है, वह है, आपके विंडोज होम / यूजरप्रोफाइल डायरेक्टरी के लिए एक सॉफ्ट लिंक बनना / होम करना
cd /
mv home oldhome
ln -s "$(cygpath -H)" home
मैंने cygpath का उपयोग किया क्योंकि यह विंडोज़ के वर्तमान संस्करण पर गृह निर्देशिका के लिए उचित स्थान प्राप्त करेगा। मेरे बॉक्स पर cygpath -H
लौटता है/cygdrive/c/Users
cygwin -H
। यह सबसे समझदार स्थान है, और विंडोज 7 के बाद से इसके मार्ग में भी कोई जगह नहीं है।
वर्तमान उपयोगकर्ता के लिए निम्नलिखित मेरे लिए काम करते हैं:
मैंने इसकी पुष्टि की कि यह बिना किसी तर्क के ssh-keygen चलाकर काम करता है। इस परिवर्तन को करने के बाद, अब ऐप को / home / उपयोगकर्ता के बजाय / cygdrive / c / Users / user की कुंजी को बचाने के लिए डिफॉल्ट करता है।
मैं अगर सेटिंग घर के लिए आवश्यक है पता नहीं है, लेकिन मैं Cygwin अनौपचारिक Cygwin समर्थन के लिए कछुआ की आधिकारिक प्रलेखन उपयोग करने के साथ TortoiseGit स्थापित करने के लिए निर्देशों के अनुसार वैसे भी यह किया यहाँ । गृह निर्देशिका परिवर्तन को पहचानने के लिए ssh-keygen के लिए पर्याप्त नहीं होने पर अकेले घर की स्थापना करना।
इसके अलावा, ध्यान दें कि इस मुद्दे पर Cygwin के आधिकारिक दस्तावेज यहां मिल सकते हैं ।
64-बिट Cygwin v1.7.35 का उपयोग करके विंडोज 7 में पुष्टि की गई।
मैं हमेशा गृह को कंप्यूटर गुण में एक उपयोगकर्ता-विशिष्ट पर्यावरण चर के रूप में सेट करता हूं।
अपने होम डाइरेक्टरी के पथ में स्थान होने के कारण होने वाली समस्याओं से बचने के लिए, विंडोज 'प्रोफाइल' डायरेक्टरी के संक्षिप्त रूप का उपयोग करें - अर्थात /cygdrive/c/DOCUME~1/user
।
आप इसे कमांड टाइप करके कर सकते हैं:
mkpasswd -l -p "$(cygpath $(cygpath -dH))" > /etc/passwd
मुझे अपनी साइबरविन इंस्टॉलेशन सिंक को एक पेन ड्राइव और दूसरे कंप्यूटर पर रखना पसंद है, इसलिए मुझे होम डायरेक्टरी में हार्ड-कोडिंग से नफरत है। मैं निम्नलिखित cygwin.bat का उपयोग करता हूं:
echo off
SETLOCAL
set SHELL=\\bin\\bash
set HOME=%~dp0..\..\doc\unix
bin\bash --login -i
ENDLOCAL
सेटलॉक और ENDLOCAL यह सुनिश्चित करते हैं कि SHELL और HOME अन्य कार्यक्रमों के लिए मौजूदा env वेरिएबल को क्लोब न करें। HOME=%~dp0..\..\doc\unix
घर को दो निर्देशिकाओं में सेट करें, doc / unix उपनिर्देशिका में। फिर .... \ doc \ unix.bashrc में, मैं शामिल करता हूं PATH="/bin:/usr/local/bin:/usr/X11R6/bin:/usr/bin"
। मैंने start /wait %CD%\bin\bash
बैश शुरू करने के लिए उपयोग नहीं किया , क्योंकि मैं Console2 का उपयोग कर रहा हूं , इसलिए मुझे अतिरिक्त cmd विंडो की आवश्यकता नहीं है।
यह मेरे लिए एक स्थायी, गैर-पोर्टेबल, गैर-नेटवर्क समाधान के लिए काम करता है; यानी विंडोज में होम एनवायरनमेंट वेरिएबल को स्थायी रूप से सेट करना।
ध्यान दें कि यह ssh या टेलनेट सत्र को प्रभावित नहीं करता है जो हमेशा / etc / passwd को संदर्भित करता है
रेफरी: साइग्विन की स्थापना- मेरा गृह पर्यावरण चर वह नहीं है जो मैं चाहता हूं।
के लिए वर्तमान उपयोगकर्ता (जरूरतों एक बार प्रति उपयोगकर्ता को चलाने के लिए) ::
reg add HKCU\Environment /v HOME /t REG_EXPAND_SZ /d ^%USERPROFILE^%
के लिए नए उपयोगकर्ता:
reg add HKU\.DEFAULT\Environment /v HOME /t REG_EXPAND_SZ /d ^%USERPROFILE^%
नोट: प्रतिशत-प्रतिशत% से पहले कैरेट ^
इस reg फ़ाइल को आयात करें ( वर्तमान उपयोगकर्ता):
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Environment]
"HOME"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
00,45,00,25,00,00,00
के लिए नए उपयोगकर्ताओं:
Windows Registry Editor Version 5.00
[HKU\.DEFAULT\Environment]
"HOME"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
00,45,00,25,00,00,00
Regedit में, के तहत:
के लिए वर्तमान उपयोगकर्ता:
HKEY_CURRENT_USER\Environment
के लिए नए उपयोगकर्ता:
HKU\.DEFAULT\Environment
गृह को एक नए विस्तार योग्य स्ट्रिंग मान के रूप में बनाएं (* REG_EXPAND_SZ *) और % USERPROFILE% में डालें
मूल जवाब द्वारा क्रिस्टोफर से कहीं और
Cygwin 1.7.34 या उच्चतर Cygwin का उपयोग करने वालों के लिए इनवॉइसिंग का समर्थन करता है कि कैसे घर की निर्देशिका, लॉगिन शेल, और gecre की जानकारी प्राप्त करें /etc/nsswitch.conf
। यह सिगविन उपयोगकर्ता गाइड अनुभाग में विस्तृत है:
यदि आपने पहले एक ऐसी फ़ाइल /etc/passwd
या /etc/group
फ़ाइल बनाई है, जिसे आप निकालना चाहते हैं और नए विंडोज सुरक्षा मॉडल का उपयोग करके सिग्विन को कॉन्फ़िगर कर सकते हैं।
[[ -f /etc/passwd ]] && mv /etc/passwd /etc/passwd.bak
[[ -f /etc/group ]] && mv /etc/group /etc/group.bak
/etc/nsswitch.conf
फ़ाइल है db_home:
परिभाषित करता है कि कैसे Cygwin उपयोगकर्ता के घर निर्देशिका को हासिल करेगा स्थापित कर लिया। के लिए डिफ़ॉल्ट सेटिंग db_home:
है
db_home: /home/%U
तो डिफ़ॉल्ट रूप से, साइगविन सिर्फ घर के लिए निर्धारित करता है /home/$USERNAME
। आप इसे बदल सकते हैं, हालांकि किसी अन्य कस्टम पथ को इंगित करने के लिए जिसे आप चाहते हैं। समर्थित वाइल्डकार्ड वर्ण हैं:
%u
साइग्विन उपयोगकर्ता नाम (यह लोअरकेस यू है)।%U
विंडोज उपयोगकर्ता नाम (यह अपरकेस यू) है।%D
NetBIOS शैली में विंडोज डोमेन।%H
POSIX शैली में विंडोज होम डायरेक्टरी। ध्यान दें, db_home:
सेटिंग के लिए, यह केवल पूर्ववर्ती स्लैश के बाद सही समझ में आता है, जैसा कि अंदर हैdb_home: /%H/cygwin
%_
चूंकि स्कीमाटा को अलग करने के लिए स्पेस और TAB कैरेक्टर का इस्तेमाल किया जाता है, इसलिए फाइलनेम में स्पेस दिया जाना चाहिए %_
।%%
प्रति-प्रतिशत चरित्र।पथ के स्थान पर, आप चार नामित पथ स्कीमाता में से एक निर्दिष्ट कर सकते हैं जो पूर्वनिर्धारित हैं।
windows
उपयोगकर्ता की होम निर्देशिका उसी निर्देशिका पर सेट होती है जिसका उपयोग Windows होम निर्देशिका के रूप में किया जाता है, आमतौर पर %USERPROFILE%
या की तर्ज पर कुछ C:\Users\$USERNAME
। बेशक, विंडोज निर्देशिका को सिगविन द्वारा पोसिक्स-शैली में बदल दिया गया है।
cygwin
केवल विज्ञापन: उपयोगकर्ता की होम डायरेक्टरी cygwinUome विशेषता वर्ग से साइबरविनोमे विशेषता में दिए गए POSIX पथ पर सेट है। "साइबरविन स्कीमा" नामक अनुभाग भी देखें ।
unix
केवल AD: उपयोगकर्ता की होम निर्देशिका पॉज़िक्स पथ में दी गई है, जो पॉज़िक्सअकाउंट सहायक वर्ग से unixHomeDirectory विशेषता में दी गई है। "यूनिक्स स्कीमा" नामक अनुभाग भी देखें ।
desc
उपयोगकर्ता की होम निर्देशिका घर में दिए गए POSIX पथ पर सेट है = "..." SAM या AD में उपयोगकर्ता के विवरण विशेषता में XML- एक जैसे सेटिंग। विस्तृत विवरण के लिए "desc स्कीमा" नामक अनुभाग देखें।
निम्न Cygwin में उपयोगकर्ता के होम डायरेक्टरी को वैसा ही बना देगा जैसा कि Windows होम डायरेक्टरी के लिए उपयोग किया जाता है।
db_home: windows
Cygwin 1.7.33 या इससे पहले का उपयोग करने वालों के लिए , नवीनतम संस्करण Cygwin में अपडेट करें और पहले उपयोग की गई /etc/passwd
और /etc/group
फ़ाइलों को हटा दें , फिर ऊपर दिए गए चरणों को देखें।
और, नीचे दिए गए इन पुराने चरणों का पालन करें।
सबसे पहले, होम के लिए एक विंडोज़ पर्यावरण चर सेट करें जो आपके उपयोगकर्ता प्रोफ़ाइल की ओर इशारा करता है:
HOME
%USERPROFILE%
अब हम केवल बनाए /etc/passwd
गए विंडोज %HOME%
चर के साथ Cygwin फ़ाइल को अपडेट करने जा रहे हैं । शेल लॉगिन और दूरस्थ लॉगिन के माध्यम से उपयोगकर्ता के पथ के स्थान को बताने के लिए ssh
उस पर भरोसा करेंगे ।/etc/passwd
$HOME
सिग्विन बैश कमांड प्रॉम्प्ट पर निम्न टाइप करें:
cp /etc/passwd /etc/passwd.bak
mkpasswd -l -p $(cygpath -H) > /etc/passwd
mkpasswd -d -p $(cygpath -H) >> /etc/passwd
-d
स्विच mkpasswd बताता DOMAIN उपयोगकर्ताओं को शामिल करने, जबकि -l
केवल उत्पादन स्थानीय मशीन उपयोगकर्ताओं के लिए है। यह महत्वपूर्ण है यदि आप कार्य में एक पीसी का उपयोग कर रहे हैं जहां उपयोगकर्ता जानकारी विंडोज डोमेन नियंत्रक से प्राप्त की जाती है।
अब, आप समूहों के लिए भी ऐसा कर सकते हैं, हालांकि यह आवश्यक नहीं है जब तक कि आप एक कंप्यूटर का उपयोग नहीं करेंगे जो विंडोज डोमेन का हिस्सा है। Cygwin, Windows खाता डेटाबेस से समूह की जानकारी पढ़ता है, लेकिन /etc/group
यदि आपकी मशीन अक्सर अपने डोमेन नियंत्रक से डिस्कनेक्ट हो जाती है, तो आप एक फ़ाइल जोड़ सकते हैं ।
सिग्विन बैश प्रॉम्प्ट पर निम्नलिखित टाइप करें:
cp /etc/group /etc/group.bak
mkgroup -l > /etc/group
mkgroup -d >> /etc/group
अब, Cygwin से बाहर निकलें और इसे फिर से शुरू करें। आपको पता होना चाहिए कि आपका गृह पथ आपके विंडोज उपयोगकर्ता प्रोफ़ाइल के समान स्थान पर इंगित करता है - अर्थात/cygdrive/c/Users/username
cd /home
rm -rf chris
ln -s /cygdrive/z chris
मुझे वास्तव में यकीन नहीं है कि यह सबसे सुरक्षित समाधान है लेकिन यह एक संभावित समाधान है जो मेरे लिए काम करता है;)
मैंने अपनी / etc / passwd फ़ाइल को सीधे संपादित किया (यह सुनिश्चित करते हुए कि कुछ और उस तक नहीं पहुंचेगा), और सभी संदर्भों को / उपयोगकर्ता के लिए / विंडोज 7 पर बदल दिया। मैंने पाया कि सब कुछ सही ढंग से काम करने के लिए, मुझे / होम निर्देशिका में किसी भी निर्देशिका को हटाना होगा (या उन्हें उपयुक्त स्थान पर ले जाना होगा)। अन्यथा, साइबरविन एक विभाजित व्यक्तित्व विकसित करेगा जहां, उदाहरण के लिए, 'bash -l' / home / Pablo में शुरू होगा, लेकिन $ HOME होगा / उपयोगकर्ता / पाब्लो और emacs रिवर्स करने के लिए दिखाई देंगे। एक बार जब मैंने घर / पाब्लो को डिलीट कर दिया, तो सब कुछ ठीक रहा।
मुझे केवल तभी होना चाहिए C:\Users\username
जब मैं साइबरविन शुरू करूं। इसलिए, मैंने अभी .bashrc
और इसमें जोड़ा है.profile
cd ${HOMEPATH}
यदि आप ~/.
इसके बजाय उपयोग करना पसंद करते हैं $HOMEPATH
, तो आप निम्नलिखित भी जोड़ सकते हैं:
export HOME=${HOMEPATH}
इस तरह मैं साइबर इंस्टॉलेशन को परेशान नहीं करता।