Sudoers kılavuzuna göre :
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).
Bu yüzden sudoers politikanız çalışmıyor.
Kullanıcının root izni almasını ve şifresini değiştirmesini önlemek istiyorsanız, şu prosedürü deneyin:
Sudo kullanıcılarınızın bu yönergeyi içerdiğini varsayarsak:
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Kullanıcı adınız olduğunu varsayarsak foo
, grupları foo
ve sudo
. groups
komut çıkışı:
foo sudo
Kullanıcıyı sil foo
gelen sudo
gruptan: gpasswd -d foo sudo
Bundan sonra, kullanıcı foo
sudo ile herhangi bir komutu çalıştıramazsınız.
Sudoers dosyasını düzenleyin. Bu komutu kullanın:
sudo visudo -f /etc/sudoers.d/foo
Kullanıcı foo
iznini tanımlayın , örneğin:
foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
Bu, kullanıcının foo
dizinde ve command /usr/bin/
dışında tüm komutları çalıştırabileceği anlamına gelir . Not: Kullanıcı şifresini değiştirmek isterse, komutu olmadan çalıştırabilirsiniz .passwd
su
foo
passwd
sudo
Kullanıcı foo
izninin başka bir örneği :
foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
Bu, kullanıcının foo
dizinde herhangi bir komutu çalıştırabileceği /usr/bin/
ve TÜM makinelerde root dışında herhangi birinin şifresini değiştirmesine izin verildiği anlamına gelir .
Cmnd_Aliases
"İzin düzeyleri" tanımlayıp oluşturarak komut gruplarını tanımlayabilirsiniz . Sudo kullanıcı el kitabının ÖRNEK bölümünde yararlı örnekler bulabilirsiniz ve burada sudo kullanıcılarının kullanımına ilişkin faydalı bir bağlantı bulunmaktadır .