ฉันจะรันคำสั่งในฐานะผู้ดูแลระบบได้อย่างไร (รูท)


66

ฉันต้องเรียกใช้คำสั่งด้วยสิทธิ์ระดับผู้ดูแล มีคนพูดว่าฉันควรรันคำสั่งในฐานะรูท ฉันจะทำสิ่งนี้ได้อย่างไร


2
โปรดดูการสนทนาเมตาเกี่ยวกับคำถามนี้
สเตฟาน

คำตอบ:


94

ความเป็นไปได้ของ commandline หลักสองประการคือ:

  • ใช้suและป้อนรหัสผ่านรูทเมื่อได้รับแจ้ง
  • ใส่sudoคำสั่งด้านหน้าแล้วป้อนรหัสผ่านของคุณเมื่อได้รับแจ้ง

การรันคำสั่งเชลล์ในฐานะรูท

sudo (แนะนำเมื่อไม่ได้เรียกใช้การแสดงผลแบบกราฟิก)

นี่เป็นวิธีที่ต้องการในระบบส่วนใหญ่รวมถึง Ubuntu, Linux Mint, (เนื้อหา) Debian และอื่น ๆ หากคุณไม่ทราบรหัสผ่านรูทอื่นให้ใช้วิธีนี้

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

ตัวอย่าง:

sudo service apache restart

sudoหากคุณจำเป็นต้องเรียกใช้คำสั่งหลายเป็นรากคำนำหน้าแต่ละของพวกเขาด้วย บางครั้งการเรียกใช้เชลล์แบบโต้ตอบในฐานะรูทจะสะดวกกว่า คุณสามารถใช้sudo -iสำหรับ:

$ sudo -i
# command 1
# command 2
...
# exit

แทนที่จะคุณสามารถใช้sudo -i sudo -sแตกต่างก็คือ-iอีกครั้งฉัน nitializes สภาพแวดล้อมที่เป็นค่าเริ่มต้นมีสติในขณะที่-sใช้แฟ้มการกำหนดค่าของคุณให้ดีขึ้นหรือแย่ลง

สำหรับข้อมูลเพิ่มเติมดูเว็บไซต์ sudoหรือพิมพ์man sudoบนระบบของคุณ Sudo สามารถกำหนดค่าได้มาก ตัวอย่างเช่นสามารถกำหนดค่าให้ผู้ใช้บางคนรันคำสั่งบางอย่างเป็นรูตเท่านั้น อ่านsudoersman pageสำหรับข้อมูลเพิ่มเติม ใช้sudo visudoสำหรับแก้ไขไฟล์ sudoers

su

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

ตัวอย่าง:

su -c 'service apache restart'

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

ในการรันหลายคำสั่งในฐานะรูทการเริ่มเชลล์แบบโต้ตอบได้สะดวกยิ่งขึ้น

$ su
# command 1
# command 2
...
# exit

ในบางระบบที่คุณต้องการที่จะอยู่ในกลุ่มจำนวน 0 (เรียกว่าwheel) suเพื่อใช้ (ประเด็นคือเพื่อ จำกัด ความเสียหายหากรหัสผ่านรูทถูกรั่วไหลโดยไม่ตั้งใจกับใครบางคน)

เข้าสู่ระบบในฐานะ root

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

โหมดผู้ใช้คนเดียว

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

นอกจากนี้คุณยังจะได้รับโหมดผู้เดียวโดยใช้คำสั่ง telinit นี้telinit 1; อย่างไรก็ตามคำสั่งนี้ต้องการให้คุณได้รับสิทธิ์รูทผ่านวิธีอื่นในการใช้งาน

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

โปรแกรมอื่น ๆ

Calife

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

แย้มยิ้ม

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

ซูเปอร์

Super ให้คุณเรียกใช้คำสั่งในฐานะผู้ใช้อื่นรวมถึงรูท คำสั่งต้องได้รับอนุญาตจากผู้ดูแลระบบ

การรันคำสั่งกราฟิกแบบรูท

ดูยังวิกิพีเดีย

PolicyKit (แนะนำให้ใช้เมื่อใช้ GNOME)

pkexecเพียงแค่คำนำหน้าคำสั่งของคุณต้องการด้วยคำสั่ง โปรดทราบว่าในขณะที่วิธีนี้ใช้งานได้ในกรณีส่วนใหญ่ แต่ก็ไม่สามารถทำงานได้ในระดับสากล

ดูman pkexecข้อมูลเพิ่มเติม

KdeSu, KdeSudo (แนะนำให้ใช้เมื่อใช้ KDE)

kdesuและkdesudoเป็นกราฟิคส่วนหน้าsuและsudoตามลำดับ พวกเขาอนุญาตให้คุณรันโปรแกรม X Window ในฐานะรูทโดยไม่ต้องยุ่งยาก พวกเขาเป็นส่วนหนึ่งของKDE ชนิด

kdesu -c 'command --option argument'

และป้อนรหัสผ่านรูทหรือพิมพ์

kdesudo -c 'command --option argument'

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

โปรแกรมอื่น ๆ

Ktsuss

Ktsuss (“ ทำให้ su ง่าย, โง่”) เป็นเวอร์ชันกราฟิกของ su

Beesu

Beesuเป็น front-end แบบกราฟิกของคำสั่ง su ที่แทนที่ Gksu ในระบบปฏิบัติการที่ใช้ Red Hat มันได้รับการพัฒนาเป็นหลักสำหรับ RHEL และ Fedora

วิธีการที่ล้าสมัย

gksu และ gksudo

gksuและgksudoเป็นกราฟิคส่วนหน้าsuและsudoตามลำดับ พวกเขาอนุญาตให้คุณรันโปรแกรม X Window ในฐานะรูทโดยไม่ต้องยุ่งยาก พวกเขาเป็นส่วนหนึ่งของคำพังเพย ชนิด

gksu command --option argument

และป้อนรหัสผ่านรูทหรือพิมพ์

gksudo command --option argument

และป้อนรหัสผ่านของคุณ (หากได้รับอนุญาตให้ทำงานsudo)

gksuและgksudoล้าสมัย พวกเขาถูกแทนที่ด้วย PolicyKit ใน GNOME และการแจกแจงจำนวนมาก (เช่น Ubuntu) จะไม่ติดตั้งตามค่าเริ่มต้นอีกต่อไป คุณไม่ควรพึ่งพาพวกเขาที่มีอยู่หรือทำงานอย่างถูกต้อง

ด้วยตนเองผ่านหนึ่งในวิธีการที่ใช้เชลล์

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

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

การแก้ไขไฟล์ในฐานะรูท

ดูฉันจะแก้ไขไฟล์ในฐานะรูทได้อย่างไร


2
ควรสังเกตว่าsudoจะใช้งานได้เมื่อ (1) ติดตั้งและ (2) หากการใช้งานของคุณอยู่ในไฟล์ sudoers และอนุญาตให้ดำเนินการได้
n0pe

2
จำเป็นต้องได้รับการอัปเดต pkexecมีการแทนที่gksu/ gksudoในการกระจายจำนวนมากในปัจจุบัน
strugee

1
@strugee - คุณจะลองและอัปเดตสิ่งนี้หรือไม่ เนื้อหาภายใต้ Redhat ไม่ถูกต้องเช่นกัน
slm

8

การใช้su:

$ su -c command

หรือ

$ su
# command
# exit

ไม่ว่าในกรณีใดคุณจะถูกถามให้ใส่rootรหัสผ่าน สำหรับข้อมูลเพิ่มเติมโปรดดูที่หน้าคู่มือ


3

เนื่องจากคำถามไม่ใช่เฉพาะ Linux นี่คือวิธีที่คุณบรรลุเป้าหมายเดียวกันใน Solaris 9+ (หรือ Trusted Solaris 8):

Solaris ตั้งแต่รุ่นที่ 9 ได้รวมชุดเครื่องมือที่เรียกว่า RBAC หรือการควบคุมการเข้าถึงตามบทบาท

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

โดยพื้นฐานแล้วคุณระบุการอนุญาตใน / etc / security / auth_attr จากนั้นให้สิทธิ์ผู้ใช้หรือบทบาทใน / etc / user_attr

คุณกำหนดโปรไฟล์ใน / etc / security / prof_attr จากนั้นคุณเชื่อมโยงคำสั่งกับโปรไฟล์เหล่านั้นใน / etc / security / exec_attr ตามด้วยการกำหนดโปรไฟล์เหล่านั้นให้กับผู้ใช้ในไฟล์ / etc / user_attr

เมื่อสิ่งเหล่านั้นทำคุณทำงานจริงpfexec <command>ในการดำเนินการคำสั่งด้วยสิทธิพิเศษหรือการอนุมัติที่ได้รับไปที่ผู้ใช้ที่คำสั่ง

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

ข้อดีอีกประการของ RBAC คือคุณสามารถสร้างบัญชีบทบาทและกำหนดบทบาทนั้นให้กับผู้ใช้ที่สามารถกลายเป็นรูตได้ด้วยคำสั่ง 'su' และรหัสผ่านรูท ผู้ใช้รูทจะสามารถเข้าสู่ระบบในโหมดผู้ใช้เดียวซึ่งดีกว่า (ในความคิดของฉัน) กว่ารุ่นลินุกซ์ที่คุณสามารถปิดการใช้งานรหัสผ่านรูpasswd -d rootทหรือล็อคบัญชีpasswd -l rootรูทได้ ยากเมื่อมีสิ่งผิดปกติ

เบน Rockwood มีโพสต์บล็อกที่ดีเกี่ยวกับอาร์แบคที่สามารถอ่านได้ในการใช้อาร์แบคบน (เปิด)


3

หรือคุณสามารถสั่งให้มหาอำนาจบางอย่าง ฉันกำลังพูดถึงสิทธิ์พิเศษที่คำสั่งถูกดำเนินการโดยได้รับอนุญาตจากเจ้าของ

รับเส้นทางของคำสั่งโดย#which <command>และตั้งค่า SUID หรือ SGID สำหรับเส้นทางนั้น

ควรได้รับบิต PS - SUID และ SGID ด้วยความระมัดระวัง พวกเขาสามารถทำให้ระบบของคุณไม่ปลอดภัย

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