จะรัน Terminal เป็น root ได้อย่างไร?


35

เมื่อเราต้องการที่จะเรียกใช้โปรแกรมเป็นรากเราใช้sudo, gksu, gksudoและอื่น ๆ ตอนนี้คำถามของฉันคือวิธีที่เราจะสามารถเรียกใช้เทอร์มินเป็นผู้ใช้รากในเทอร์มิ?

ฉันพยายามกับการใช้gksudo terminalและgksu terminalแต่ไม่มีอะไรเกิดขึ้น และโดยการทำงานที่ฉันได้รับข้อผิดพลาดsudo terminalsudo: terminal: command not found


4
gnome-terminalมันเป็น ลองดูsudo gnome-terminalสิ
g_p

1
มีประโยชน์ใด ๆ ในการรันโปรแกรมเทอร์มินัลในฐานะรูทหรือไม่? ทำไมไม่เพียงแค่เริ่มต้นรูทเชลล์แบบโต้ตอบภายในเทอร์มินัลด้วยsudo -i?
ขับเหล็ก

2
@Guru sudoไม่ควรใช้เพื่อเรียกใช้โปรแกรมกราฟิกเช่นนี้ หากgksu/ gksudoไม่ได้ติดตั้ง (หรืออาจจะไม่) คุณสามารถใช้sudo -H ...(หรือsudo -i ...) เพื่อเรียกใช้แอปพลิเคชันกราฟิก...ในฐานะรูท
Eliah Kagan

ใช่คุณถูกต้อง.
g_p

คำตอบ:


53

จำลองสถานีเริ่มต้นบน Ubuntu เป็นGNOME ร์มินัล มันตั้งอยู่ที่/usr/bin/gnome-terminalและสามารถเรียกใช้ด้วยgnome-terminalคำสั่ง

สิ่งที่คุณต้องการจริงๆ

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

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

sudo -i

คุณจะมีรูทเชลล์ซึ่งคำสั่งที่คุณป้อนจะทำงานเหมือนรูท (โดยไม่ต้องนำหน้าด้วยsudo)

แต่ถ้าคุณต้องการรันโปรแกรมจำลองเทอร์มินัลกราฟิกเป็นรูทให้อ่านต่อ ฉันนำเสนอสองวิธี: ด้วยgksu/ gksdoและด้วยsudoคำสั่ง

ด้วยgksu/gksudo

เนื่องจากคุณมีแพ็คเกจgksuติดตั้ง gksuติดตั้งอยู่คุณสามารถเรียกใช้gnome-terminalเป็นรูทด้วย:

gksu gnome-terminal
gksudo gnome-terminal

(เนื่องจากgksuตั้งค่าเป็นโหมด sudo ใน Ubuntu โดยค่าเริ่มต้นสิ่งเหล่านี้ควรเทียบเท่า)

ทำงานgnome-terminalเป็น root โดยไม่ต้องทำการควบคุมที่ไม่ใช่ root:

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

นี้มักจะประสบความสำเร็จกับ+Alt F2กล่องข้อความชื่อคำสั่งเรียกใช้ (หรือคล้ายกัน) จะปรากฏขึ้นและคุณสามารถป้อนคำสั่งของคุณ

ตัวอย่างเช่นมีลักษณะเช่นนี้ใน Unity:

เรียกใช้กล่องข้อความคำสั่งใน Unity

และเช่นนี้ใน MATE (GNOME Flashback / Fallback, Xfce, LXDE คล้ายกัน):

เรียกใช้กล่องโต้ตอบคำสั่งใน MATE

โปรดทราบว่าสิ่งนี้ใช้ได้กับgksuและgksudoเนื่องจากใช้กล่องโต้ตอบการตรวจสอบสิทธิ์แบบกราฟิก หากคุณต้องกดAlt+ F2และเรียกใช้sudo ...คุณจะไม่สามารถโต้ตอบกับรหัสผ่านได้

กับ sudo

หากคุณไม่มีแพ็คเกจ gksu และคุณไม่ต้องการติดตั้งคุณสามารถใช้:

sudo -H gnome-terminal

การ-Hตั้งค่าสถานะมีความสำคัญเนื่องจากจะตั้งค่าHOMEตัวแปรสภาพแวดล้อม/rootแทนที่จะเป็นโฮมไดเรกทอรีของผู้ใช้ของคุณเอง คุณไม่ควรใช้sudo gnome-terminalเนื่องจากสามารถแยกการกำหนดค่า gnome-terminal ที่เป็นของผู้ใช้ที่ไม่ใช่รูท สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้โปรดดู:

( sudo -i gnome-terminalก็ไม่เป็นไร)

การกำจัดเทอร์มินัลที่ไม่ใช่รูทควบคุม:

หากคุณ(1)เปิดเทอร์มินัลกราฟิก(2)เรียกใช้บางสิ่งบางอย่างsudo -H gnome-terminalในนั้นเพื่อสร้างเทอร์มินัลรูทกราฟิกใหม่และ(3)ออกจากเทอร์มินัลกราฟิกที่ไม่ใช่รูทดั้งเดิม ... .

นี่เป็นเพราะเทอร์มินัลกราฟิกรูทถูกส่งSIGHUPเมื่อเทอร์มินัลที่เป็นเจ้าของถูกออก

เพื่อป้องกันสิ่งนี้คุณอาจคิดว่าคุณสามารถเปิดเทอร์มินัลรูทแบบกราฟิกด้วย:

sudo -H gnome-terminal &

แต่วิธีนี้จะใช้ได้เฉพาะในกรณีที่sudoไม่ต้องขอรหัสผ่าน หากเป็นเช่นนั้นคุณจะไม่เห็นพรอมต์รหัสผ่าน

วิธีหนึ่งในการแก้ไขปัญหานี้คือการใช้:

sudo -v
sudo -H gnome-terminal

sudo -vมีอยู่เพียงเพื่อจุดประสงค์นี้ ตามที่อธิบายไว้ในman sudo"การปรับปรุง [s] ข้อมูลประจำตัวที่แคชของผู้ใช้รับรองความถูกต้องของผู้ใช้หากจำเป็น"

ทราบว่านี้จะยังไม่ทำงานถ้าเรียกใช้โดยตรงจากสภาพแวดล้อมเดสก์ทอปของคุณAlt+ F2"รันคำสั่ง" sudo -vกล่องเพราะคุณยังคงต้องขั้วให้ใส่รหัสผ่านของคุณสำหรับ

หรือคุณสามารถทำได้ในสิ่งที่อาจเรียกได้ว่าเป็นวิธีดั้งเดิมโดยการหยุดงานหลังจากที่เริ่ม:

  1. เรียกใช้sudo -H gnome-terminalจากเทอร์มินัลกราฟิกที่ไม่ใช่รูทดั้งเดิม
  2. sudoป้อนรหัสผ่านของคุณเป็นได้รับแจ้งจาก เทอร์มินัลกราฟิกจะเริ่มขึ้น
  3. ยังอยู่ในเทอร์มินัลที่ไม่ใช่รูทกดCtrl+ Zเพื่อระงับเทอร์มินัลรูท ในขณะที่รูทเทอร์มินัลถูกระงับคุณไม่สามารถใช้งานได้ ส่วนต่อประสานจะไม่ตอบสนองต่อการกระทำของคุณ
  4. exitออกจากการควบคุมสถานีที่ไม่ใช่รากด้วย งานเทอร์มินัลรูทแบบกราฟิกจะถูกยกเลิกและไม่ได้รับอนุญาตโดยเทอร์มินัลที่ไม่ใช่รูทโดยอัตโนมัติ

ในระยะสั้น:

sudo -H gnome-terminal
^Z
exit

แต่สมมติว่าคุณต้องการใช้เทอร์มินัลที่ไม่ใช่รูทดั้งเดิมต่อไป จากนั้นคุณสามารถเรียกใช้โดยที่หมายเลขงานของเทอร์มินัลรูทกราฟิกจะกลับมาทำงานในพื้นหลังต่อไป คุณสามารถเรียกใช้เพื่อหาแต่คุณอาจจะไม่ต้อง - จำนวนที่แสดงให้เห็นว่าเมื่อคุณกด+ ตัวอย่างเช่น:bg NNjobsN[N]CtrlZ

ek@Ilex:~$ sudo -H gnome-terminal
[sudo] password for ek: 
^Z
[1]+  Stopped                 sudo -H gnome-terminal
ek@Ilex:~$

xtermฉันยังสามารถดำเนินการโดย มีเทอร์มินัลกี่เครื่องใน Ubuntu
αғsнιη

@ KasiyA มาก ฉันเคยหยุดนับที่ 25 สีโป๊วเทอร์มินอลก็ถูกใช้มากเช่นกัน
Rinzwind

6

คำตอบสั้น ๆ :

gksudo gnome-terminal
(assuming gksu is installed)

เปิดเทอร์มินัลในฐานะรูท:

root@jacob-Satellite-L300:~#

ไม่จำเป็นต้องอธิบายว่าคุณสามารถใช้สิ่งนี้เพื่อเปิดเทอร์มินัลใด ๆในฐานะรูทเช่นนี้ เช่น Vala ( gksudo vala-terminal), Xterm ( gksudo xterm), Termit ( gksudo termit), UXTerm ( gksudo uxterm), Konsole ( gksudo konsole) และอื่น ๆ


1
แล้วเรื่องนี้sudo x-terminal-emulatorล่ะ
αғsнιη

@KasiyA คุณยังควรใช้gksu x-terminal-emulator, gksudo x-terminal-emulator, kdesudo x-terminal-emulator(ถ้าสภาพแวดล้อมเดสก์ทอปของคุณคือ KDE) sudo -H x-terminal-emulatorหรือsudo -i x-terminal-emulatorแทนเพื่อหลีกเลี่ยงปัญหาที่ ในทำนองเดียวกันsudo geditไม่ควรใช้เพื่อเรียกใช้geditเป็นราก
Eliah Kagan

2

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

ด้วย xterm

xterm -bg black -fg red -e sudo -i

'-e sudo -i' บอกให้ xterm เปลี่ยนเป็นรูทในเซสชั่นและสีจะทำให้เห็นได้ชัดว่ามันเป็นรูตเชลล์

ด้วย Gnome Terminal

gnome-terminal -- sudo -i

ส่วนตัวผมผูกปุ่มลัดของ Gnome เพื่อเปิดเครื่องเทอร์มินัลอย่างง่ายดาย

ไปที่การตั้งค่าคีย์บอร์ดเพิ่มทางลัดที่กำหนดเองด้วย Shortcut Super + X และคำสั่ง 'xterm -bg black -fg white -sb -sl 5000', และ root xterm พร้อม Shortcut Super + Z และคำสั่ง 'xterm -bg black -fg black - sb -sl 5,000 -e sudo -i '

ในอดีตฉันมักจะชอบ xterm มากกว่า Gnome Terminal เพราะตัวอักษรนั้นเล็กและเรียบง่าย แต่ตอนนี้ฉันมาถึง Terminal แล้วฉันจึงรันหน้าจอขนาดใหญ่ DPI สูง การเข้ารหัสสีเทอร์มินัลของคุณเป็นความคิดที่ดีมากเมื่อคุณเริ่มใช้โปรไฟล์ที่แตกต่างกันซึ่งมีผลกระทบที่เป็นอันตรายเพื่อหลีกเลี่ยงการเกิดอุบัติเหตุ (เช่นรูทท้องถิ่นเครื่องของลูกค้าระยะไกล


0

มีอีกวิธีในการดำเนินการทดสอบและทำงานบน Ubuntu 16.04 LTS:

ติดตั้ง gnome-panel แรก:

sudo apt install gnome-panel

จากนั้นติดตั้ง gksu:

sudo apt install gksu

หลังจากการติดตั้งเสร็จสมบูรณ์ให้เรียกใช้:

gnome-desktop-item-edit ~/Desktop/ --create-new

สิ่งนี้จะสร้างทางลัดบนเดสก์ท็อป คุณควรมีตัวเลือกในการตั้งชื่อ ฉันเรียกว่า 'X-Term' แต่คุณสามารถโทรหาคุณได้ในทุกสิ่งที่คุณต้องการ พิมพ์/usr/bin/gksu* สำหรับเส้นทาง 'Command'

เมื่อคุณเปิดใช้ทางลัดบนเดสก์ท็อปใหม่คุณจะได้รับแจ้งให้แอปพลิเคชันทำงาน พิมพ์เป็น: xterm.

ตอนนี้คุณจะได้รับแจ้งให้ใส่รหัสผ่านของคุณ เมื่อคุณป้อนเข้าไปคุณจะสามารถเข้าถึงเทอร์มินัลรูทที่ใช้งานได้ จำไว้ว่าให้ใช้เมื่อจำเป็นจริงๆเท่านั้นและปิดตัวลงเมื่อคุณทำเสร็จแล้ว

* สมมติว่าคุณติดตั้ง Ubuntu ด้วยการตั้งค่าเริ่มต้นและยังไม่ได้เปลี่ยนแปลงระบบไฟล์ใด ๆ อย่างมีนัยสำคัญตั้งแต่การติดตั้ง


0

ฉันใช้ Debian 9 stretch

ไปที่แป้นพิมพ์ลัดเพิ่มคำสั่งดังนี้:

`gksu / usr / bin / x-terminal-emulator '

ฉันใส่Super + Tเป็นทางลัด

ตอนนี้ทุกครั้งที่คุณต้องการเปิดเทอร์มินัลในฐานะรูทเพียงพิมพ์ทางลัด

ฉันหวังว่ามันจะช่วยใครบางคนในอนาคต


-1

คุณสามารถเริ่มเชลล์เชิงโต้ตอบด้วย:

sudo -s

สำหรับข้อมูลเพิ่มเติมทำ:

man sudo

และอ่าน-s --shellหัวข้อ

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