setuid işlemi bu kullanıcının sahip olduğu işlemleri göremez


1

Kök olmayan bir kullanıcıya ( nicollet) Apache2 tarafından başlatılan işlemlere bir sinyal algılama ve gönderme yeteneği vermek istiyorum (bu işlemler FastCGI betikleridir ve sinyal önbelleklerini boşaltmalarını söyler). İşlemler web kullanıcısına ( www-data) aittir ve Debian'ı kararsız olarak çalıştırıyorum.

nicolletKullanıcının bu işlemleri görmesinin bir yolunu bulamıyorum .

Süreçleri çalıştıran ve her ikisi tarafından görebilirsiniz rootve www-data:

root@linux-01:~# ps -Af | grep baryton
www-data 17649 17648  0 10:27 ?        00:00:00 baryton
www-data 28145     1  0 Nov01 ?        00:00:12 baryton --bot
root     18701 18700  0 10:46 pts/0    00:00:00 grep baryton
root@linux-01:~#

Ancak, aynı komutu benim nicolletkullanıcı ile çalıştırmak hiçbir şey döndürmez:

nicollet@linux-01:~$ ps -Af | grep baryton
nicollet 18704 18703  0 10:46 pts/0    00:00:00 grep baryton
nicollet@linux-01:~$

Yukarıdaki sorguyu kullanan bir çalıştırılabilir dosya oluşturmayı denedim system(). Bu www-datasetuid biti ayarlanmış ve aittir :

root@linux-01:~# which setuid-update
/usr/local/bin/setuid-update
root@linux-01:~# ls -l /usr/local/bin/setuid-update 
-rwsr-xr-x 1 www-data www-data 11046 Nov  2 10:27 /usr/local/bin/setuid-update
root@linux-01:~#

Ancak, ben aynı durum dikkat edin: süreçleri tarafından görülebilir rootve www-dataancak nicollet:

root@linux-01:~# setuid-update
www-data 17649 17648  0 10:27 ?        00:00:00 baryton
www-data 28145     1  0 Nov01 ?        00:00:13 baryton --bot
www-data 18712 18711  0 10:46 pts/0    00:00:00 sh -c ps -Af | grep baryton
www-data 18714 18712  0 10:46 pts/0    00:00:00 grep baryton
root@linux-01:~# su nicollet
nicollet@linux-01:~$ setuid-update
www-data 18716 18715  0 10:46 pts/0    00:00:00 sh -c ps -Af | grep baryton
www-data 18717 18716  0 10:46 pts/0    00:00:00 grep baryton
nicollet@linux-01:~$

En şaşırtıcı olan, grepsürecin gerçekten tarafından yürütüldüğüdür www-data(çünkü bir setuid çalıştırılabilirinden başlatılmıştır) ve görülebilir, ancak barytonişlem değildir.

Burada neler oluyor? Neden bu işlemleri gösterip psçalıştırabiliyor www-data, ancak başladığında, çalışamayan psbir çalıştırılabilir dosya çalıştırıyor ?www-datanicollet

Yanıtlar:


2

Yıllarca sadece kendi işlemlerini görmek için düzenli kullanıcı hesaplarını çekirdek düzeyinde kısıtlamak mümkün oldu. Bu kısıtlama grsecurity, SELinux ve diğer güvenlik çerçeveleri ile mümkün olmuştur, fakat dağıtım tarafından varsayılan olarak yaygın olarak kullanılmamaktadır.

Bir süredir Debian'ın dengesiz şubesini denemedim (Lenny'yi işletiyordum), ama belki de son zamanlarda çekirdek konfigürasyonundaki bu anahtarı açmışlardır. Tam olarak gözlemlediğiniz etkiye neden olur - setuid çalıştırılabilir olsa bile, orijinal kullanıcı adı (nicollet) hala bilinir ve sadece EUID (etkili kullanıcı adı) değişir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.