Newsgroup: it.comp.os.linux.development
Titolo: File, categorie di utenti e permessi di esecuzione

Io.
Come faccio a "elencare i nomi dei file per i quali esattamente una 
categoria di utenti ha permesso di esecuzione" ?
Intendendo per categoria di utenti l'owner, il gruppo, gli altri... 
(giusto ?) dovrei ragionare sul primo campo di ls -l per "vedere" i file 
che hanno una sola 'x' nei permessi (giusto ?).
Beh... non riesco ad arrivarci... :(
Come diavolo faccio? Ho provato sia con grep e awk...ma mi incasino ... :(



find -perm XXX

 find -perm XXX
una cosa, ho notato la cattiva abitudine in molti di fasciarsi la testa
cercando vie astruse per risolvere problemi semplici proprio in casi come
questo.
Quando devi effetuare una ricerca tra file,per quanto strano possa essere
il criterio, find ha quasi sicuramente un' opzione che matcha il tuo
criterio.

RedWiz ha scritto:

Ho provato, ma ... come glielo dico a find che voglio i file in cui 
*soltanto* una categoria di utenti ha i permessi di esecuzione ?

 *soltanto* una categoria di utenti ha i permessi di esecuzione ?
una "categoria" che sarebbe? gli scapoli o gli ammogliati? :)
se intendi un groppo o un user ci sono le opzioni rispettivamente
-gid e -uid 

 *soltanto* una categoria di utenti ha i permessi di esecuzione ?
Dai a find diversi parametri di ricerca. Es.:
find $startdir '-perm /111 ( ( -user yoda -o -user luke ) -group
jedi -o -user obiwan ) -print'
man find

 man find
ma forse non riesco a spiegarmi...
il problema è generico... mica per l'user alex e jonny, o i gruppi 
kessler e gialappa ...
devo "elencare i nomi dei file per i quali esattamente una categoria di 
utenti ha permesso di esecuzione".
Ovvero, devo elencare i file per cui succede che:
- l'owner ha permesso di esecuzione, il gruppo NO, gli altri NO;
- l'owner NON ha permesso di esecuzione, il gruppo SI, gli altri NO;
- l'owner NON ha permesso di esecuzione, il gruppo NO, gli altri SI.
E' più chiaro ora?

 - l'owner NON ha permesso di esecuzione, il gruppo NO, gli altri SI.
"001"
Con find:
find . -perm -100 -not -perm -010 -not -perm -001 # per utente
find . -perm -010 -not -perm -100 -not -perm -001 # per gruppo
find . -perm -001 -not -perm -100 -not -perm -010 # per altri
So che sembra ostica... ma io l'ho fatta leggendo `man find` (il mio utilizzo
di find era limitato ad -exec, finora...)
David
-- 
 . ''`.  Debian maintainer | 
http://wiki.debian.org/DavidPaleino
 : :'  : Linuxer #334216 --|-- 
http://www.hanskalabs.net/
 `. `'`  GPG: 1392B174 ----|---- 
http://snipr.com/qa_page
   `-   2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174

 E' più chiaro ora?
La risposta e` sempre quella:
man find
/EXAMPLE

 E -perm non ti basta?
no, grazie lo stesso

grazie lo stesso

Giusto per completezza, questo è il testo dell'esercizio:
Si scriva un comando di shell UNIX per ciascuno dei seguenti compiti(1) :
  [...]
  (e) Elencare i nomi dei file per i quali esattamente una categoria di 
utenti ha permesso di esecuzione.
--
(1)Per "comando", si intende qualunque istruzione impartita al prompt 
della shell, che non contenga strutture di controllo, uso di variabili, 
o l'operatore ";".

 find . -perm -001 -not -perm -100 -not -perm -010 # per altri
David


 > find . -perm -001 -not -perm -100 -not -perm -010 # per altri
Ovviamente, questo, per rilevare il bit "x" (esecuzione).
Dovresti modificare i comandi in base a quale permesso cerchi.


 
Il resto della tua risposta l'ho letta... ma io devo scrivere *un* 
comando che ... non *tre* comandi ... a meno che le tre righe di find 
che hai scritto si possano mettere in or tra loro...

 che hai scritto si possano mettere in or tra loro...
A meno che!

 o l'operatore ";".
Continuando su questa linea:
Byte: Unita' di misura dell'informazione. Equivale a sei bit.

 Byte: Unita' di misura dell'informazione. Equivale a sei bit.
                                                       ^^^
?


 
Ho dimenticato di aggiungere una emoticon per sottolineare
l'ironia. :-P
PS _Oggi_ un byte e' otto bit ma fino alla meta' degli anni 
settanta un byte aveva una lunghezza casuale compresa tra 
quattro e nove bit.

 Giusto per completezza, questo è il testo dell'esercizio:
hai provato almeno a leggere il libro di testo prima di chiedere (dalle
tue risposte sembrerebbe anche pretendere) che ti vengano fatti gli
esercizi?
Comunque la soluzione sta tutta in man find e al limite qualche prova.
Ciao, Micky
-- 
What's this hash prompt on my terminal mean?
Micky Del Favero  -  System Manager  &  BOFH

 che hai scritto si possano mettere in or tra loro...
A me sembra che tu ti stia facendo dare la soluzione per un esame o 
qualcosa del genere. In questo caso: studia!
In caso ti servisse per uno script: studia. (senza il punto esclamativo)
Bye.

 quattro e nove bit.
Vidi un mainframe che andava a 36 bit, ma non ricordo cosa fosse... Parliamo
degli anni 80...
-- 
                          |   Comm'e` triste e comm'e` amaro
\|/ ____ \|/   \ ||_|     |   sta assettato a gguarda`,
"@'/ ,. \`@"    \|| |     |   tutt''e cose, tutt''e parole
/_| \__/ |_\ Vax Headroom |   ca niente ponno fa`...
   \__U_/                 |                   Pino Daniele

 
quello era un 1100 della Sperry/Univac con:
istruzioni a 36 bit, interi a  36 e 72 bit, floating point a 36 e 72 bit 
e caratteri a 6 bit ( chiaramente un set 'ridotto' rispetto agli attuali 
: maiuscole numeri segni vari ) , nelle stringhe ogni parola conteneva 6 
caratteri della stringa!
sai anche che io ci ho programmato
P.S. un bacio alla bimba