visudo ile sistem kullanıcılarına özel haklar tanıma;
visudo ile kullanıcılara özel haklar tanınarak kullanıcıların bazı komutları root olarak çalıştırabilmesini sağlayabiliriz.
örnek olarak oluşturacağımız bayram kullanıcısına birkaç tane komutu root hakları ile çalıştırabilme yetkisi vereceğiz.
1- öncelikle kullanıcı oluşturulur.
$adduser
Username: bayram
Full name: bayram
Uid (Leave empty for default):
Login group [bayram]:
Login group is bayram. Invite bayram into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]: bash
Home directory [/home/bayram]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : bayram
Password : *****
Full Name : bayram
Uid : 1005
Class :
Groups : bayram
Home : /home/bayram
Shell : /usr/local/bin/bash
Locked : no
OK? (yes/no): yesy
OK? (yes/no): yes
adduser: INFO: Successfully added (bayram) to the user database.
Add another user? (yes/no): no
Goodbye!
2- oluşturulan kullanıcıya belirli komutları verebilmek için visudo ile sudo konfigurasyon dosyasını açarız.
$visudo
açılan dosyada uygun yere aşağıdaki kısmı yapıştıralım.
Defaults syslog=local3
User_Alias OWNER = ali
Cmnd_Alias SHUTDOWN = /sbin/shutdown
Cmnd_Alias TAIL = /usr/bin/tail
Cmnd_Alias LESS = /usr/bin/less
Cmnd_Alias POSTGRESQL = /usr/local/etc/rc.d/postgresql
Cmnd_Alias APACHE = /usr/local/etc/rc.d/apache.sh
Cmnd_Alias SIP = /usr/local/etc/rc.d/sip-xxxxxxx.sh
Cmnd_Alias B2BUA = /home/ssp/scripts/b2bua.sh
Cmnd_Alias RTPPROXY = /home/ssp/scripts/rtpproxy.sh
Cmnd_Alias SER = /home/ssp/scripts/ser.sh
Cmnd_Alias ASTERISK = /home/ssp/scripts/asterisk.sh
Cmnd_Alias IVR = /home/ssp/scripts/ivr.sh
Cmnd_Alias CRONTAB = /usr/bin/crontab
Cmnd_Alias FSCK = /sbin/fsck
Cmnd_Alias DU = /usr/bin/du
Cmnd_Alias KILL = /bin/kill
Cmnd_Alias TCPDUMP = /usr/sbin/tcpdump
Cmnd_Alias MAKE = /usr/bin/make
OWNER ALL= NOPASSWD: SHUTDOWN, TAIL, LESS, POSTGRESQL, APACHE, SIP, B2BUA, RTPPROXY, SER, ASTERISK, IVR, CRONTAB, FSCK, DU, KILL, TCPDUMP, MAKE
#ayrintili bilgi icin http://www.gratisoft.us/sudo/man/sudoers.html
3- kullanıcılara bu hakları tanıdıktan sonra yine kullanıcıların yazdıkları komutları takip etmemiz gerekmektedir. bunun için loglamam mekanizmasını aktif hale getirmeliyiz. öncelikle syslog.conf dosyasını açarak logların nereye düşmesi gerektiğini tayin edelim.
$vi /etc/syslog.conf
4- sudo ile ilgili logların local3 kısmında toplanmasını ve bu toplanan logların /var/log/sudo.log dosyasonda loglanmasını istersek;
bu logların /var/log/messages altına düşmesini engellemek için;
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
satırını
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err;local3.none /var/log/messages
satırına dönüştürelim.
daha sonra yine aynı dosyada uygun bir yere;
local3.* /var/log/sudo.log
satırını ekleyelim.
5- sudo.log dosyasını oluşturalım ve haklarını tanımlayalım.
$touch /var/log/sudo.log
$chmod 600 /var/log/sudo.log
6- syslog u restart edelim.
$/etc/rc.d/syslogd restart
7- işlem tamamdır. bu konfigürasyondan sonra root olmayan kullanıcıların sudo ile çalıştırdığı doğru veya yanlış tüm komutlar /var/log/sudo.log dosyasında loglanacaktır.
