3rd सुझाई गई रणनीति के संबंध में useradd -o -u userXXX
, @jlliagre द्वारा सुझाए गए विकल्पों के अलावा, मैं एक ही यूआईडी के रूप में कई उपयोगकर्ताओं को चलाने से परिचित नहीं हूं। (इसलिए यदि आप इसके साथ आगे बढ़ते हैं, तो यदि आप किसी भी मुद्दे (या सक्सेज) के साथ पोस्ट को अपडेट कर सकते हैं तो मुझे दिलचस्पी होगी ...)
मुझे लगता है कि पहले विकल्प के बारे में मेरा पहला अवलोकन "हर किसी की SSH सार्वजनिक कुंजी ~ रूट / .ssh / अधिकृत_keys2" में डाल दी जाती है, यह है कि जब तक आप बिल्कुल किसी अन्य सिस्टम पर काम नहीं करेंगे;
- फिर कम से कम कुछ समय के लिए , आपको उपयोगकर्ता खातों और के साथ काम करना होगा
sudo
दूसरा अवलोकन यह होगा कि यदि आप उन प्रणालियों पर काम करते हैं जो HIPAA, PCI-DSS अनुपालन, या CAPP और EAL जैसे सामानों पर काम करते हैं, तो आपको sudo के मुद्दों पर काम करना होगा क्योंकि;
- यह गैर-रूट व्यक्तिगत उपयोगकर्ता खाते प्रदान करने के लिए एक उद्योग मानक है, जिसे आमतौर पर कुछ केंद्रीकृत उपयोगकर्ता डेटाबेस का उपयोग करके ऑडिट, अक्षम, समाप्त, आदि किया जा सकता है।
इसलिए; व्यक्तिगत खातों और sudo का उपयोग करना
यह दुर्भाग्यपूर्ण है कि एक sysadmin के रूप में, लगभग सभी चीजें जो आपको एक रिमोट मशीन पर करने की आवश्यकता होगी, कुछ ऊंचे अनुमतियों की आवश्यकता होगी, हालांकि यह कष्टप्रद है कि आपके पास रहते समय अधिकांश SSH आधारित टूल और उपयोगिताओं का भंडाफोड़ हो जाता है। sudo
इसलिए मैं कुछ तरकीबों से गुजर सकता हूं जिनका उपयोग मैं काम करने के लिए करता हूं sudo
। पहली समस्या यह है कि यदि रूट लॉगिन का उपयोग करके ब्लॉक किया गया है PermitRootLogin=no
या आपके पास ssh कुंजी का उपयोग करके रूट नहीं है, तो यह SCP फ़ाइलों को PITA से कुछ बनाता है।
समस्या 1 : आप दूरस्थ पक्ष से फ़ाइलों को स्कैन करना चाहते हैं, लेकिन उन्हें रूट एक्सेस की आवश्यकता होती है, हालाँकि आप सीधे रूट के रूप में दूरस्थ बॉक्स में प्रवेश नहीं कर सकते हैं।
बोरिंग सॉल्यूशन : फाइलों को होम डायरेक्टरी, चाउन और स्कैप डाउन पर कॉपी करें।
ssh userXXX@remotesystem
, sudo su -
आदि, cp /etc/somefiles
से /home/userXXX/somefiles
, chown -R userXXX /home/userXXX/somefiles
दूरस्थ से फ़ाइलों को पुनः प्राप्त करने के लिए scp का उपयोग करें।
वास्तव में बहुत उबाऊ।
कम बोरिंग समाधान : sftp -s sftp_server
ध्वज का समर्थन करता है , इसलिए आप निम्न की तरह कुछ कर सकते हैं (यदि आपने पासवर्ड-कम sudo कॉन्फ़िगर किया है /etc/sudoers
);
sftp -s '/usr/bin/sudo /usr/libexec/openssh/sftp-server' \
userXXX@remotehost:/etc/resolv.conf
(आप sshfs के साथ भी इस हैक-अराउंड का उपयोग कर सकते हैं, लेकिन मुझे यकीन नहीं है कि इसकी सिफारिश की गई है ... ;-)
यदि आपके पास पासवर्ड-कम sudo अधिकार नहीं हैं, या कुछ कॉन्फ़िगर किए गए कारण से उस विधि को तोड़ा गया है, तो मैं दूरस्थ रूट फ़ाइलों तक पहुंचने के लिए एक और कम उबाऊ फ़ाइल स्थानांतरण विधि का सुझाव दे सकता हूं।
पोर्ट फ़ॉरवर्ड निंजा विधि :
दूरस्थ होस्ट में लॉग इन करें, लेकिन निर्दिष्ट करें कि रिमोट पोर्ट 3022 (कुछ भी मुफ्त हो सकता है, और एडिंस के लिए गैर-आरक्षित, अर्थात> 1024) को स्थानीय पक्ष में 22 पोर्ट पर वापस भेजा जाना है।
[localuser@localmachine ~]$ ssh userXXX@remotehost -R 3022:localhost:22
Last login: Mon May 21 05:46:07 2012 from 123.123.123.123
------------------------------------------------------------------------
This is a private system; blah blah blah
------------------------------------------------------------------------
सामान्य फैशन में जड़ें प्राप्त करें ...
-bash-3.2$ sudo su -
[root@remotehost ~]#
अब आप फ़ाइलों की इंटरमीडिएट कॉपी बनाने के उबाऊ उबाऊ कदम से बचने के लिए दूसरी दिशा में फ़ाइलों को स्कैन कर सकते हैं;
[root@remotehost ~]# scp -o NoHostAuthenticationForLocalhost=yes \
-P3022 /etc/resolv.conf localuser@localhost:~
localuser@localhost's password:
resolv.conf 100%
[root@remotehost ~]#
समस्या 2: SSH एजेंट अग्रेषण : यदि आप रूट प्रोफ़ाइल को लोड करते हैं, उदाहरण के लिए एक लॉगिन शेल निर्दिष्ट करके, SSH एजेंट के लिए आवश्यक पर्यावरण चर जैसे SSH_AUTH_SOCK
रीसेट किए जाते हैं, इसलिए SSH एजेंट अग्रेषण "के तहत" टूट गया है sudo su -
।
आधा बेक्ड उत्तर :
कुछ भी जो रूट शेल को ठीक से लोड करता है, पर्यावरण को सही तरीके से रीसेट करने जा रहा है, हालांकि आपके काम के आसपास एक मामूली काम है जब आपको बीओटीएच रूट की अनुमति की आवश्यकता होती है और एसएसएच एजेंट, एटीईएम टाइम का उपयोग करने की क्षमता होती है
यह एक प्रकार की चिमेरा प्रोफ़ाइल को प्राप्त करता है, जिसका वास्तव में उपयोग नहीं किया जाना चाहिए, क्योंकि यह एक बुरा हैक है , लेकिन उपयोगी है जब आपको रिमोट होस्ट से एससीपी फ़ाइलों को रूट के रूप में, किसी अन्य दूरस्थ होस्ट को करने की आवश्यकता होती है।
वैसे भी, आप सक्षम कर सकते हैं कि आपका उपयोगकर्ता अपने ईएनवी वैरिएबल को संरक्षित कर सकता है, सूडॉयर में निम्नलिखित सेट करके;
Defaults:userXXX !env_reset
यह आपको ऐसा करने के लिए गंदा संकर लॉगिन वातावरण बनाने के लिए अनुमति देता है;
सामान्य के रूप में लॉगिन करें;
[localuser@localmachine ~]$ ssh userXXX@remotehost
Last login: Mon May 21 12:33:12 2012 from 123.123.123.123
------------------------------------------------------------------------
This is a private system; blah blah blah
------------------------------------------------------------------------
-bash-3.2$ env | grep SSH_AUTH
SSH_AUTH_SOCK=/tmp/ssh-qwO715/agent.1971
बैश शेल बनाएं, जो चलता है /root/.profile
और /root/.bashrc
। लेकिन संरक्षित करता हैSSH_AUTH_SOCK
-bash-3.2$ sudo -E bash -l
तो इस शेल में रूट अनुमतियां हैं, और रूट $PATH
(लेकिन एक बोर्क्ड होम डायरेक्टरी ...)
bash-3.2# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=user_u:system_r:unconfined_t
bash-3.2# echo $PATH
/usr/kerberos/sbin:/usr/local/sbin:/usr/sbin:/sbin:/home/xtrabm/xtrabackup-manager:/usr/kerberos/bin:/opt/admin/bin:/usr/local/bin:/bin:/usr/bin:/opt/mx/bin
लेकिन आप उस मंगलाचरण का उपयोग उन चीजों को करने के लिए कर सकते हैं जिनके लिए सुदूर सूडो रूट की आवश्यकता होती है, लेकिन एसएसएच एजेंट भी ऐसा ही करते हैं;
bash-3.2# scp /root/.ssh/authorized_keys ssh-agent-user@some-other-remote-host:~
/root/.ssh/authorized_keys 100% 126 0.1KB/s 00:00
bash-3.2#
-o
में ध्वज को देखोuseradd
। यह ध्वज वहाँ कई उपयोगकर्ताओं को एक ही यूआईडी साझा करने की अनुमति देने के लिए है।