Newsgroup: it.comp.macintosh
Titolo: Directory inaccessibili anche con SUDO, ci si puo' entrare?

Ciao a tutti!
Per caso mi sono imbattuto in 2 directory, in cui non
riesco ad accedere! Si trovano sotto /Lybrary/Logs/Console.
Ce n'è sono tre, una con il nome del mio utente, le altre due
credo siano 2 utenti che creai tempo fa per prova, e
vedendo cosa c'è dentro la mia suppongo che all'interno ci siano
solo dei file di log. Ora pero' anche cercando di entrare
da terminale con SUDO non c'è verso di riuscirci.
C'è qualche modo per entrarci che voi sappiate? Inoltre poi posso
tranquillamente gettarle via? ;)
Grazie anticipatamente!
Alessandro

 da terminale con SUDO non c'è verso di riuscirci.
Stai facendo "sudo cd"? Per una serie di motivi abbastanza astrusa, 
sappi che non funziona.
Fai "sudo sh" <a capo> password <a capo> e da quel momento puoi entrare 
in qualsiasi cartella col normale cd. Stai attento perché "sudo sh" 
trasforma la linea di comando normale in una linea di comando di root, 
per cui tutti i comandi che esegui sono come se avessero "sudo" davanti 
anche se non lo scrivi!!! usa "exit" per tornare alla linea di comando 
calda, comoda, sicura e soprattutto non di root :).
  - theta aka l0ne aka ema aka mille_nomi

  - theta aka l0ne aka ema aka mille_nomi
Infatti mi ero dimenticato di dirlo che provavo con "sudo cd" e non 
andava... poi ho guardato delle man pages, ma proprio alla veloce
e intanto ho postato qua :)
Grazie per l'info, era proprio quello di cui necessitavo :)
Ale

 Grazie per l'info, era proprio quello di cui necessitavo :)
Ottima dritta, ma, secondo me, la "serie di motivi" non e` poi cosi`
astrusa -- capendo PERCHE` "sudo cd" non PUO` funzionare, si fa un
piccolo salto di qualita` nella comprensione dello Unix che e` proprio
il cuore di Mac OS X.
Il concetto chiave, qui, e` quello di PROCESSO.  Ogni diverso programma
che gira gira in un suo processo; processi separati sono ben divisi e
protetti l'uno dall'altro, se ne fa carico il sistema operativo.  Due
processi diversi possono comunicare fra loro, ma solo se esplicitamente,
entrambi, collaborano per farlo (ad esempio se lo standard-input
dell'uno e` connesso allo standard-output dell'altro attraverso una
"pipe" -- o altri approcci basati su file, socket, o robbe esotiche).
Ciascun processo ha un "current directory" -- il singolo directory
rispetto al quale sono risolte tutte le path relative (ad esempio i
filename "nudi", ma piu` in generale tutte le path che non cominciano
con una "/").  Il current directory e` parte dello "stato" del processo
e NON puo` essere "forzatamente alterato" da parte di NESSUN altro
processo.
La maggior parte dei "comandi" di una shell (come ad esempio bash) sono
in realta` programmi separati dalla shell, e quindi girano in processi
separati da quello in cui gira la shell.  Quando ad esempio scrivo al
prompt di bash ls seguito da return, bash trova l'eseguibile /bin/ls,
genera un nuovo processo, ci fa girare /bin/ls, e aspetta che termini
prima di presentarmi nuovamente il prompt.  Fra i tanti vantaggi: se
anche c'e` un bug terribile nel programma esterno, e QUEL processo crepa
brutalmente, il processo che sta girando bash e` sano e salvo, e puo`
offrire una qualche diagnosi sul disastro capitato all'altro processo.
Il comando "cd", come alcuni altri, fa ovviamente eccezione: bash lo
riconosce come uno dei suoi propri comandi esterni e provvede a
modificare un pezzetto del proprio stato interno, il "current
directory".  cd non PUO` essere un normale comando, cioe` un programma
esterno, perche` detto programma, girando in un processo separato, non
potrebbe modificare il current directory del processo che gira bash!
sudo NON fa eccezione -- e` un normalissimo comando, cioe` un programma
eseguibile del tutto separato da bash (questo programma ha settato il
flag di "set-user-id", o suid che dir si voglia, e quindi puo` girare
coi privilegi di root, e se del caso far girare cosi` anche altri
programmi ancora).  "sudo cd" dunque puo` al massimo fare (coi privilegi
di root) il "cd" di un ALTRO processo, NON di quello che sta facendo
girare la shell da cui eseguo il comando 'sudo'.  Questo altro processo,
cambiato il proprio directory corrente, termina subito, cosa chiaramente
assai poco utile.
Ecco, dunque, perche` "sudo bash" seguito (al prompt del nuovo shell) da
cd e poi, che so, ls, puo` funzionare, mentre "sudo cd" assolutamente
non puo`.  Per evitare il pericolo di avere un prompt interattivo di
shell che giri coi privilegi di root (troppo facile fare danni...) si
possono scegliere approcci alternativi, tipo:
echo "cd /Library/Logs/Segretissimo/; ls" | sudo bash
cioe` passare una sequenza precisa, predefinita, e ben limitata di
comandi al bash che esegue coi privilegi di root.
Alex