Yürütülebilir dosyaya bakarsanız sudo
:
$ which sudo
/usr/bin/sudo
$ ls -la /usr/bin/sudo
---s--x--x 2 root root 208808 Jun 3 2011 /usr/bin/sudo
İzin bitlerini taşıdığını fark edeceksiniz ---s--x--x
. Bunlar aşağıdaki gibi bozulabilir:
-|--s|--x|--x
- - first dash denotes if a directory or a file ("d" = dir, "-" = file)
--s - only the setuid bit is enabled for user who owns file
--x - only the group execute bit is enabled
--x - only the other execute bit is enabled
Bu nedenle bir program setuid biti etkin olduğunda (ayrıca SUID olarak da adlandırılır), bu programı çalıştırdığında, dosyanın sahibi olan kullanıcının kimlik bilgileriyle çalışacağı anlamına gelir, aka. Bu durumda kök.
Örnek
Aşağıdaki komutu kullanıcı saml olarak çalıştırırsam:
$ whoami
saml
$ sudo su -
[sudo] password for saml:
sudo
Aslında yürütmenin kök olarak çalıştığını fark edeceksiniz :
$ ps -eaf|grep sudo
root 20399 2353 0 05:07 pts/13 00:00:00 sudo su -
setuid mekanizması
SUID'in nasıl çalıştığını merak ediyorsanız, bir göz atın man setuid
. İşte adam sayfasından benden daha iyi açıklayan bir alıntı:
setuid () çağıran işlemin etkin kullanıcı kimliğini ayarlar. Arayanın etkin UID'si root ise, gerçek UID ve kayıtlı kullanıcı kimliği de ayarlanır. Linux altında, setuid (), _POSIX_SAVED_IDS özelliğine sahip POSIX sürümü gibi uygulanır. Bu, bir kullanıcı kimliği (root dışında) programının tüm kullanıcı ayrıcalıklarını bırakmasına, bazı ayrıcalıklı olmayan bir iş yapmasına ve ardından orijinal etkin kullanıcı kimliğini güvenli bir şekilde değiştirmesine olanak tanır.
Kullanıcı root veya program set-user-ID-root ise, özel dikkat gösterilmelidir. Setuid () işlevi, arayanın etkin kullanıcı kimliğini kontrol eder ve eğer süper kullanıcı ise, işlemle ilgili tüm kullanıcı kimlikleri kullanıcı kimliğine ayarlanır. Bu gerçekleştikten sonra, programın kök ayrıcalıklarını yeniden kazanması imkansızdır.
Buradaki anahtar kavram, programların gerçek bir kullanıcı kimliğine (UID) ve etkili bir programa (EUID) sahip olmasıdır. Setuid, bu bit etkinleştirildiğinde etkin kullanıcı kimliğini (EUID) ayarlıyor.
Bu nedenle, çekirdek açısından, bizim örneğimizde, saml
hala asıl mal sahibi (UID) olduğu bilinmektedir, ancak EUID, çalıştırılabilir mal sahibinin sahibiyle birlikte belirlendi.
setgid
Ayrıca, sudo komutundaki izinleri bozduğumuzda ikinci bit grubunun grup izinleri için olduğunu söylemeliyim. Grup bitleri ayrıca set grup kimliği (aka. Setgid, SGID) olarak adlandırılan setuid'e benzer bir şeye sahiptir. Bu işlem, sahibi kimlik bilgileri yerine grup kimlik bilgileriyle işlemi yürütmesi dışında SUID ile aynı şeyi yapar.
Referanslar
sudo -s
yerine kullanmalısınsudo su
çünkü işe yaramazsu
. :)