เปลี่ยนไดเรกทอรีโดยใช้ sudo


20

ฉันจะเปลี่ยนเป็นไดเร็กทอรีที่ root เป็นเจ้าของได้อย่างไร?

ถ้าฉันทำ: sudo cd RootOwedDir

ฉันเข้าใจ: sudo cd: command not found

ถ้าฉัน su root

ฉันได้รับ: authentication failureอาจเป็นเพราะฉันไม่เคยตั้งค่าบัญชีรูทจริง

ฉันทำอะไรผิดที่นี่


ในการสรุป: ทั้งสองของ cYrus คือ "sudo su" และ "sudo sh -sc" cd dir_path "(หมายเหตุ parm เพิ่มเติมของ) แก้ไขปัญหาขอขอบคุณทุกคนสำหรับความช่วยเหลือของพวกเขา
ผู้ใช้ Google ที่ไม่รู้จัก

คำตอบ:


17

ให้ลองใช้sudo -sเพื่อเริ่มรูทเชลล์จากนั้นcdเข้าไดเรกทอรี
เมื่อคุณทำเสร็จเป็นรากกดหรือประเภทCtrlDexit

มันเป็นสิ่งสำคัญที่จะต้องทราบว่าในฐานะที่เป็นรากหนึ่งสามารถสร้างความเสียหายให้กับองค์ประกอบของระบบที่จำเป็น ใช้ด้วยความระมัดระวัง!


5

นั่นเป็นเพราะcdไม่ใช่คำสั่ง แต่เป็นฟังก์ชั่นเชลล์ในตัว และsuคาดว่ารหัสผ่านรูต เพียงใช้:

sudo su

เพื่อเรียกใช้เชลล์ด้วยสิทธิพิเศษรูท พิมพ์exitหรือกดCtrl+ Dเพื่อกลับไปที่เปลือกก่อนหน้าเมื่อเสร็จสิ้น


2
sudo suมีความซับซ้อนโดยไม่จำเป็น sudo -sทำให้ sudo เริ่มต้นเชลล์; หรือคุณสามารถเรียกใช้sudo bashหรือsudo zshถ้าคุณไม่ต้องการที่จะจำ-sตัวเลือก
Gilles

3
sudo sh -c "cd dir_path"

สิ่งนี้ไม่ได้ผลสำหรับฉันเช่นกัน อาจเป็นเพราะไดเรกทอรีที่ฉันต้องการจะใส่มีช่องว่างฝังอยู่ในชื่อ ฉันลองรูปแบบต่างๆบน sudo sh -c "cd my \ path" โดยไม่มีโชค ไม่มีข้อผิดพลาดมันเพิ่งกลับมาราวกับว่ามันทำอะไรบางอย่าง แต่ฉันยังคงอยู่ในไดเรกทอรีเดียวกัน ติดตั้ง sh บนระบบของฉันแม้ว่าปกติแล้วฉันจะใช้ bash
ผู้ใช้ Google ที่ไม่รู้จัก

@unknown - ฉันคิดอยู่เสมอว่าคุณจะต้องวางไข่ subshell เพื่อเรียกใช้ shell builtins เป็นรูทไม่ว่าจะเป็น bash หรือ sh เก่าแบบธรรมดา ฉันตั้งใจจะคิดออก
Wesley Rice

การเพิ่มตัวเลือก -s ตาม -c ได้หลอกลวง ขอบคุณสำหรับความพยายาม
ผู้ใช้ Google ที่ไม่รู้จัก

1

นอกจากนี้คุณยังสามารถทำsudo vimในโฟลเดอร์คือsudo vim RootOwedDirและมันจะแสดงมุมมองเป็นกลุ่มสำหรับโฟลเดอร์ซึ่งจะแสดงไฟล์ / โฟลเดอร์ทั้งหมดที่อยู่ในโฟลเดอร์นั้น จากนั้นคุณสามารถเรียกใช้สิ่งที่คุณต้องการจากภายนอกโฟลเดอร์และ sudo เหมือนปกติ


0

su -จากนั้นพิมพ์รหัสผ่านของคุณ ตอนนี้คุณสามารถซีดีลงในไดเรกทอรี จำไว้ว่าตอนนี้คุณเป็นรูท ctrl-d ก่อนที่คุณจะทำทุกสิ่งที่คุณไม่ต้องการให้รูต


ที่สร้างข้อผิดพลาดการรับรองความถูกต้องบน Ubuntu
Wesley Rice

จริงๆ? ฉันไม่เคยมีปัญหาสำหรับฉัน
Unfundednut

2
สำหรับ OP คงเป็นเพราะเขาไม่มีบัญชีรูทที่เหมาะสม
Wesley Rice

ที่น่าสนใจฉันอยู่ในการติดตั้งใหม่ของ Ubuntu ฉันไม่เคย 'ติดตั้ง' ผู้ใช้รูท แต่ฉันสามารถsudo -และฉันเป็นพระเจ้าของระบบ
Unfundednut

ใช่ฉันเพิ่งได้รับข้อผิดพลาดการตรวจสอบ
ผู้ใช้ Google ที่ไม่รู้จัก

0

สำหรับฉันการรวมกันsudoและscreenทำงานออก:

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

คำสั่งนี้ก่อนสลับไปยังvagrantผู้ใช้ แล้วvagrantเปลี่ยนแปลง directory ไปและดำเนินการ/vagrantnpm install


-2

วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการเปิดใช้บัญชีรูทและใช้suเพื่อกลายเป็นรูท Ubuntu มีการป้องกันบัญชีรูทมากเนื่องจากมีแนวโน้มที่จะใช้งานในทางที่ผิด แต่ในบางครั้งการใช้บัญชีรูทนั้นง่ายกว่าการใช้sudoแทนทุก ๆ บรรทัด เพียงรับทราบว่าคุณใช้บัญชีใดในเวลาใดก็ตาม

นำมาจากที่นี่ :

เปิดสถานีและประเภท: ราก passwd sudo เมื่อคุณเห็นพรอมต์ที่ระบุว่า"ป้อนรหัสผ่าน UNIX ใหม่"ให้ป้อนรหัสผ่านที่คุณต้องการสำหรับผู้ใช้รูทและยืนยัน

ณ จุดนี้คุณจะสามารถเปลี่ยนเป็นรูทโดยใช้suและcdไปยังไดเรกทอรี


-1 มันเต็มไปด้วยความผิด GDM เกี่ยวข้องกับอะไรบ้าง OP ต้องการ 'cd' ถึง dir ที่อ่านได้โดย root เท่านั้น ไม่มีใครควรเข้าสู่ระบบในฐานะ root ผ่าน GDM
Wesley Rice

จุดดี. ฉันไม่ได้อ่านสิ่งที่ฉันวางอย่างเต็มที่
zcid

ง่ายกว่านี้มากคือการเปิดใช้รูทเชลล์ด้วย sudo -s อย่างที่คนอื่นพูดและดีกว่านี้มากคือการเรียนรู้เกี่ยวกับ sudo ซึ่งเป็นเครื่องมือที่ยืดหยุ่นและละเอียดยิ่งกว่า su ถ้าใช้อย่างดี
Adriano Varoli Piazza
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.