Giriş
Bu dosya elle değil visudo ile düzenlenmeli. Zaten dosyanın başında bu bilgi veriliyor. Görmek için şöyle
yaparız
$ sudo cat /etc/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 Komutu
Açıklaması
şöyle.
Certain configuration options may be changed from their default values at run-time via one or more Default_Entry lines. These may affect all users on any host, all users on a specific host, a specific user, a specific command, or commands being run as a specific user. Note that per-command entries may not include command line arguments. If you need to specify arguments, define a Cmnd_Alias and reference that instead.
Defaults/env-reset değişkeni
Ortam değişkenlerini sıfırlar.
Örnek
Şöyle
yaparız
Defaults env_reset
Defaults env_keep += "PYTHONPATH OTHERVARIABLE YETANOTHER"
Örnek
Ubuntu ortam değişkenlerini sıfırlamıyor. $HOME değişkeninin aynı kaldığını görmek için şöyle yaparız.
Elimizde
myhome.sh olsun
echo $HOME
Şöyle
yaparız. $HOME hep
/home/user olarak kalıyor.
$ echo $HOME
/home/user
$ sudo echo $HOME
/home/user
$ bash myhome.sh
/home/user
$ sudo bash myhome.sh
/home/user
Debian ise $HOME değişkenini
/root haline getiriyor. Şöyle
yaparız
$ echo $HOME
/home/user
$ sudo echo $HOME
/home/user
$ bash myhome.sh
/home/user
$ sudo bash myhome.sh
/root
Defaults/timestamp_timeout değişkeni
Şifrenin ne kadar süre boyunca saklanacağını belirtir.
Örnek
Şöyle
yaparız.
Defaults env_reset, timestamp_timeout=120, pwfeedback
Örnek
Elimizde şöyle bir satır
olsun.
Defaults timestamp_timeout=0
Elimizde şöyle bir satır
olsun
## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *
Şöyle
yaparız.
[root@ops ~]# su - jdoe
[jdoe@ops ~]$ sudo shutdown -c //Şifre gerekir
[sudo] password for jdoe:
[jdoe@ops ~]$ sudo shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 18:51:13 IDT, use 'shutdown -c' to cancel.
[jdoe@ops ~]$ sudo shutdown -H //Şifre gerekir
[sudo] password for jdoe:
^[[A[jdoe@ops ~]$ sudo shutdown -c //Şifre gerekir
[sudo] password for jdoe:
NOPASSWD Alanı
Belirtilen komutlar için şifre sorulmamasını sağlar
Örnek
gitlab-ci kullanıcısının cp ve mv gibi komutları şifresiz çalıştırabilmesi için şöyle
yaparızecho 'gitlab-ci ALL=(ALL) NOPASSWD: /bin/mv, NOPASSWD: /usr/bin/systemctl,
NOPASSWD: /bin/cp' | sudo EDITOR='tee -a' visudo
Örnek
sudo grubundakilerin şifresiz komut çalıştırabilmesi için şöyle
yaparız.
# Allow members of group sudo to execute any command, no password
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
Örnek
Tük kullanıcıların poweroff komutunu çalıştırılabilmesi için şöyle
yaparız%users ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot
mail-no_user değişkeni
Açıklaması
şöyle. sudo komutunu çalıştırmaya hakkı olmayan birisinin gerçekleştirdiği eylem
/var/log/auth.log dosyasına kaydedilir. E-posta göndermesi de isteniyorsa bu değişkene değer atanır.
If set, mail will be sent to the mailto user if the invoking user is not in the sudoers file. This flag is on by default.
secure-path değişkeni
sudo sistemin $PATH değişkenini değil, kendi değişkenini kullanır.
Örnek
Şöyledir
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
group Belirtme
Burada (group:username) şeklinde kullanılıyor. sudo'nun amacı zaten komutu kendimden farklı bir group ve kullanıcı ismi ile kullanmak. Şöyle
yaparızsudo -u user1 -g group1 some_program
Örnek
root ALL = (ALL:ALL) ALL
%wheel ALL = (ALL:ALL) ALL
Sadece username Belirtme
Açıklaması şöyle.
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).
Örnekler şöyle
ALL =(root): komut - root olmayan kullanıcılar içindir
ALL =(ALL): komut - herkes içindir
Örnek
Şöyle
yaparız.
# Allow members of group sudo to execute any command
%wheel ALL=(ALL:ALL) ALL
Örnek
root olmayan kullanıcılara hak vermek için şöyle yaparız
username ALL=(root): /usr/sbin/reboot
username ALL=(root): /usr/bin/systemctl reboot
Örnek
Bir dosyayı şifresiz, geri kalan her komutu şifre ile çalıştırmak için şöyle
yaparız.
username ALL=(ALL) ALL
username ALL=(ALL) NOPASSWD: /home/username/script.sh