ฉันจะเพิ่มการลืมรหัสผ่าน sudo ได้อย่างไร


61

ฉันรู้แล้วว่าฉันต้องการปรับแต่งไฟล์ / etc / sudoers แต่ฉันต้องการดูข้อมูลแบบเต็มและวิธีแก้ปัญหาที่ไม่ต้องการให้ฉันใช้viโปรแกรมแก้ไข

ปรับปรุง: visudoไม่เคยพยายามที่จะแก้ไขไฟล์ที่มีสิ่งอื่นมากกว่า


1
คุณสามารถตั้งค่า EDITOR env var ในขณะที่ใช้ visudo :: sudo env EDITOR = nano visudo
บุคคลที่ดี

คำตอบ:


86

เรียกใช้sudo visudoและเพิ่มบรรทัดนี้:

Defaults    timestamp_timeout=-1

man 5 sudoersดู -1ทำให้รหัสผ่านไม่หมดเวลา คุณสามารถเปลี่ยนจำนวนเป็นสิ่งที่คุณต้องการในไม่กี่นาที

หน้าคนสำหรับsudoบอกว่าsudo -v"ขยายเวลา sudo ออกไปอีก 5 นาที"

การเรียกใช้ 'sudo visudo' แทนการแก้ไขไฟล์จะทำให้ระบบตรวจสอบความถูกต้องของไฟล์ sudoers ก่อนที่จะยอมรับการเปลี่ยนแปลง ตัวอย่างเช่นหากคุณปล่อยให้ตัวละครเร่ร่อนไปที่ใดที่หนึ่งเมื่อคุณบันทึกและออกมันจะพูดว่า "มีข้อผิดพลาดในไฟล์ sudoers คุณต้องการทำอะไร" ... จึงให้โอกาสคุณในการย้อนกลับและแก้ไข เรื่องนี้เพิ่งเกิดขึ้นกับฉันเมื่อ 10 นาทีก่อน


20
ใช่ แต่visudoเรียกใช้การตรวจสอบสติพื้นฐานในไฟล์ sudoers ก่อนบันทึก หากคุณทำให้ไฟล์ยุ่งเหยิงโดยใช้viโดยตรงคุณอาจล็อคตัวคุณเองจากการใช้ sudo ทำให้การยกเลิกการเปลี่ยนแปลงนั้นยากมาก
nohillside

4
สิทธิพิเศษเป็นเช่นนั้นในระบบอื่น ๆ ดังนั้นจึงไม่มีอะไรเกี่ยวข้องกับ Apple visudoล้อมรอบตัวแก้ไขค่าเริ่มต้นของระบบ (ฉันจะเดาค่าเริ่มต้นของผู้ใช้รูทหากรูทแทนที่ค่าเริ่มต้น) ดังนั้นจึงไม่มีอะไรเกี่ยวข้องกับชื่อแถบ vi ในระบบของฉัน (ไม่ใช่ apple btw) ฉันได้รับ nano ลองใช้ตัวexport EDITOR='/bin/nano'แก้ไขอะไรก็ได้ที่คุณต้องการใช้ visudo
Chris

4
อืม ... คุณไม่สามารถใช้รูทเพื่อแก้ไขได้เพราะคุณไม่สามารถรูตได้เพราะคุณเพิ่งยัดไฟล์ sudo ของคุณ ... นั่นคือประเด็นทั้งหมด
daviewales

1
ในบทบาทมืออาชีพคุณอาจเข้าถึง sudo แต่ไม่มีรหัสผ่านรูท เซิร์ฟเวอร์ของคุณอาจอยู่ในศูนย์ข้อมูลทั่วประเทศทำให้เข้าถึงโหมดผู้ใช้คนเดียวได้ยาก แต่ถ้าคุณพูดว่าเป็นมืออาชีพคุณอาจจะไม่ได้รับคำเตือนเช่นนั้น ประเด็นคือคุณควรเรียนรู้จากผู้เชี่ยวชาญ อย่ามองหาวิธีหลีกเลี่ยงการสร้างนิสัยที่ดี ถ้าอย่างนั้นเราต้องได้ยินเสียงร้องอันคลั่งไคล้ของคุณใน Stack Exchange และ IRC
Bruno Bronosky

1
(อาจเห็นได้ชัดสำหรับทุกคน แต่เพิ่ม): timestamp_timeout เป็นนาทีอาจรวมองค์ประกอบที่เป็นเศษส่วน
ผู้ใช้

3

ใช้ความระมัดระวังอย่างมากเกี่ยวกับการแก้ไข/etc/sudoersโดยตรง!

ตัวอย่างเช่นฉันลองคำแนะนำข้างต้นโดยตรง:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

ซึ่งทำให้/etc/sudoersไฟล์ของฉันยุ่งเหยิง(บน CentOS Virtualbox VM) ควรได้รับ:

sudo sh -c 'echo -e "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

โชคดีที่ฉันสามารถเข้าถึงบัญชีรูทเข้าสู่ระบบในฐานะรูทใช้visudoและแก้ไขปัญหาได้! ดังนั้นฉันเห็นด้วยกับความคิดเห็นข้างต้นที่จะใช้visudoแทน


1

ข้อมูลทั้งหมดสำหรับ sudoers สามารถพบได้จาก terminal ด้วยคำสั่ง

man sudoers

คุณยังสามารถใช้ข้อความง่าย ๆ ในการแก้ไขไฟล์ได้อย่างไรก็ตามองอาจทำให้มันยาก sudoers คือ-r--r----- (Octal 0440)

สิ่งนี้บ่งชี้ว่า Apple ไม่ต้องการให้คุณเล่นไฟล์ นี่คือความปลอดภัยหลักของระบบปฏิบัติการ

ตัวเลือกสำหรับการแก้ไขคือ vi, emacs หรือ BBEdit โปรดส่วนตัวของฉัน


5
มีเหตุผลตั้งค่าสิทธิ์เหล่านั้น พวกเขาถูกตั้งค่าในความพยายามที่จะบังคับให้คุณใช้visudoแทนที่จะแก้ไขไฟล์ด้วยตัวคุณเอง นอกจากนี้สิ่งนี้ไม่เกี่ยวข้องกับ OS X มันเป็นมาตรฐาน * ระวัง นอกจากนี้ถ้าคุณต้องการที่จะใช้โปรแกรมแก้ไขไม่ใช่ค่าเริ่มต้นเพียงแค่ตั้งค่าตัวแปรสภาพแวดล้อมก่อนที่จะเรียก$EDITOR เช่นvisudo EDITOR=nano sudo visudo
daviewales

1

ปิดการใช้งาน sudo timeout ด้วยคำสั่งนี้:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

วิธีเปิดใช้งานการหมดเวลา sudo อีกครั้งด้วยวิธีนี้:

sudo sed -i "/Defaults timestamp_timeout=-1/d" /etc/sudoers

8
จากหน้า man sudoers: ไฟล์ sudoers ควรถูกแก้ไขโดยคำสั่ง visudo ที่ล็อคไฟล์และทำการตรวจสอบทางไวยากรณ์ มีความจำเป็นที่ sudoers ปราศจากข้อผิดพลาดทางไวยากรณ์เนื่องจาก sudo จะไม่ทำงานด้วยไฟล์ sudoers ที่ไม่ถูกต้อง syntactically
Matteo

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

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