ทำไมตัวเลือก sudoers NOPASSWD ไม่ทำงาน


75

ฉันมีบรรทัด NOPASSWD ใน / etc / sudoers (แก้ไขด้วยvisudo)

gatoatigrado    ALL=(ALL) NOPASSWD: /bin/set-slow-cpufreq

อย่างไรก็ตามผลลัพธ์คือ

gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreq
sudo: sorry, a password is required to run sudo

คำสั่งประเภทนี้ทำงานบนเครื่อง OpenSuSE แต่ไม่สามารถใช้กับ Ubuntu 11.10 ผมทำอะไรผิดหรือเปล่า?

หมายเหตุ : ฉันไม่สามารถหาข้อความใด ๆ tail -f /var/log/syslogที่เกี่ยวข้องเข้าสู่ระบบเช่นผ่านทาง

แก้ไข

นี่คือ / etc / sudoers

Defaults    env_reset

# things I've tried copying from an opensuse machine
Defaults always_set_home
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"

root    ALL=(ALL:ALL) ALL
gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

2
คุณสามารถแสดงให้เต็มได้sudoersหรือไม่ลำดับของกฎไม่เกี่ยวข้อง
enzotib

คำตอบ:


117

คุณควรวางบรรทัดนั้นหลังบรรทัดด้วยกฎสำหรับsudoกลุ่มเนื่องจากตามที่sudoersman page ระบุ:

   When multiple entries match for a user, they are applied in order.
   Where there are multiple matches, the last match is used (which is not
   necessarily the most specific match).

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

2
ขอบคุณ! ฉันเพิ่มบรรทัดของฉันไปยังจุดสิ้นสุด/etc/sudoersและตอนนี้ใช้ได้ คำอธิบายแบบเต็มรูปแบบที่นี่สำหรับผู้ที่สนใจ: techglimpse.com/ubuntu-sudoers-nopasswd-option-not-working
elimisteve

4

เป็นการดีถ้าคุณกำลังปรับแต่งคำสั่งที่สามารถเรียกใช้ผ่านsudoคุณควรทำการเปลี่ยนแปลงเหล่านี้ในไฟล์แยกต่างหากภายใต้/etc/sudoers.d/แทนการแก้ไขsudoersไฟล์โดยตรง คุณควรใช้visudoเพื่อแก้ไขไฟล์เสมอ

ตัวอย่าง: sudo visudo -f /etc/sudoers.d/slowcpu

แทรกการอนุญาตให้ใช้สายของคุณ: gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq

จากนั้นบันทึกและออกและvisudoจะเตือนคุณหากคุณมีข้อผิดพลาดทางไวยากรณ์

คุณสามารถเรียกใช้sudo -lเพื่อดูสิทธิ์ที่ผู้ใช้ของคุณได้รับหากNOPASSWDคำสั่งใด ๆ ของผู้ใช้ปรากฏขึ้นก่อน%groupyouarein ALL=(ALL) ALLคำสั่งใด ๆในผลลัพธ์ที่คุณจะได้รับพร้อมท์สำหรับรหัสผ่านของคุณ

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

คุณสามารถควบคุมการเรียงลำดับชื่อไฟล์โดยใช้คำนำหน้าเป็น 00-99 หรือ aa / bb / cc แต่โปรดจำไว้ว่าหากคุณมีไฟล์ใด ๆ ที่ไม่มีคำนำหน้าเป็นตัวเลขพวกเขาจะโหลดหลังจากไฟล์ที่มีหมายเลขกำกับ การตั้งค่า นี่เป็นเพราะขึ้นอยู่กับการตั้งค่าภาษาของคุณ "การเรียงคำศัพท์" เชลล์ใช้หมายเลขเรียงลำดับก่อนแล้วจึงอาจแทรกส่วนบนและส่วนล่างเมื่อเรียงลำดับ "เรียงจากน้อยไปมาก"

ลองใช้printf '%s\n' {{0..99},{A-Z},{a-z}} | sortและprintf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sortเพื่อดูว่าพิมพ์ภาษาปัจจุบันของคุณAaBbCcฯลฯ หรือABCแล้วabcเพื่อตรวจสอบสิ่งที่ดีที่สุด "ล่าสุด" คำนำหน้าตัวอักษรที่จะใช้จะเป็น


ฉันเห็นด้วยกับสิ่งนี้ ตรรกะบางอย่างในการแก้ไขไฟล์ / etc / sudoers ดูขัดแย้งง่าย - ฉันไม่สามารถรับ% wheel ALL = (ALL) NOPASSWD: ALL เพื่อทำงานตามที่เขียนใน sudoers จนกว่าฉันจะอ่านโพสต์ที่มีคนพูดว่า #includedir /etc/sudoers.d line ต้องอยู่ก่อนบรรทัดอื่นเช่น% SUDO และ% WHEEL เมื่อฉันใส่ #include dir เหนือสิทธิ์กลุ่มอื่น ๆ พวกเขาเริ่มทำงาน ดังนั้นฉันจึงสร้างไฟล์สำหรับแต่ละกลุ่มใน /etc/sudoers.d/ หมายเลขตามลำดับเดียวกับที่พวกเขาอยู่ในไฟล์ sudoers แต่ root ALL = (ALL) ทั้งหมดจะต้องยังคงเป็น sudoers ด้านล่างบรรทัด #includedir แปลก.
AveryFreeman

อันที่จริงฉันคิดว่าผู้รวมควรจะอยู่ที่ปลาย sudoers สิ่งที่คุณอาจเห็นคือหนึ่งในไฟล์อื่น ๆ ใน sudoers.d ของคุณกำลังเลิกทำการเปลี่ยนแปลง คุณอาจมีบรรทัดลงไปอีกในไฟล์หลักที่ จำกัด กลุ่มล้อ โปรดจำไว้ว่า sudoers ได้รับการประมวลผลโดยที่กฎสุดท้ายที่ใช้กับคำสั่งหรือกลุ่มชนะจึงมีความช่วยเหลือเฉพาะเจาะจงมากขึ้น แต่ถ้าคำสั่ง ANY ทั่วไปมาถึงจุดสิ้นสุดและไม่มี NOPASSWD มันจะแทนที่ข้อยกเว้นก่อนหน้านี้ของคุณ นี่คือเหตุผลที่คุณควรมีกฎของคุณในไฟล์แยกต่างหากเพื่อให้พวกเขาได้รับการประมวลผลในภายหลัง
dragon788

ฉันไม่คิดอย่างนั้นมันเป็นการติดตั้งซุ้มประตูใหม่ล่าสุด ทั้งหมดที่ฉันทำคือพยายามและไม่แสดงความคิดเห็นที่หนึ่งบรรทัด แต่นั่นเป็นสิ่งที่ดีที่จะตรวจสอบขอบคุณ
AveryFreeman

บางระบบไม่ใช้ล้อเลื่อนและใช้กลุ่มที่เรียกว่า sudo หรือ adm หรือ admin แทน ฉันจำพฤติกรรมโค้งไม่ได้ แต่คุณสามารถเรียกใช้idและดูว่าคุณเป็นกลุ่มใด
dragon788

Arch ใช้วงล้อ
AveryFreeman

4

เพิ่งวิ่งเข้าไปในนี้ด้วย

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

sudoติดตั้งอูบุนตูแจ้งให้สำหรับผู้ใช้ผู้ดูแลระบบที่ไม่ใช่รากที่ได้รับการเพิ่มในกลุ่ม ฉันได้เพิ่มตัวเองไปยังsudoersไฟล์ด้วยตนเองโดยใช้sudo visudo:

my_username ALL=(ALL:ALL) NOPASSWD:ALL

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

ฉันยังต้องตรวจสอบรหัสผ่าน

คำตอบของ enzotib คือกุญแจสู่สิ่งที่เกิดขึ้น กลุ่ม sudo ปรากฏขึ้นใน sudoers หลังจากรายการสำหรับชื่อผู้ใช้ของฉัน

แทนที่จะย้ายรายการของฉันใต้บรรทัด sudo ฉันเพิ่งลบบรรทัดที่ฉันเพิ่มไว้ก่อนหน้านี้แล้วเพิ่มลงNOPASSWDในรายการสำหรับ%sudo

ดูเหมือนว่าจะทำงาน ใช้ nopasswd อีกครั้งถ้าคุณต้องการจริงๆเท่านั้น (ในกรณีของฉันมันเป็นสิ่งที่ฉันต้องการอย่างแน่นอนสำหรับผู้ใช้ส่วนใหญ่ที่ต้องการรหัสผ่านสำหรับกิจกรรม sudo ที่ดีที่สุด)

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


มันเป็นความคิดที่ดีที่จะเปิดใช้งาน NOPASSWD กับคำสั่งใด ๆ / ทั้งหมดซึ่งหมายความว่าทุกคนที่เข้าสู่ระบบของคุณและจัดการให้ผู้ใช้เข้าสู่กลุ่ม sudo จะสามารถทำสิ่งที่ไม่ดีกับระบบของคุณได้อย่างรวดเร็ว ฉันสามารถทำได้อย่างง่ายดายด้วยการเข้าถึงเพียงไม่กี่นาทีโดยใช้ LiveCD หรือหลอกผู้ใช้ของคุณให้เรียกใช้คำสั่ง cmd sudoที่ใช้สิทธิ์ของคุณเองในการเพิ่มผู้ใช้รายอื่นในกลุ่ม sudo นอกเหนือจากการใช้คำสั่งที่ร้องขอ
dragon788

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

สำหรับผู้ที่ไม่มีความเข้าใจในความปลอดภัยเช่นคุณคำแนะนำแบบนี้น่าจะดีกว่าทางเลือกอื่น แต่ฉันยอมรับว่ามันไม่เหมาะ
dragon788

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

การอัปเดตที่ยอดเยี่ยมคำตอบของฉันไม่มีคำแนะนำที่แข็งแกร่งนอกเหนือจากความคิดเห็นเหล่านี้ที่นี่และแดกดันในที่ทำงานที่ฉันใช้การเข้ารหัสดิสก์เต็มรูปแบบที่ฉันได้เปิดใช้งาน NOPASSWD เพราะฉันมีรหัสผ่านที่ปลอดภัยมาก ซ้ำ ๆ และฉันใช้ xautolock เพื่อล็อคเครื่องของฉันหลังจากเวลาว่างสั้น ๆ
dragon788

0

บนระบบรีโมตให้วางการเข้ารหัส แต่ปล่อยให้ทุกอย่างเป็นเจ้าของโดยรูทเหมือนกับในกลุ่มของ "ผู้ดูแลระบบ" - นั่นไม่ใช่ 0!
คุณสามารถแก้ไข #sudo -g Administrators ผู้ที่ต้องการการเข้าถึงแบบเต็ม - ไม่ใช่ใน sudo ไฟล์ แต่เป็น.loginโปรไฟล์ ตอนนี้สคริปต์มาตรฐานใด ๆ สามารถเข้าถึงรีโมตในฐานะ "root" และคุณสามารถป้องกันไฟล์ที่ต้องได้รับการปกป้อง
"กลุ่ม" ที่มีประโยชน์อีกอย่างคือ "แซนด์บ็อกซ์" พร้อมไดเรกทอรีล็อกอินในแคชเบราว์เซอร์และสามารถอ่านได้อย่างอิสระและไม่มีอะไรอื่น ใช้อักขระตัวพิมพ์ใหญ่ตัวแรก

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