PDA

View Full Version : [Linux] Permessi troppo... permissivi!


Gica78R
09-02-2006, 10:10
Ciao!

Sto giochicchiando con i permessi dei files su Linux e mi succede una cosa strana:
sono nella mia home directory, con i relativi permessi; creo un semplice file di testo (dacancellare.txt), divento root per un momento e cambio proprietario e gruppo del suddetto file, impostandoli entrambi a root:

-rw-r--r-- 1 root root 10 2006-02-09 11:00 dacancellare.txt

Ritorno utente normale e eseguo il comando:
rm dacancellare.txt

ed il file si cancella! :eek:

Sapreste dirmi perche'? Il file e' scrivibile solo da root; inoltre il mio utente non fa nemmeno parte del gruppo root... E' normale questa cosa?? :confused:
Oppure, in questo caso, fanno testo i permessi della directory?


Grazie

andbin
09-02-2006, 10:52
Oppure, in questo caso, fanno testo i permessi della directory?
Sì, se non mi sbaglio, sono proprio i permessi in scrittura ('w') della directory a stabilire se e da chi un file è cancellabile.

blacko
09-02-2006, 11:41
Sì, se non mi sbaglio, sono proprio i permessi in scrittura ('w') della directory a stabilire se e da chi un file è cancellabile.

TRUE

Gica78R
09-02-2006, 12:28
Grazie per le conferme :)

Ora pero' ho un altro problemino, sempre legato ai permessi :(

Considerate il seguente codice:


#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main(void)
{
uid_t current_uid;
uid_t current_euid;

current_uid = getuid();
current_euid = geteuid();

printf("uid = %d\neuid = %d\n", current_uid, current_euid);

return 0;
}


Se lo eseguo nella mia home funziona senza problemi (mi restituisce esattamente quello che mi aspetto), mentre se lo eseguo nella directory:

/usr/data/Sviluppo/esperimenti

della quale sono proprietario e su cui ho tutti i permessi:

drwxr-xr-x 3 gica users 200 2006-02-09 10:12 esperimenti


mi da' questo output:

gica@renzus:/usr/data/Sviluppo/esperimenti> ./userid
bash: ./userid: Permission denied


Come mai? Eppure il programma e' eseguibile e la partizione su cui si trova la directory NON e' montata col flag noexec:


Da /etc/fstab:

/dev/hdb5 /usr/data reiserfs user,acl,user_xattr 1 2


Sara' quel flag acl che rompe l'anima (o magari user_xattr, dove quella x mi puzza tanto di exec :p )

Scusate se la questione riguarda piu' il sistema operativo che la programmazione, ma il tutto e' nato mentre provavo dei programmini e pensavo che la causa fosse da cercare nel codice :stordita:


Grazie :)

andbin
09-02-2006, 12:39
gica@renzus:/usr/data/Sviluppo/esperimenti> ./userid
bash: ./userid: Permission denied
Visto questo messaggio, sembrerebbe che il file userid non venga visto come eseguibile.

ilsensine
09-02-2006, 12:45
Sì, se non mi sbaglio, sono proprio i permessi in scrittura ('w') della directory a stabilire se e da chi un file è cancellabile.
Si può evitare impostando l'attributo "sticky" alla directory.
Ad es. /tmp è in genere "sticky".