Salve a tutti, mi trovo con un problema e una parziale soluzione;
magari riuscite a completarla e farmi felice :)

Prologo:
Una cerca applicazione (SAS) gestisce l'autenticazione grazie a dei
binari lanciati come utente sas con suid root (bello, eh?). Quando
l'utente fa login, l'applicazione fa (credo) un fork con l'uid
dell'utente. Bene, solo che tale utente ha come piacere il fatto di
creare file da giga consumandomi tutta la pagecache. Messo un limite
sull'utente:

#/etc/security/limits.conf
utente hard fsize 2000000

Mi trovo che comunque l'applicativo crea file maggiori di 2GB,
fregandosene dei limiti.
Vediamo il codice che ho usato per simulare alla meno peggio il login di SAS:

#include <unistd.h>

main() {
 int pid;
 setuid(505);
 pid=fork();
 system("ulimit -a");
 system("/bin/dd if=/dev/zero of=/tmp/and/file count=2048");
}

Un po' di troubleshooting e scopro che:

su RedHat 4.5 (credo anche inferiori): invocando con qualsiasi utente
quel binario, il processo 'forkato' prende come limiti quelli
dell'utente che invoca il binario.
su RedHat 4.7: invocando con qualsiasi utente quel famoso binario, il
processo 'forkato' ha come limiti gli stessi dell'utente 505.

Va da se che nel secondo caso mi basta mettere un limite sull'utente
con id 505, mentre nel primo caso dovrei metterli su root, ma dubito
che verrebbero seguiti; questo è infatti il pstree:
init(1)-+-ObjectSpawner.s(10843,sas)---objspawn(10848)---elssrv(10849,root)-+-sas(7478,utente)---elssrv(7496,root)

Bene, ora la domanda: dato che il kernel è lo stesso, la
configurazione di pam_limits è la stessa, da cosa potrebbe dipendere
questo differente comportamento? Dalla versione di PAM?

Andrea
-- 
To respect the cat is the beginning of the aesthetic sense. - Erasmus Darwin

http://www.linkedin.com/in/adainese
________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List

Rispondere a