Linux - ใช้“ su -” แต่เก็บไดเรกทอรีปัจจุบัน


14

เมื่อฉันsu -จะไปรูทไดเร็กทอรีปัจจุบันของฉันถูกตั้งเป็นรูทโฮม มีอยู่แล้วเพื่อเก็บไดเรกทอรีปัจจุบันที่ฉันชอบsudo -sมาก หรือเป็นคำตอบให้ใช้ sudo?


5
โปรดทราบว่าฉันไม่ต้องการเสียงหยาบคาย แต่ทำไมปัญหานี้ไม่ได้รับการแก้ไขผ่าน "man su"?
Myrrdyn

1
@Rory โปรดอ่านความคิดเห็น Myrrdyn
c4f4t0r

ฉันชอบใช้sudo su -c "zsh"ในกรณีของฉันทำให้ฉันอยู่ใน dir ปัจจุบันและโหลดzshเป็นเชลล์กับผู้ใช้รูท ctrl+dหลังจากนั้นคุณจะกลับสู่ผู้ใช้ปัจจุบัน สำหรับสิ่งที่ไดเรกทอรีทำงานโดยตรงบน centos สำหรับฉัน แต่อาจเพิ่ม `&& cd $ (pwd)` คำสั่งส่งผ่านภายในสามารถทำเคล็ดลับ
GabLeRoux

@Myrrdyn เอกสารที่ดีเมื่อคุณรู้ว่าสิ่งที่คุณกำลังมองหา เมื่อคุณไม่ถามผู้เชี่ยวชาญให้คำแนะนำได้เร็วขึ้นและการสอนมากขึ้น
Romain Vincent

คำตอบ:


18

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

หากคุณต้องการปฏิเสธใครบางคนในภายหลังคุณเพียงแค่ลบการเข้าถึงของพวกเขาไปยัง sudo แทนที่จะต้องสอนรหัสผ่านรูทใหม่ให้ทุกคน

อย่างไรก็ตาม - คุณไม่จำเป็นต้องใช้พารามิเตอร์ '-' หากคุณไม่ต้องการ คุณจะได้รับเชลล์ในฐานะรูท แต่มันจะไม่ใช่เชลล์ล็อกอิน (ดังนั้นมันจะไม่รัน. profile ของรูท)


1
asuser git reset --hardในกรณีของฉันฉันต้องการนามแฝงที่จะทำสิ่งที่ชอบ แต่su - <user> -m -c "git reset --hard"และsudo -u <user> git reset --hardจะช่วยรักษาสภาพแวดล้อมและ git ของฉันจะพยายามอ่านการตั้งค่า git ของผู้ใช้ปัจจุบัน ดังนั้นฉันแค่ต้องการระบุว่าบางครั้งโซลูชันของ user205705 โดยใช้ su - <user> -c "cd pwd; bash" ดีกว่า
ReFruity

16

ฉันยอมรับว่า sudo เป็นคำตอบที่ดีกว่าเกือบทุกครั้ง แต่เพื่อตอบคำถามส่วนอื่น ๆ ...

เครื่องหมาย '-' ใน 'su -' ระบุว่าคุณต้องการเลียนแบบการเข้าสู่ระบบของผู้ใช้ขั้นสูงแทนที่จะเรียกใช้ด้วยสิทธิ์พิเศษของผู้ใช้ขั้นสูง

หากคุณใช้ 'su' ธรรมดาแทน 'su -' คุณจะอยู่ในไดเรกทอรีเดียวกัน อย่างไรก็ตามคุณจะต้องทำงานในสภาพแวดล้อมเดียวกันดังนั้นอาจต้องแก้ไขพา ธ ของคุณเพื่อเข้าถึงคำสั่งของผู้ดูแลระบบ


9

ถ้าคุณใช้suโดยไม่ต้องใช้-มันควรจะทำให้คุณอยู่ในไดเรกทอรีปัจจุบัน -, -lหรือ--login บอก su เพื่อ:

จัดเตรียมสภาพแวดล้อมที่คล้ายกับสิ่งที่ผู้ใช้คาดว่าจะมีผู้ใช้ล็อกอินโดยตรง

หรือเพียงแค่ใช้ sudo มันมีข้อดีอื่น ๆ มากมาย หรือปุ่ม ssh


6

คุณควรใช้ sudo แน่นอน

su -m
-m (-p): อย่ารีเซ็ตตัวแปรสภาพแวดล้อม (โดยทั่วไปไม่แนะนำ)

ที่จะทำให้คุณอยู่ในโฟลเดอร์เมื่อคุณเปลี่ยนเป็นรูท

ประโยชน์ของการใช้ sudo


1
ฉันไม่เห็นว่าสิ่งนี้จะแตกต่างจากเพียงแค่ "su" ในตัวของมันเองนอกจากจะไม่รีเซ็ตสภาพแวดล้อม PATH ซึ่งเป็นปัญหาด้านความปลอดภัยที่เป็นไปได้
David Pashley

ตัวอย่างเช่น @DavidPashley จะดำเนินการ.bashrcจากผู้ใช้ภายนอกไม่ใช่ผู้ใช้รูทหนึ่ง
phil294

4

หากคุณต้องการใช้จริงๆsuมีวิธีอยู่ในไดเรกทอรีเดียวกัน

su - <user> -c "cd `pwd`; bash"

เกิดอะไรขึ้นที่นี่:

  • su - <user> = เข้าสู่ระบบเป็น
  • -c ซึ่งหมายถึง "เรียกใช้คำสั่งในเชลล์ใหม่
  • -c "cd `pwd`" คำสั่งที่เราให้คือการเปลี่ยนไปเป็นไดเร็กตอรี่ปัจจุบัน ( pwd) - แต่เนื่องจากเราใช้ backticks pwdคำสั่งจะถูกประเมินก่อนที่เราจะรันsuคำสั่งเพื่อที่เราจะเปลี่ยนไปยังไดเรกทอรีที่เราอยู่ในตอนนี้ในฐานะผู้ใช้เก่า ปัญหาเดียวที่นี่คือเปลือกใหม่ออกทันทีหลังจากรันคำสั่งดังนั้นเราจึงเพิ่ม:
  • -c "cd `pwd`; bash" ซึ่งหมายความว่า "run bash(new shell) หลังจากรันcdคำสั่งและ bash shell จะไม่ออกจนกว่าเราจะออกจากระบบ

1
นี่เป็นคำตอบสำหรับคำถามเท่านั้น เยี่ยมมาก!
Cacahuete Frito

ที่จริงแล้วsu - [user] -c "cd $(pwd); bash"อาจจะดีกว่าเล็กน้อย (เปลี่ยน backticks เป็น$())
Cacahuete Frito

3

ใช้ sudo :) อย่างจริงจังคุณไม่ต้องการซู 'sudo' จะดีกว่าเพราะคุณจะใช้มันสำหรับคำสั่งพิเศษเท่านั้นและสามารถช่วยหลีกเลี่ยงข้อผิดพลาดได้ คุณยังได้รับความรับผิดชอบ


2

ถ้าคุณใช้ "su" มันจะเป็นเชลล์แบบโต้ตอบ นี่เหมือนกับ "sudo -s" "su -" สร้างเชลล์ล็อกอินซึ่งจะแทนที่สภาพแวดล้อม "sudo -i" เป็นสิ่งที่เท่าเทียมกับ sudo หากคุณพยายามรับเชลล์แบบโต้ตอบคุณควรใช้แบบฟอร์ม sudo -i (หรือ su -) เสมอหรือเป็นไปได้ที่จะจบลงด้วยการอนุญาตไฟล์แปลก ๆ ในโฮมไดเร็กตอรี่ของผู้ใช้


0

คุณต้องแก้ไขแหล่งที่มาของ su เพื่อให้งานนี้เสร็จสิ้น มีการเรียก chdir ในขั้นตอนของการเตรียมใช้งาน varibles envoironment แสดงความคิดเห็นสถานะเหล่านั้นรวมถึงการโทรนั้น และตอนนี้คุณสามารถทำ "su -" แต่เก็บไดเรกทอรีปัจจุบัน

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