PDA

Visualizza la versione completa : [C] Modificare permessi symlink


auron567
01-06-2010, 23:16
Ho un problema con un esercizio: questo esercizio chiede di creare un link simbolico ad un file concedendo solo il permesso di lettura e scrittura al proprietario. possibile creare un symlink con i permessi diversi da quelli standard? oppure possibile modificarli in seguito? avevo ad esempio pensato alla funzione chmod, ma segue il link simbolico e quindi cambia i permessi del file puntato.

grazie per un eventuale aiuto :)

EDIT: naturalmente sto parlando di un sistema linux, tipo ubuntu.

MacApp
02-06-2010, 01:20
Originariamente inviato da auron567
Ho un problema con un esercizio: questo esercizio chiede di creare un link simbolico ad un file concedendo solo il permesso di lettura e scrittura al proprietario. possibile creare un symlink con i permessi diversi da quelli standard? oppure possibile modificarli in seguito? avevo ad esempio pensato alla funzione chmod, ma segue il link simbolico e quindi cambia i permessi del file puntato.

grazie per un eventuale aiuto :)

EDIT: naturalmente sto parlando di un sistema linux, tipo ubuntu.

http://it.wikipedia.org/wiki/Collegamento_simbolico


Nei sistemi Unix di derivazione BSD possibile assegnare permessi direttamente anche ai collegamenti simbolici stessi. Negli altri sistemi Unix e Unix-like i permessi di un collegamento simbolico sono pressoch irrilevanti, dal momento che saranno utilizzati quelli del file di destinazione;


Quindi ad esempio da Mac OS X (che uno Unix derivato da FreeBSD) per cambiare i permessi con chmod devi usare l'opzione -h:


$ uname -a
Darwin ig-MacBook-Pro.local 10.3.0 Darwin Kernel Version 10.3.0: Fri Feb 26 11:58:09 PST 2010; root:xnu-1504.3.12~1/RELEASE_I386 i386
$ man chmod
...
-h If the file is a symbolic link, change the mode of the link itself rather than the file that the link points to.
..

$ ls -al
total 8
drwxr-xr-x 4 ig staff 136 Jun 2 01:16 ./
drwxr-xr-x 33 ig staff 1122 Jun 2 01:05 ../
lr--r--r-- 1 ig staff 17 Jun 2 01:16 test_link.txt@ -> test_original.txt
-rw-r--r-- 1 ig staff 0 Jun 2 01:16 test_original.txt


in cui, come puoi vedere, a test_link.txt stata revocato il permesso in scrittura.

auron567
02-06-2010, 09:43
grazie della spiegazione. per visto che l'esercizio in questione chiede di scrivere un programma C e non di eseguire operazioni da terminale, c' un modo per cambiare i symlink con qualche funzione o istruzione C?

oregon
02-06-2010, 10:00
http://docs.sun.com/app/docs/doc/806-0626/6j9vgh64k?l=en&a=view&q=chmod+%282%29

auron567
02-06-2010, 10:17
Originariamente inviato da oregon
http://docs.sun.com/app/docs/doc/806-0626/6j9vgh64k?l=en&a=view&q=chmod+%282%29

quindi?

usando chmod in un programma C su un symlink cambia i permessi del file puntato e non quelli del link simbolico. c' qualche particolare che mi sfuggito?

oregon
02-06-2010, 10:29
Originariamente inviato da auron567
quindi?

usando chmod in un programma C su un symlink cambia i permessi del file puntato e non quelli del link simbolico. c' qualche particolare che mi sfuggito?

http://osr507doc.sco.com/en/man/html.C/chmod.C.html

... It makes no sense for symbolic links to have their own permissions and ownerships. ...

auron567
02-06-2010, 10:40
Originariamente inviato da oregon
http://osr507doc.sco.com/en/man/html.C/chmod.C.html

... It makes no sense for symbolic links to have their own permissions and ownerships. ...

si certo, non ha senso cambiare i permessi di un link simbolico, ma non sono io che voglio fare una cosa del genere, l'esercizio che lo richiede. nello specifico, come ho scritto nel primo post, chiede di creare un symlink ad un file e dare solo i permessi di lettura e scrittura al proprietario. a questo punto non so, forse un traccia ingannevole o qualcosa del genere...

oregon
02-06-2010, 10:53
Non credo sia ingannevole ma penso che il soggetto sia sempre il "file" non il link simbolico.

auron567
02-06-2010, 11:06
Originariamente inviato da oregon
Non credo sia ingannevole ma penso che il soggetto sia sempre il "file" non il link simbolico.

si, hai ragione. grazie mille per l'aiuto ;)

Loading