วิธีเปลี่ยนเป็นผู้ใช้รูท แต่อยู่ในไดเรกทอรีเดียวกัน


10

ฉันเพิ่งเปลี่ยนมาใช้ Ubuntu และฉันสังเกตเห็นสิ่งหนึ่งเมื่อฉันใช้คำสั่งต่อไปนี้เพื่อเปลี่ยนเป็นผู้ใช้รูท

sudo su - root

มันพาฉันไปที่บ้านของรูท ( /root) โดยตรงดังนั้นฉันจึงเสียตำแหน่งในระบบไฟล์ (ไดเรกทอรีที่ฉันใช้คำสั่งนี้) มีวิธีใดที่จะเปลี่ยนเป็นรูทโดยไม่สูญเสียไดเร็กทอรีปัจจุบันหรือไม่?

คำตอบ:


16

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

หากคุณต้องการที่จะเริ่มต้นเปลือกเข้าสู่ระบบ (นั่นคือสิ่งที่sudo su -) sudo -iไม่ใช้ อย่างไรก็ตามเนื่องจากมันเริ่มเปลือกเข้าสู่ระบบจะนำคุณไปยังไดเรกทอรีบ้านของรูทโดยค่าเริ่มต้น

sudo -sในการเริ่มต้นเปลือกปกติที่ไม่ใช่การเข้าสู่ระบบคุณสามารถใช้ สิ่งนั้นจะเริ่มรูทเชลล์สำหรับคุณและทำให้คุณอยู่ในไดเรกทอรีที่คุณใช้งานจาก:

terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i  ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s  ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon

sudo -sดังนั้นวิธีการที่จะเริ่มต้นเปลือกรากและเข้าพักในไดเรกทอรีเดียวกันคือ


1
ปัญหาอาจเกิดจากการที่sudo -sไม่ได้เรียกใช้โปรไฟล์ผู้ใช้เป้าหมายเพราะไม่ใช่เชลล์การเข้าสู่ระบบ ดังนั้นคำถามที่แท้จริงคือว่ามีวิธีรับเชลล์ล็อกอินด้วยsudoหรือไม่ แต่ไม่มีการเปลี่ยนไดเรกทอรี อาจจะไม่.
Barmar

@Barar ไม่ แต่sudo -iทำ ฉันใช้-sเนื่องจาก OP ไม่ต้องการเชลล์การเข้าสู่ระบบ (ไม่ต้องการย้ายไป$HOME) sudo -iหากคุณต้องการเปลือกเข้าสู่ระบบการใช้งาน ผมเคยโพสต์เปรียบเทียบสภาพแวดล้อมของที่sudo -i, su -, sudo -sและsuในคำถามของฉันที่นี่ถ้าคุณต้องการที่จะได้ดู
terdon

ตอนนี้ฉันมีประสบการณ์ที่แย่มากกับคำสั่งนี้ sudo -s แม้ว่ามันจะไม่เปลี่ยนไดเรกทอรี แต่ไม่ได้ให้สิทธิ์การเข้าถึงแบบเต็มแก่ฉัน ไฟล์บางไฟล์ของฉันมีอยู่ในไดเรกทอรี แต่ฉันไม่สามารถเห็นพวกเขาเป็นผู้ใช้ปกติและในฐานะผู้ใช้รูทด้วยวิธีนี้ (sudo -s) จากนั้นฉันก็ใช้วิธีเก่า (sudo su - root) และไปที่ไดเรกทอรีและไฟล์ของฉันตอนนี้ก็ปรากฏให้ฉันเห็น ทำไม sudo -s ให้สิทธิ์การเข้าถึงแบบ จำกัด แก่ฉัน
Hammad Hassan

@HammadHassan ไม่มีทางที่สิ่งที่คุณจะอธิบายอาจเกิดขึ้นได้ ต้องมีอย่างอื่นเกิดขึ้น คุณหมายถึง "มองไม่เห็น" ไฟล์อะไร? คุณอาจหมายถึง "ไม่สามารถอ่านไฟล์" หรือไม่? คุณอาจใช้การเข้ารหัสหรือไม่
terdon

"ไม่สามารถมองเห็น" หมายถึงคำสั่งง่าย ๆ "ls" มันไม่ได้แสดงให้ฉันเห็นไฟล์ของฉัน ไม่มีการเข้ารหัสเลย ไฟล์ของฉันเรียบง่าย และนี่คือสิ่งที่เกิดขึ้นจริง
Hammad Hassan

8

ง่ายมาก เพียงพิมพ์

sudo su

แทน

sudo su - root

สิ่งนี้จะทำให้คุณอยู่ในโฟลเดอร์เดียวกับรูท


9
ไม่ผิดฉันหมายถึงใช้งานได้ แต่การใช้sudo suไม่สมเหตุสมผล นั่นคือสิ่งที่sudo -sมีไว้เพื่อ sudo suฉันไม่เคยเข้าใจว่าทำไมบทเรียนอูบุนตูจำนวนมากดังนั้นขอแนะนำ
terdon

@terdon ฉันไม่เคยเข้าใจเลย แต่ดูเหมือนว่าจะแพร่หลายในหมู่ผู้ใช้ Linux ทั้งหมด บางทีการพาดพิงถึงทำให้น่าจดจำมากขึ้น
Barmar

@Barmar เป็นการส่วนตัวฉันได้เห็นมันในโลก Ubuntu แล้วเท่านั้น เนื่องจากระบบ Linux ส่วนใหญ่มีบัญชีรูทปกติโดยค่าเริ่มต้นเมื่อต้องการเชลล์ที่คุณต้องทำsu(โดยลำพังไม่มีsudo) อย่างไรก็ตามเนื่องจากอูบุนตูปิดการใช้งานบัญชีรูทตามค่าเริ่มต้นสิ่งที่sudo suเกิดขึ้นค่อนข้างเป็นธรรมชาติ มันเป็นยังเห็นได้ชัดว่ากรณีในมุมของโลกที่ใช้ระบบปฏิบัติการยูนิกซ์บางเช่นกัน แต่ใน Linux ที่ผมเคยเห็นเพียง แต่ในอูบุนตู
terdon

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