22 Aralık 2019 Pazar

sudoers dosyası

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ız
echo '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ız
sudo -u user1 -g group1 some_program
Örnek
Şöyle yaparız
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


Hiç yorum yok:

Yorum Gönder