ฉันจะทำให้ sudo ขอรหัสผ่านรูทได้อย่างไร


25

เมื่อฉันเรียกใช้sudoในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษมันจะถามรหัสผ่านของฉันไม่ใช่รหัสผ่านรูท มักจะสะดวก แต่ก็ลดจำนวนข้อมูลที่ผู้ใช้จะต้องมีเพื่อเรียกใช้คำสั่งในฐานะรูท ดังนั้นฉันจะsudoขอรหัสผ่านรูทแทนที่จะใช้รหัสผ่านของผู้ใช้ที่กล่าวอ้างได้อย่างไร

ฉันรู้ว่ามันจะต้องทำโดยใช้บรรทัด/etc/sudoersแต่ฉันไม่สามารถแยกไวยากรณ์ BNF อย่างถูกต้องในหน้าคนเพื่อคิดออกว่าจะเขียนอะไร


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

@slartibartfast: แต่จะเกิดอะไรขึ้นเมื่อฉันต้องการเรียกใช้คำสั่งในฐานะรูทที่ไม่อยู่ในรายการที่ได้รับการอนุมัติล่วงหน้า
David Z

คำตอบ:


25

ตกลงนี่เป็นอีกครั้งเพื่อให้คุณสามารถกำหนดเครื่องหมายถูก

ใน/etc/sudoersเพิ่มบรรทัดนี้:

Defaults rootpw

เพื่อเปิดแฟล็ก rootpw ทำให้ sudo ขอรหัสผ่านรูท


7
คุณควรใช้visudoคำสั่งแทนการแก้ไข/etc/sudoersไฟล์ ด้วยตนเอง visudoตรวจสอบความถูกต้องของไฟล์เพื่อให้แน่ใจว่าถูกต้องก่อนทำการบันทึกดังนั้นคุณจะไม่ถูกล็อกจาก sudo หากคุณทำผิดพลาดทางไวยากรณ์ ... askubuntu.com/a/81054/166411
Colin D Bennett

5

คุณต้องเปิดrootpwธง


อย่างที่ฉันพูดฉันไม่สามารถทำงานผ่านสัญกรณ์ BNF ในหน้าคนได้ - ดังนั้นฉันจะแทรกบรรทัดใด/etc/sudoersเพื่อเปิดใช้งานการตั้งค่าสถานะนี้
David Z

2
ค่าเริ่มต้น rootpw
Florian Diesch

@ Florian: whaddya รู้ว่ามันเป็นเรื่องง่าย :-) ถ้าคุณโพสต์สิ่งนั้นเป็นคำตอบคุณจะได้เครื่องหมายถูก
David Z

3

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

หลังจากรวมขั้นตอนทั้งหมดเข้าด้วยกันจากแหล่งต่าง ๆ - รวมถึงคำตอบสำหรับคำถามนี้หลายขั้นตอนเหล่านี้ทำงานบน Ubuntu-Gnome 16.04 LTS:

  1. ตั้งรหัสผ่านสำหรับรูท
    • นี่เป็นสิ่งสำคัญอย่างยิ่งที่ต้องทำครั้งแรก ! (Ubuntu ไม่มีรหัสผ่านโดยอัตโนมัติสำหรับผู้ใช้ ROOT เนื่องจากการกำหนดค่าความปลอดภัยมาตรฐาน
    • หากคุณไม่ทำสิ่งนี้ก่อนคุณจะล็อคตัวเองจากการเข้าถึงสิทธิ์ของรูท สิ่งนี้สามารถเอาชนะได้โดยการบูตด้วย Live Disk ติดตั้งฮาร์ดไดรฟ์และแก้ไขไฟล์ sudoers แต่วิธีที่ดีที่สุดคือหลีกเลี่ยง
    • เปิดเทอร์มินัลแล้วป้อน: sudo passwd
    • ตั้งรหัสผ่านใหม่สำหรับผู้ใช้ ROOT
  2. เปลี่ยนคอนฟิกูเรชัน SUDO เพื่อต้องการรหัสผ่านรูท
    • SUDO ต้องการผู้ใช้ที่ร้องขอสิทธิ์รูท
    • การตั้งค่าสถานะ "rootpw" แทนบอก SUDO ต้องการรหัสผ่านสำหรับผู้ใช้รูต
    • เปิดเทอร์มินัลแล้วป้อน: sudo visudo
    • นี่จะเป็นการเปิดไฟล์ "/ etc / sudoers"
    • หลังจากบรรทัด "ค่าเริ่มต้น" อื่น ๆ เพิ่ม: Defaults rootpw
    • บันทึก (สมมติว่าคุณอยู่ในนาโนซึ่งเป็นค่าเริ่มต้นนี่คือ CTRL + O)
    • ปิดไฟล์ (CTRL + X) & ออกจากเทอร์มินัล
  3. คุณทำเสร็จแล้ว!

เพียงแค่บันทึกย่อ - ฉันยังต้องการตรวจสอบให้แน่ใจว่าผู้ใช้รูทไม่สามารถใช้ในการเข้าสู่ระบบจากการเข้าสู่ระบบแบบกราฟิกและเพื่อหาวิธีที่จะแยกออก เห็นได้ชัดว่าผู้ใช้รูทจะถูกยกเว้นโดยค่าเริ่มต้นและไม่สามารถใช้ในการเข้าสู่ระบบผ่านการล็อกอินแบบกราฟิกของ Gnome ซึ่งเป็นสิ่งที่ดีมาก!


คุณสามารถแนะนำการปรับปรุงเพื่อย้อนกลับการโหวตได้หรือไม่?
SRDC

ดูเหมือนจะไม่ผิด
Ruslan

1
อาจเป็นเพราะการตั้งค่า (และการทำงาน) อย่างง่าย: root ALL=(ALL) ALL Defaults targetpw ALL ALL=(ALL) ALL อนุญาตให้รูท sudo สำหรับผู้ใช้ทุกคนที่รู้รหัสผ่านรูท อย่างไร้เดียงสาเปลี่ยนสองบรรทัดสุดท้ายที่จะแก้ปัญหาของคุณทำให้เกิดกิจจากDefaults rootpw sudoคุณต้องเพิ่มผู้ใช้ของคุณเพื่อsudoersชอบ: myusername ALL=(ALL) ALLหรือให้สิทธิ์คล้ายกับกลุ่มแล้วเพิ่มmyusernameในกลุ่มนั้น
พอลปาร์คเกอร์

1

การกำหนดค่าทั่วไปที่ต้องใช้รหัสผ่านของเป้าหมาย (ไม่ใช่สิ่งที่เราต้องการ):

Defaults targetpw
ALL ALL=(ALL) ALL

บรรทัดที่สองจะอ่านออกเสียงดัง ๆ : "ผู้ใช้ทั้งหมดบนโฮสต์ทั้งหมดสามารถปลอมตัว (ALL) ผู้ใช้เมื่อเรียกใช้คำสั่งทั้งหมด" และDefaults targetpwวิธีการที่พวกเขาจำเป็นต้องรู้รหัสผ่านของผู้ใช้ที่พวกเขากำลังปลอมแปลงให้ทำเช่นนั้น

เปลี่ยนการตั้งค่าอย่างง่าย ๆ นี้เป็น:

Defaults rootpw

จะไม่ปล่อยให้ผู้ใช้หรือกลุ่มมีสิทธิ์เรียกใช้คำสั่งในฐานะผู้ใช้รายอื่น

ความเป็นไปได้หนึ่งอย่างคือ:

Defaults rootpw
myuser ALL=(ALL) ALL

ในภาษาอังกฤษธรรมดาmyuserตอนนี้มีความสามารถในการเรียกใช้คำสั่งทั้งหมดเป็นผู้ใช้บนโฮสต์ทั้งหมดตราบใดที่รู้รหัสผ่านรูท

ความเป็นไปได้ในการทำงานอีกประการหนึ่งคือ:

Defaults rootpw
%sudousers ALL=(ALL) ALL

สมาชิกของsudousersกลุ่มใด ๆจะมีความสามารถในการเรียกใช้คำสั่งทั้งหมดเป็นผู้ใช้บนโฮสต์ทั้งหมดตราบใดที่รู้รหัสผ่านรูต ในการอนุญาตให้myuserเรียกใช้คำสั่ง sudo sudousersจะต้องมีการเพิ่มในกลุ่มรอง

su
usermod -a -G sudousers myuser
exit

คำอธิบายที่ดี รายละเอียดเพิ่มเติมกว่าทีละขั้นตอนที่ฉันโพสต์ (ซึ่งทำงานตามค่าเริ่มต้นของ Ubuntu)
SRDC

0

คุณสามารถปิด sudo และใช้งานsu -cได้


ไม่สะดวกเพราะฉันต้องใส่รหัสผ่านทุกครั้งที่เปิดใช้งาน กรณีการใช้ที่นี่จะต้องเรียกใช้หลายคำสั่งในฐานะที่เป็นรากในการสืบทอดอย่างรวดเร็ว
David Z

-1

การใช้

sudo su

จะช่วยให้คุณสามารถรันคำสั่งได้มากเท่าที่คุณต้องการอย่างต่อเนื่อง


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

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