Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100

    diritti su stat in c sotto ubuntu

    sto lavorando sotto linux ubuntu e utilizzo C come linguaggio.
    attraverso le strutture stat devo leggere i diritti di accesso di un file ma non so come fare!so come si legge la dimensione
    (
    struct stat statttt;
    printf("%d",statttt.st_size);
    )
    ma non come interpretare e leggere i diritti di accesso(ovvero la prima stringa ke esce fuori quando lanciamo il comando ls -l (drwxrw-r--)...come devo fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Ciao antony (sei quell' "antony" o ricordo male o-o")

    Quella stringa si interpreta così:

    il primo carattere ti indica il tipo di file: una d (come in quell'esempio) sta ad indicare che il file è una directory, un - indicherebbe che è un file regolare, una l che è un link simbolico ecc...

    i seguenti nove caratteri sono da dividere a gruppi di 3 "rwx", dove r(ead) indica il permesso di lettura, w(rite) quello di scritture ed (e)x(ecute) il permesso di esecuzione. La prima tripla indica quali di questi permessi possiede sul file l'utente proprietario del file stesso, il cui username viene riportato immediatamente dopo; la seconda tripla indica i permessi relativi al gruppo dell'utente proprietario (indicato subito dopo il nome nella riga), mentre la terza tripla indica i permessi degli "altri", cioè di altri utenti di altri gruppi.

    In particolare, poi, su una directory i 3 permessi di cui sopra assumono questo significato: il permesso di lettura indica che puoi elencare i contenuti di quella directory con ls, i permessi di scrittura che puoi crearci dentro un file e i permessi di esecuzione che ti puoi spostare al suo interno.

    In sostanza la stringa che hai riportato, drwxrw-r--, indica che il file è una directory, che l'utente proprietario può farci tutto (leggere, scrivere e muoversi), che gli altri utenti appartenenti al suo gruppo possono solo leggerci e scriverci e che gli altri appartenenti a gruppi diversi possono soltanto leggere (questo perché il simbolo '-' indica che quello specifico permesso manca).
    every day above ground is a good one

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100
    no,non ci siamo capiti!so cosa significano r w x,io volevo sapere come fare,all'interno di un programma c,e aprendo un file,come fare per leggere anche i diritti di un file e stamparli a video.Posso "pensare" che possa venire usata la struttura stat(ke contiene info su un file),ma non so come fare!cmq si,ci conosciamo!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    aaaaaaah scusami carissimo! Il fatto è che non essendo sicuro (o meglio: non ricordando) che tu fossi tu sono andato sul banale... ^^" la demenza senile incalza... :|

    Comunque guarda le informazioni sui permessi ti vengono date dal campo st_mode della struct stat che non è altro che una OR dei bit dei permessi, è spiegato tutto qui:

    http://mirko.lilik.it/gapil/gapilsu76.html

    (che è una pagina del gapil tra l'altro, che noi conosciamo bene )

    In pratica ti conviene stampare il campo st_mode come esadecimale (visto che in ottale non si può) e convertirlo poi in binario come sappiamo fare (potresti farlo anche col numero in decimale ma in base 16 è più semplice).

    Se ad esempio hai questo numero

    81ff

    che in binario è

    1000000111111111

    in pratica gli ultimi 3 bit rappresentano l'ultima tripla rwx della stringa di cui parlavamo prima, i penultimi 3 bit la seconda tripla e i terzultimi la prima tripla

    1000000 111 111 111

    quindi questo significa che il file in questione è stato aperto con i permessi di lettura e scrittura per tutti.
    I tre bit ancora più significativi dovrebbero rappresentare rispettivamente (dal più significativo al meno significativo) s_uid, s_gid e s_sticky bit, che in quel caso sono posti tutti e 3 a 0.

    Gli ultimi 4 bit (quelli più significativi) non so a cosa servano... probabilmente sono bit "sporchi" dovuti al fatto che bisognava necessariamente arrivare almeno a 16 (visto che in C non esistono tipi di dato a 12 bit), ma non ti saprei dire con certezza
    every day above ground is a good one

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.