ออกจากทั้ง root และผู้ใช้ด้วยคำสั่งเดียว


9

ฉันรู้เกี่ยวกับ "ไม่ได้ใช้sudo su -" เป็นต้น แต่ขอบอกตามตรงพวกเราเกือบทั้งหมดทำได้

ดังนั้นนี่คือปัญหา เราไม่สามารถเปิดใช้งานการเข้าสู่ระบบรูทได้ดังนั้นเราจึงต้อง ssh ในฐานะผู้ใช้ของเราแล้วไปยังรูต
นี่คือแผนผังกระบวนการ:

    1  7897  7826  7826 ?           -1 S     1000   0:00 sshd: josh@pts/0
 7897  7898  7898  7898 pts/0     8182 Ss    1000   0:00  \_ -bash
 7898  7990  7990  7898 pts/0     8182 S        0   0:00      \_ sudo su -
 7990  7991  7990  7898 pts/0     8182 S        0   0:00          \_ su -
 7991  7992  7992  7898 pts/0     8182 S        0   0:00              \_  -su
 7992  8182  8182  7898 pts/0     8182 R+       0   0:00                  \_ ps axjf

ฉันต้องการออกจากรูทจากนั้นจากผู้ใช้ด้วยคำสั่งเดียว มีวิธีทำเช่นนี้หรือไม่?

BTW exit && exit ไม่ทำงานเพราะออกจากเชลล์และไม่ประมวลผลคำสั่งที่เหลือ

josh@ubuntu:~$ sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$

5
“ พวกเราเกือบทั้งหมดทำมัน .. ” ฉันสงสัยอย่างนั้น ฉันดูแลเครื่องหลายเครื่องและมีรหัสผ่านทั้งหมดและฉันไม่เคยใช้ "sudo su" บนระบบที่ใช้เดเบียน และฉันคาดหวังว่าพวกเราส่วนใหญ่จะไม่ใช้มัน
Rinzwind

1
อย่าใช้sudo suมันไร้ประโยชน์และเพิ่งเปิดตัวกระบวนการเพิ่มเติม ใช้sudo -iถ้าคุณต้องแทน
terdon

ฉันใช้sudo -iเพื่อรับรูทเชลล์ ในฐานะที่เป็น ssh คุณสามารถกำหนดค่า ssh เพื่อให้เข้าสู่ระบบรากผมใช้ตัวเลือก "ไม่มีรหัสผ่าน" สำหรับรากและคีย์ ssh เป็น kerberos สิ่งนี้จะช่วยให้บัญชีรูทล็อคด้วยรหัสผ่าน
Panther

ฉันไม่ได้รับสิ่งที่ไม่ทำงาน exitออกครั้งแรกออกsuจากระบบครั้งที่สอง ไม่ใช่สิ่งที่คุณต้องการจะทำใช่ไหม
Pilot6

1
@ Pilot6 คุณทดสอบโค้ดนั้นแล้วหรือยัง? ฉันเพิ่งทำและมันใช้งานไม่ได้ .. นั่นเป็นเพียงสิ่งที่ฉันต้องการจะทำ .. แต่มันก็ใช้งานไม่ได้ ..
Joshua Zitting

คำตอบ:


9

ในทางเทคนิคแล้วไม่มีใครตอบคำถามของคุณ ฉันขอขอบคุณที่พวกเขาคิดว่าวิธีของพวกเขาดีกว่า (น่าจะเป็น) แต่นี่เป็นวิธีการอื่น (ในกรณีที่คุณต้องใช้su -เวลาและมีปัญหาเดียวกัน)

  1. [เข้าสู่ระบบ]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

เมื่อคุณออกจากรูทผู้ใช้ดั้งเดิมจะออกจากระบบด้วยเนื่องจากมันยังคงเป็นคำสั่งสุดท้าย

ไชโย!


14

แค่ทำ

exec sudo -i

ตอนนี้รูทเชลล์จะแทนที่ค่าเริ่มต้นและเมื่อคุณออกคุณออกจาก "ทั้ง" (ใช้คำไม่ถูกต้องเนื่องจากเชลล์ตัวแรกหยุดอยู่ด้วยexec)

ดู:

[romano:~] % ssh pern
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

[romano@pern:~] % exec sudo -i
[sudo] password for romano: 
root@pern:~# whoami
root
root@pern:~# pstree -a -s -l -p -u $$
init,1
  └─sshd,1140 -D
      └─sshd,17450 
          └─sshd,17570,romano  
              └─sudo,17571,root -i
                  └─bash,17665
                      └─pstree,17678 -a -s -l -p -u 17665
root@pern:~# exit
logout
Connection to pern.XXX.XXX.XXX closed.
[romano:~] % 

ฉันใช้มันเยอะแยะเพื่อที่จะมีsshเทอร์มินัล -ed: ใช้exec ssh whateverและเมื่อคุณออกจากเครื่องเทอร์มินัลจะปิดลง


2
ทำอย่างนี้สิ !!! ขอบคุณ! ฉันไม่ต้องพิมพ์ทางออกสองครั้งอีกต่อไป !!
Joshua Zitting

ทำอย่างชาญฉลาด! ยอดเยี่ยม
อันวาร์

1

เมื่อคุณเป็นผู้ใช้รูทเพียงแค่พิมพ์ ::

sudo -s && exit

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

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.