วิธีการกำหนดค่าไฟล์ sudoers อย่างถูกต้องบน debian wheezy?


10

ฉันเคยเห็นบล็อกโพสต์มากมายที่บอกว่าเพียงพอที่จะทำ

aptitude install sudo
su root
adduser USERNAME sudo

แต่นั่นก็เป็นเพียงการปกป้องaptitudeในคำอื่น ๆ :

  • aptitude install sendmailจะขอรหัสผ่านคุณจะต้อง sudoเรียกใช้aptitude

  • apt-get install sendmailจะไม่ขอรหัสผ่านไม่sudoจำเป็นต้องใช้สิทธิ์

  • หากคุณแก้ไขไฟล์ที่มีการป้องกันเช่นไฟล์ที่อยู่ในetcนั้นจะไม่ถามรหัสผ่านไม่sudoจำเป็นต้องใช้สิทธิ์

  • คุณสามารถเรียกใช้และหยุดบริการเช่นapacheนั้นจะไม่ขอรหัสผ่านไม่sudoจำเป็นต้องใช้สิทธิ์

จะแก้ไขได้อย่างไร? นี่คือไฟล์ sudoers ของฉัน:

 This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$

# Host alias specification

# User alias specification

# Cmnd alias specification

นี่คือผลลัพธ์ของsudo -l:

Matching Defaults entries for root on this host:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User root may run the following commands on this host:
    (ALL : ALL) ALL
    (ALL : ALL) ALL

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

ฉันใหม่ใน Linux แต่ Debian wiki says - adduser ชื่อผู้ใช้ sudo wiki.debian.org/sudo
AntiCZ

คำตอบ:


16

คุณยังไม่ได้เพิ่มกฎ sudo ใด ๆ ดังนั้นคุณจึงไม่สามารถใช้ sudo เพื่ออะไรได้

คำสั่งเพิ่มผู้ใช้ที่ระบุไปยังกลุ่มที่เรียกว่าadduser USERNAME sudo sudoกลุ่มที่มีชื่อนั้นจะต้องมีอยู่ สร้างมันด้วยaddgroup sudoถ้ามันไม่ หลังจากเพิ่มผู้ใช้ในกลุ่มผู้ใช้ต้องออกจากระบบและกลับเข้ามาใหม่เพื่อให้การเป็นสมาชิกกลุ่มมีผล

sudoไม่ใช่ชื่อกลุ่มพิเศษ เป็นแบบแผนเพื่ออนุญาตให้ผู้ใช้ในกลุ่มเรียกsudoใช้คำสั่งเป็นรูตผ่านsudoยูทิลิตี้ ต้องใช้บรรทัดต่อไปนี้ในsudoersไฟล์:

%sudo ALL = (ALL) ALL

เรียกใช้visudoเพื่อแก้ไขไฟล์ sudoers ไม่ต้องแก้ไขโดยตรง

ฉันไม่รู้เลยว่าทำไมคุณถึงเชื่อว่า“ นั่นเป็นเพียงการปกป้องความถนัด” ไม่มีอะไรพิเศษเกี่ยวกับความสามารถ เมื่อคุณอนุญาตให้ผู้ใช้เรียกใช้คำสั่งในฐานะรูทผู้ใช้นั้นสามารถเรียกใช้sudo aptitude …หรือsudo apt-get …หรือsudo service …หรือsudoeditแก้ไขไฟล์ที่ต้องได้รับอนุญาตจากรูทเพื่อแก้ไข การอยู่ในไฟล์ sudoers ไม่ได้เปลี่ยนสิทธิ์ของผู้ใช้ของคุณโดยตรงสิ่งที่ทำคือให้คุณเรียกsudoใช้คำสั่งในฐานะรูท sudoคำสั่งทำงานเป็นรากเฉพาะเมื่อคุณเรียกพวกเขาผ่าน บางโปรแกรมอาจทำโดยอัตโนมัติโดยเฉพาะอย่างยิ่งโปรแกรม GUI ที่ส่วนต่อประสานผู้ใช้ทำงานโดยไม่มีสิทธิ์พิเศษและเฉพาะแบ็คเอนด์เท่านั้นที่ทำงานเป็นรูsudo


เขาวิ่งได้sudo -lเหมือนรูท แม้ว่าจะมีคำจำกัดความที่มีประโยชน์สำหรับผู้ใช้พวกเขาก็จะไม่ได้รับการแสดง ดังนั้นคุณเดาว่า "คุณยังไม่ได้เพิ่มกฎ sudo ใด ๆ " อาจผิด
Hauke ​​Laging

@HaukeLaging ฉันไม่เข้าใจความคิดเห็นของคุณ “ คุณยังไม่ได้เพิ่มกฎ sudo ใด ๆ ” ไม่ใช่การเดา: sudoersไฟล์อยู่ในคำถาม
Gilles 'หยุดความชั่วร้าย'

ฉันใกล้จะตกต่ำโดยตระหนักว่าฉันเพ่งความสนใจไปที่sudo -lผลลัพธ์ แต่โชคดีที่ ... ดูเหมือนว่าเนื้อหาคำถามไม่สามารถเป็นไฟล์ทั้งหมดได้เพราะมันไม่สอดคล้องกับผลลัพธ์ อย่างน้อยsudoรุ่นของฉันไม่ได้อ้างสิทธิ์ "ผู้ใช้รูทอาจรันคำสั่งต่อไปนี้" sudoersโดยไม่มีนิยามคำสั่งใด ๆ (เช่นเดียวกับคำถาม)
Hauke ​​Laging

@HaukeLaging คุณพูดถูกฉันตรวจสอบด้วยเสียงฮืด ๆ และsudo -lเพียงแค่พูดว่า“ ผู้ใช้รูทไม่ได้รับอนุญาตให้เรียกใช้ sudo บน darkstar” และsudoกลุ่มอยู่ในไฟล์ sudoers ตามค่าเริ่มต้นเมื่อส่งเสียงฮืด ๆ /etc/sudoers.dรายการที่จำเป็นอาจถูกย้ายลงในแฟ้มภายใต้ ไม่ว่าในกรณีใดก็ตามไฟล์ sudoers นั้นจะไม่ทำตามที่ฟิสเชอร์สันนิษฐาน
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

4

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

sudo aptitude install sendmail
sudo apt-get install sendmail

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


ใช่. อันหนึ่งไม่ได้แยกออกจากกัน คำตอบที่ถูกต้องไม่ได้อธิบายวิธีการตั้งค่า sudo อย่างถูกต้องและในแง่นั้นมันตอบคำถาม มันไม่ได้อธิบายว่าทำไมในคำพูดของคำถาม "ที่ปกป้องความถนัดเท่านั้น" Gilles เขียนตัวเอง: "ฉันไม่รู้ว่าทำไมคุณถึงเชื่อว่า" ที่ปกป้องความถนัดเท่านั้น " ดังที่ฉันได้กล่าวไปแล้วเพื่อให้เข้าใจปรากฏการณ์ดังกล่าวจริงจำเป็นต้องมีข้อมูลเพิ่มเติม ฉันคิดว่า downvote ค่อนข้างรุนแรงเนื่องจากคำตอบของฉันถูกต้องตามความเป็นจริงตอบคำถามเดิมและเติมช่องว่างในคำตอบที่มีอยู่
Josef

ความคิดที่ดีนี่อาจเป็นสาเหตุของความสับสนของฟิสเชอร์
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

0

หากคุณทำตามคำตอบข้างต้นคุณกำลังไปในทางที่ถูกต้อง อย่างน้อยใน Debian Jessie ของฉันฉันได้สร้างลิงค์ไปยัง / usr / bin ของคำสั่งใน path / sbin ตัวอย่างเช่น: / sbin / ifup ฉันใส่ soft link (ln -s) ไปที่ / usr / bin ของมันและฉันสามารถใช้มันได้

อีกสิ่งสำคัญคือการใส่ NOPASSWD เช่นนี้:

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