Newsgroup: it.comp.os.linux.iniziare
Titolo: permessi directory e file speciali

Salve a tutti
devo realizzare una serie di directories (contenenti files) che
abbiano le seguenti caratteristiche:
accessibili ognuna da un utente specifico il quale può creare files
all'interno, ma una volta creati puo solo modificarli ma non
cancellarli.inoltre tali files sono visualizzabili da un gruppo che
non è quello a cui appartengono gli utenti .
Supponiamo 1 directory e 1 rispettivo utente per esempio
utente1.gruppo1
gruppo3
drwx r-s --- utente1 gruppo3    /dir1
i files all'interno sono cosi creati
-rwx r-s r-x utente1 gruppo3   file1
-rwx r-s r-x utente1 gruppo3   file2
.......
-rwx r-s r-x utente1 gruppo3   fileN
in questo modo sono leggibili e modificabili dal proprietario e
leggibili dal gruppo3.
L'unico modo che mi è venuto in mente per far si che non vengano
cancellati dall'autore è quello di modificare con uno script (che
viene eseguito da solo a fine giornata tramite crontab) gli attributi
lo script contiene semplicemente il comando  chattr +i /dir1/*.doc
cìè però il problema che i file diventano cancellabili da nessuno , ma
neanche modificabili ?
Come posso risolvere ?
grazie

 grazie
hai fatto un gran casino, del quale non ho capito niente
anyway, quello che vuoi fare si fa cos�:
attributo w per il file-> ci puoi scrivere
attributo w per la directory che contiene tale file, puoi cancellare il
file e/o crearne uno nuovo
quindi: 
chmod a-w su dir
chmod a+w su dir/*
in questo modo tutti possono modificare, nessuno puo' creare/cancellare
da qui poi affina con i gruppi/utenti/proprietari
ciao 

> hai fatto un gran casino, del quale non ho capito niente
mi spiace che non hai capito niente
cercherò di essere più sintetico
allora in questa directory l'utente può creare dei nuovi files ma una
volta creati non può modificarli
se faccio come dici tu
chmod a-w su dir
l'utente non può più creare nuovi files
altre idee?

 l'utente non pu� pi� creare nuovi files
Allora: l'utente crea un file il cui owner e' l'utente stesso (di 
default). Tu vorresti che l'owner non potesse piu' modificare il file, 
ma questo e' incompatibile con il permesso di crearlo inizialmente.
Non sono certo che tu possa fare con in permessi quello che vorresti. 
Se l'utente x puo' scrivere nella directory, automaticamente potra' 
scrivere all'interno dei files che ha appena creato. I semplici 
permessi mi sembrano insufficienti allo scopo.

Scusate ho commesso un errore
l'utente può creare files in questa cartella , ma una volta creati non
può CANCELLARLI , ma solo modificarli.
credo anche io che c'è bisogno di qualcosa altro oltre ai semplici
permessi.
ma di cosa?

 ma di cosa?
Dico una fesseria (ma forse non troppo): i permessi standard non 
distinguono fra cancellazione e scrittura (read, write, exec). Quindi 
secondo me non ne esci usando solo i permessi.

 secondo me non ne esci usando solo i permessi.
si la dici, i permessi non distinguono tra cancellazione e *creazione* (e
per capirli bisogna risalire alla dir che contiene il file). Mentre quelli
sulla scrittura sono quelli del file stesso.

 sulla scrittura sono quelli del file stesso.
Ok, ma il problema originale non so se si risolve. Se l'utente pippo 
vuole creare
un file in /a/, devi dare il permesso di scrittura alla dir. a. Poi 
vuole modificare il file /a/b.txt,
e quindi devi dare il permesso di scrittura anche al file b.txt. Come 
gli impedisci di cancellarlo, ora? Dovresti togliere la scrittura su 
/a/, ma cosi' escludi la futura creazione di altri file in /a/
Non saprei che fare, con i permessi.

 ma di cosa?
Per esempio delle Access Control Lists (ACL). I filesystems di alcuni 
BSD e di Mac OS 10.4 e superiori li supportano. In Mac OS, puoi fare 
proprio quello che vuoi tu:
http://devworld.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/Articles/ACLs.html
Con 
Linux, non saprei dirti, anche se il fatto che le ACL si vantino di 
fare quello che vuoi tu e' probabilmente un segno che senza ACL sia 
impossibile o estremamente cervellotico.

 impossibile o estremamente cervellotico.
In linux il pacchetto è spesso installato, e si chiama acl , fornisce per
esempio i comandi setfacl e getfacl che permettono di vedere e settare gli
attributi estesi (ACL).
Attenzione che programmi come ls e simili non consentono di vedere le ACL,
quindi a volte si finisce per capire un comportamento apparentemente strano
per poi capire che ci sono le ACL attive.
P.S. Se mi ricordo bene il supporto alle ACL deve essere presente nel kernel
(cosa che dovrebbe essere normalmente già presente).


No? Non si usa 'ls -le' per vedere i permessi estesi? Mi sembra strano che 
sia possibile attivare le ACL ma non sia possibile listare gli attributi
estesi di un file...

Simone wrote:

Posso solo dire che fino alla fc6/7 ls non ha l'opzione -e e non consente di
visualizzare gli attributi estesi, e questo vale per ogni programma che
sarebbe utile che potesse gestirli/visualizzarli.
Poi e sempre possibile che successive versioni di ls abbiano la possibilità
di visualizzarli (o anche che stia sbagliando alla grande).

 di visualizzarli (o anche che stia sbagliando alla grande).
Non so, in questo momento ho Mac OS e vedo le acl con 'ls -le'. 
Provero' con linux.

 Quindi bisogna scriversi a mano su un quadernino gli attributi estesi? ;-)
]zac[
P.S. Ci sono due comandi appositi che impostano e leggono i soli attributi
estesi (acl).
Il discorso sarebbe lungo e c'è una certa filosofia/pratica da prendere per
giusta a scatola chiusa:
In linux/unix le uniche specifiche che sono sicuramente implementate e
garantite sono le posix (che è uno standard certificato), tutte il resto
(quindi anche le acl) vengono fornite solo in base alla qualità e quantità
dell'interesse degli sviluppatori, mantainer dei progetti, degli utenti.
Poi c'è un largo disinteresse nel mondo linux/unix verso gli attributi
estesi (acl), quindi è stato fatto lo sforzo di implementarle ma c'è un
discreto disinteresse nell'adattare la marea di programmi che hanno a che
fare con gli attributi.
P.S. La cosa curiosa è che in effetti, a parte casi molto rari e
particolari, della acl si fa abbastanza tranquillamente a meno, e
personalmente ho notato che sono i sistemi operativi e non l'utente a fare
un uso (che diventa abuso (nel senso che invece che studiare un metodo
semplice e affidabile, si inseriscono una vagonata di acl qui e la))
sofisticato e frequente delle acl, finendo per creare a volte situazioni
molto complicate da risolvere (più uno strumento è sofisticato è più sono
contorte da risolvere le eventuali situazioni sfavorevoli).