मैं कैसे सू और सु को बदल सकता हूँ?


13

मैं एक ऐसा उपनाम बनाना चाहूंगा जो कुछ इस तरह से हो:

alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'

तो फिर मेरे कमांड लाइन से, मैं एक sudo उपयोगकर्ता के साथ लॉग इन कर रहा हूँ, और मैं उर्फ टाइप करने के लिए चाहते हैं userYYYताकि मेरे खोल अब साथ लॉग ऑन है userYYYऔर pwdहै /a/path/that/only/userYYY/has/access

मैं उसे कैसे कर सकता हूँ? यह userYYYकुछ प्रक्रियाओं को चलाने के लिए है, और इसके घर में कुछ भी होना चाहिए। इसलिए, मैंने इसका उपयोग करते हुए इसके $ HOME को बदलने की कोशिश की:

sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY 

और फिर अपने सुडोल फ़ाइल के साथ अपने शेल से मैंने किया sudo su userYYY। लेकिन वह काम नहीं किया। केवल वही काम करता था, sudo su -l userYYYYलेकिन इसने मेरे मूल खोल ( -bash-4.1$ ....) के अंदर एक नया धब्बा खोल दिया ।

संक्षेप में, जो मैं चाहता हूं, वह केवल मेरे कवच में 2 पंक्तियाँ लिखने से बचना है:

sudo su userYYY
cd /a/path/that/only/userYYY/has/access

कोई विचार?

जवाबों:


10
alias userYYY='sudo su userYYY -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"'

ठीक काम करने लगता है, लेकिन यकीन नहीं है कि कैसे इस त्रुटि को दूर करने के लिए, या अगर यह एक मुद्दा है। ubuntu 14.04LTS का उपयोग करते हुए, वहाँ debian पर के साथ एक मुद्दा था देखा ...bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
sonjz

1
वास्तव में, थोड़ी देर के लिए उपयोग करने के बाद, मैंने देखा कि टर्मिनल इस विधि का उपयोग करके बहुत बार मारा जाता है (लगभग 15-30 मिनट डिस्कनेक्ट करें, नियमित रूप से, मेरा टर्मिनल डिस्कनेक्ट करने से पहले 6hrs के आसपास रहता है)
सोनज

बस इसे खोदा गया, यह व्यवहार एक सुरक्षा फ़िक्स के कारण है: unix.stackexchange.com/questions/65843/…
sonjz

इससे मुझे अपनी .bashrcफ़ाइल को sudoतब संपादित करने में मदद मिली है, cdजहाँ 2 अलग-अलग लाइनें होने के कारण यह काम नहीं कर रही थी।
रोजा

2

एक विकल्प ~/.bashrcलक्ष्य उपयोगकर्ता को संपादित करना होगा , और cdवहां जोड़ना होगा:

cd /a/path/that/only/userYYY/has/access

0

संक्षिप्त उत्तर - आप नहीं कर सकते। sudo suएक नया खोल जो इससे पहले कि यह करने के लिए हो जाता है से बाहर निकलना होगा शुरू होता है cdआदेश।


0

मेरे लिए एक संयोजन sudoऔर screenकाम किया:

sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'

यह कमांड पहले vagrantउपयोगकर्ता पर स्विच करता है । फिर जैसे- vagrantजैसे निर्देशिका बदलती है /vagrantऔर क्रियान्वित होती है npm install


0

मुझे पता है कि यह मूल प्रश्न से थोड़ा अलग है, लेकिन नीति को प्रतिबंधित करने पर पासवर्ड में टाइप किए बिना कमांड को एक अलग उपयोगकर्ता के रूप में चलाना है sudo su <user> -c

sudo -u userYYY -- sh -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.