ฉันจะ sudo su และเปลี่ยนไดเรกทอรีได้อย่างไร


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 

และจากเปลือกของฉันกับแฟ้ม sudoer sudo su userYYYของฉันฉันทำ แต่นั่นไม่ได้ผล สิ่งเดียวที่ใช้ได้คือsudo su -l userYYYYแต่เปิด bash ใหม่ภายในเชลล์เดิมของฉัน ( -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"'

ดูเหมือนว่าจะทำงานได้ดี แต่ไม่แน่ใจว่าจะลบข้อผิดพลาดนี้ได้อย่างไรหรือหากมีปัญหา ใช้อูบุนตู 14.04LTS สังเกตว่ามีปัญหากับเดเบียน ...bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
sonjz

1
จริง ๆ แล้วหลังจากใช้ไป
ซัก

เพิ่งขุดสิ่งนี้พฤติกรรมนี้เกิดจากการแก้ไขความปลอดภัย: unix.stackexchange.com/questions/65843/…
sonjz

สิ่งนี้ช่วยให้ฉันแก้ไข.bashrcไฟล์ของฉันไปsudoแล้วcdซึ่งการมี 2 บรรทัดแยกกันไม่ทำงาน
RozzA

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เปลี่ยนแปลง directory ไปและดำเนินการ/vagrantnpm install


0

ฉันรู้ว่านี้จะแตกต่างจากคำถามเดิมเล็กน้อย sudo su <user> -cแต่ความคิดที่จะเรียกใช้คำสั่งในฐานะผู้ใช้ที่แตกต่างกันได้โดยไม่ต้องพิมพ์รหัสผ่านเมื่อนโยบายห้าม

sudo -u userYYY -- sh -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.