ฉันไม่ต้องการให้ผู้ดูแลระบบเปลี่ยนรหัสผ่านรูทของฉัน ฉันไม่ต้องการให้ผู้ใช้ sudo ดำเนินการคำสั่งนี้:
sudo passwd $root
ฉันลองในไฟล์ sudoers โดยใช้คำสั่งต่อไปนี้:
%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root
ฉันจะปิดกั้นมันได้อย่างไร
ฉันไม่ต้องการให้ผู้ดูแลระบบเปลี่ยนรหัสผ่านรูทของฉัน ฉันไม่ต้องการให้ผู้ใช้ sudo ดำเนินการคำสั่งนี้:
sudo passwd $root
ฉันลองในไฟล์ sudoers โดยใช้คำสั่งต่อไปนี้:
%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root
ฉันจะปิดกั้นมันได้อย่างไร
คำตอบ:
ตามคู่มือ sudoers :
It is generally not effective to "subtract" commands from ALL using the
’!’ operator. A user can trivially circumvent this by copying the
desired command to a different name and then executing that. For
example:
bill ALL = ALL, !SU, !SHELLS
Doesn’t really prevent bill from running the commands listed in SU or
SHELLS since he can simply copy those commands to a different name, or
use a shell escape from an editor or other program. Therefore, these
kind of restrictions should be considered advisory at best (and
reinforced by policy).
นี่คือเหตุผลที่นโยบาย sudoers ของคุณไม่ทำงาน
หากคุณต้องการป้องกันไม่ให้ผู้ใช้รับสิทธิ์การใช้งานรูทและเปลี่ยนรหัสผ่านลองขั้นตอนนี้:
สมมติว่า sudoers ของคุณมีคำสั่งนี้:
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
สมมติว่าชื่อผู้ใช้ของคุณคือfoo
กลุ่มของเขาและfoo
เอาต์พุตคำสั่งคือ:sudo
groups
foo sudo
ลบผู้ใช้ออกfoo
จากsudo
กลุ่ม: gpasswd -d foo sudo
หลังจากนี้ผู้ใช้foo
จะไม่สามารถเรียกใช้คำสั่งใด ๆ ด้วย sudo
แก้ไขไฟล์ sudoers ใช้คำสั่งนี้:
sudo visudo -f /etc/sudoers.d/foo
กำหนดfoo
สิทธิ์ผู้ใช้ตัวอย่างเช่น:
foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
ซึ่งหมายความว่าผู้ใช้foo
สามารถเรียกใช้คำสั่งใด ๆ ในไดเรกทอรี/usr/bin/
ยกเว้นpasswd
และsu
คำสั่ง หมายเหตุ: หากผู้ใช้foo
ต้องการที่จะเปลี่ยนรหัสผ่านของเขาสามารถเรียกใช้คำสั่งโดยไม่ต้องpasswd
sudo
อีกตัวอย่างของการfoo
อนุญาตผู้ใช้:
foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
ซึ่งหมายความว่าผู้ใช้foo
สามารถเรียกใช้คำสั่งใด ๆ ในไดเรกทอรี/usr/bin/
และได้รับอนุญาตให้เปลี่ยนรหัสผ่านของทุกคนยกเว้นการรูทบนเครื่องทั้งหมด
คุณสามารถกำหนดกลุ่มคำสั่งโดยกำหนดCmnd_Aliases
และสร้าง "ระดับการอนุญาต" คุณสามารถพบตัวอย่างที่มีประโยชน์ในส่วนตัวอย่างของคู่มือ sudoersและนี่คือลิงค์ที่มีประโยชน์เกี่ยวกับวิธีการใช้ sudoers
foo ALL=/usr/bin/*, !/usr/bin/passwd
คิดใด ๆ ว่าทำไมถึงเป็นเช่นนั้น
เพิ่มนามแฝงคำสั่งผ่านvisudo
:
Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su
เพิ่มข้อ จำกัด ผ่านvisudo
:
%nopasswdgroup ALL = ALL, !PASSWD, !SU
เพิ่มผู้ใช้ไปยังกลุ่มที่เรียกว่า nopasswdgroup:
usermod -aG nopasswdgroup nopasswduser