มีปัญหากับการใช้งาน cd ด้วย sudo ในฐานะผู้ใช้รายอื่น


12

ฉันต้องการเรียกใช้คำสั่งบนเชลล์ในนามของผู้ใช้รายอื่น คำสั่งมีดังนี้:

sudo -u USER cd /home/USER

ฉันเข้าใจ

sudo: cd: command not found

ไวยากรณ์ที่ถูกต้องสำหรับคำสั่งให้ส่งผ่านไปยัง sudo คืออะไร?

คำตอบ:


14

cdเป็นbuiltin เปลือก คุณต้องเรียกใช้เชลล์เพื่อดำเนินการเชลล์บิลด์อิน:

sudo -u USER sh -c 'cd /home/USER'

หรือ

sudo -u USER bash -c 'cd /home/USER'

1
นี้จะไม่ได้จริงๆทำอะไรที่มีประโยชน์ --- cdเปลือกจะออกขวาหลังจาก OP sudo -iอาจต้องการ
Derobert

5

cdไม่ใช่คำสั่งภายนอกมันเป็นเพียง shell builtin ดังนั้นจึงsudoไม่สามารถดำเนินการได้ เหตุผลที่cdมีอยู่เป็นเชลล์บิวด์อินเท่านั้นคือกระบวนการไม่สามารถส่งผลกระทบต่อไดเร็กทอรีปัจจุบันของกระบวนการอื่น ดังนั้นโปรแกรมที่เปลี่ยนไดเรกทอรีปัจจุบันและออกทันทีจะไม่มีประโยชน์ (เกือบไร้ประโยชน์: cdโปรแกรมจะส่งคืนสถานะที่บ่งชี้ว่าประสบความสำเร็จหรือไม่)

หากคุณต้องการเปลี่ยนเป็นไดเร็กทอรีจากนั้นรันคำสั่งในฐานะผู้ใช้รายอื่นให้รันเชลล์ที่ทำสิ่งนั้นทั้งหมด

sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'

1

ฉันมักจะใช้sudo su - USERNAMEแล้วทำสิ่งที่คุณต้องการในฐานะผู้ใช้นั้น หากต้องการออกเพียงพิมพ์exit


3
การเข้าสู่ระบบUSERNAMEและดำเนินการคำสั่งนั้นแตกต่างกันตรงที่รันคำสั่งเป็นUSERNAME
Pandya
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.