sistemele de Fișiere utilizează permisiuni și atribute pentru a regla nivelul de interacțiune pe care procesele de sistem îl pot avea cu fișierele și directoarele.avertisment: atunci când este utilizat în scopuri de securitate, permisiunile și atributele se apără numai împotriva atacurilor lansate din sistemul pornit. Pentru a proteja datele stocate de atacatori cu acces fizic la mașină, trebuie să implementați și criptarea datelor în repaus.,

Vizualizare permissions

Folosiți comanda ls e -l opțiune pentru a vizualiza permisiunile (sau fișier modul) set pentru conținutul unui director, de exemplu:

$ ls-l /path/to/director

prima coloană este ceea ce trebuie să se concentreze asupra., Taking an example value of drwxrwxrwx+, the meaning of each character is explained in the following tables:

d rwx rwx rwx +
The file type, technically not part of its permissions. See info ls -n "What information is listed" for an explanation of the possible values., permisiunile pe care proprietarul le are asupra fișierului, explicate mai jos. permisiunile pe care grupul le are asupra fișierului, explicate mai jos. permisiunile pe care toți ceilalți utilizatori le au asupra fișierului, explicate mai jos. un singur caracter care specifică dacă o metodă de acces alternativ se aplică fișierului. Când acest personaj este un spațiu, nu există o metodă alternativă de acces. Un . caracter indică un fișier cu un context de securitate, dar nici o altă metodă de acces alternativ., Un fișier cu orice altă combinație de metode alternative de acces este marcat cu un caracter +, de exemplu în cazul listelor de control al accesului.,

Fiecare dintre cele trei permisiunea triade (rwx în exemplul de mai sus) poate fi format din următoarele caractere:

Personaj Efect asupra fișiere Efect pe directoare
permisiunea de a Citi (primul caracter) - fișierul nu poate fi citit., conținutul directorului nu poate fi afișat.
r fișierul poate fi citit. conținutul directorului poate fi afișat.
Scriere (al doilea personaj) - fișierul nu poate fi modificat. conținutul directorului nu poate fi modificat.
w fișierul poate fi modificat., conținutul directorului poate fi modificat (creați fișiere sau foldere noi; redenumiți sau ștergeți fișierele sau folderele existente); necesită setarea permisiunii de executare, altfel această permisiune nu are efect.
Executa permisiunea (al treilea personaj) - fișierul nu poate fi executat. directorul nu poate fi accesat cu cd.
x fișierul poate fi executat., director pot fi accesate cu cd-ul; acest lucru este doar permisiunea de biți care, în practică, poate fi considerat a fi „moștenit” de la strămoșul directoare, într-adevăr, dacă orice folder în cale nu au x bit setat, ultimul fișier sau un folder nu poate fi accesat, fie, indiferent de permisiunile acestuia; a se vedea path_resolution(7) pentru mai multe informații.,
s De setuid pic atunci când a constatat în care utilizatorul triada; la setgid pic atunci când a constatat în grupul triada; nu este găsită în altele triada; aceasta implică, de asemenea, că x este setat.
S la Fel ca s, dar x nu este setat; rare pe fișiere obișnuite, și inutil pe foldere.,
t The sticky bit; it can only be found in the others triad; it also implies that x is set.
T Same as t, but x is not set; rare on regular files, and useless on folders.

See info Coreutils -n "Mode Structure" and chmod(1) for more details.,

sfat: puteți vizualiza permisiunile de-a lungul unei căi cu namei -l path.

Exemple

Să vedem câteva exemple pentru a clarifica:

drwx------ 6 archie users 4096 Jul 5 17:37 Documents

Archie are acces complet la directorul Documente. El poate lista, crea fișiere și redenumi, șterge orice fișier din documente, indiferent de permisiunile fișierului. Capacitatea sa de a accesa un fișier depinde de permisiunea fișierului.

dr-x------ 6 archie users 4096 Jul 5 17:37 Documents

Archie are acces complet, cu excepția faptului că nu poate crea, redenumi, șterge orice fișier., El poate lista fișierele și (dacă permisiunea fișierului împuternicește) poate accesa un fișier existent în documente.

d-wx------ 6 archie users 4096 Jul 5 17:37 Documents

Archie nu poate face ” ls ” în documente, dar dacă știe numele unui fișier existent, atunci poate lista, redenumi, șterge sau (dacă permisiunea fișierului îl împuternicește) accesați-l. De asemenea, el este capabil să creeze fișiere noi.

d--x------ 6 archie users 4096 Jul 5 17:37 Documents

Archie este capabil doar (dacă permisiunea fișierului îl împuternicește) să acceseze acele fișiere în documente despre care știe. El nu poate lista fișierele deja existente sau nu poate crea, redenumi, șterge oricare dintre ele.,trebuie să rețineți că elaborăm permisiunile de director și nu are nicio legătură cu permisiunile individuale ale fișierelor. Când creați un fișier nou, directorul se schimbă. De aceea aveți nevoie de permisiunea de a scrie în director.

Să ne uităm la un alt exemplu, de această dată de un fișier, nu un director:

-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar

Aici putem vedea prima literă nu este d dar -. Deci știm că este un fișier, nu un director., În continuare, permisiunile proprietarului sunt rw- astfel încât proprietarul are capacitatea de a citi și scrie, dar nu de a executa. Acest lucru poate părea ciudat că proprietarul nu are toate cele trei permisiuni, dar x permisiune nu este necesară, deoarece acesta este un text/fișier de date, pentru a fi citit de către un editor de text cum ar fi Gedit, EMACS, sau software-ul ca R, și nu un executabil de sine stătător (dacă conținea ceva de genul programare python code atunci ar putea fi foarte bine)., Grupul permisiunile sunt setate la r--, deci grupul are capacitatea de a citi fișierul, dar nu scrie/edita în orice mod — este, în esență, cum ar fi setarea ceva read-only. Putem vedea că aceleași permisiuni se aplică tuturor celorlalți.

schimbarea permisiunilor

chmod este o comandă în Linux și în alte sisteme de operare asemănătoare Unix care permite modificarea permisiunilor (sau a modului de acces) unui fișier sau director.

metoda textului

pentru a schimba permisiunile – sau modul de acces-al unui fișier, utilizați comanda chmod într-un terminal., Mai jos este comanda structura generală:

chmod who=permissions filename

Unde who este orice dintr-o serie de scrisori, fiecare semnificând care se acordă permisiunea. Acestea sunt următoarele:

  • u: utilizatorul care deține fișierul.
  • g: grupul de utilizatori din care face parte fișierul.
  • o: ceilalți utilizatori, adică toți ceilalți.
  • a: toate cele de mai sus; utilizați acest lucru în loc să tastați ugo.,

permisiunile sunt aceleași ca și discutate în #permisiuni de Vizualizare (r, w și x).

acum aruncați o privire la câteva exemple folosind această comandă., Să presupunem că ai devenit foarte protecție a Documentelor director și a vrut să nege toată lumea, dar tu, permisiuni pentru a citi, scrie și executa (sau, în acest caz căutare/uit) la ea:

Înainte: drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documents

$ chmod g= Documents$ chmod o= Documents

După: drwx------ 6 archie users 4096 Jul 6 17:32 Documents

Aici, pentru că vrei să nege permisiuni, nu pune nici scrisori după = unde permissions ar fi intrat. Acum puteți vedea că numai proprietarul permisiunile sunt rwx și toate celelalte permisiuni sunt -.,

Acest lucru poate fi inversat cu:

Înainte: drwx------ 6 archie users 4096 Jul 6 17:32 Documents

$ chmod g=rx Documents$ chmod o=rx Documents

După: drwxr-xr-x 6 archie users 4096 Jul 6 17:32 Documents

În următorul exemplu, doriți să acordați permisiuni de citire și executare a grupului, și alți utilizatori, deci ai pus litere pentru permisiuni (r și x) după =, fără spații.

puteți simplifica acest lucru pentru a pune mai mult de o literă who în aceeași comandă, e.,g:

$ chmod go=rx Documents
Notă: nu conteaza ordinea in care ai pus who scrisori sau permisiunea de litere într-un chmod command: ai putea avea chmod go=rx file sau chmod og=xr file. Totul este la fel.,ider un al doilea exemplu, să presupunem că doriți să modificați un foobar fișier, astfel încât să aveți permisiunile de citire și scriere, și alți utilizatori din grup users care poate fi colegi de lucru pe foobar, de asemenea, poate citi și scrie la ea, dar alți utilizatori pot doar citi:

Inainte: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar

$ chmod g=rw foobar

După: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar

Acesta este exact ca în primul exemplu, dar cu un fișier, nu un director, și vă acordă permisiunea de scriere (doar așa, ca să dau un exemplu de acordare fiecare permisiune).,

Text metodă de comenzi rapide

comanda chmod vă permite să adăugați și scădea permisiuni de la un set existent folosind + sau - în loc de =. Acest lucru este diferit de la comenzile de mai sus, care, în esență, re-scrie permisiuni (de exemplu, pentru a schimba o permisiune de la r-- și rw-, aveți în continuare nevoie pentru a include r precum w dupa = în comanda chmod invocare., Dacă ați ratat r, ar r permisiunea ca acestea sunt re-scrise cu =. Folosind + și - evită acest lucru prin adăugarea sau de a lua departe de actualul set de permisiuni).,>Înainte: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar

$ chmod a-w foobar

După: -r--r--r-- 1 archie users 5120 Jun 27 08:28 foobar

O altă comandă rapidă este special X modul: aceasta nu este o reală fișier modul, dar acesta este adesea folosit în combinație cu -R opțiune pentru a seta executabil pic doar pentru directoare, și lăsați-l neschimbat de fișiere obișnuite, de exemplu:

$ chmod -R a+rX ./data/

Copierea permissions

este posibil să-ți spun chmod pentru a copia permisiunile de la o clasă, spune proprietarul, și să dea aceleași permisiuni de grup sau chiar toate., Pentru a face acest lucru, în loc de a pune r, w sau x dupa =, a pus-o altă scrisoare care. e.g:

Înainte: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar

$ chmod g=u foobar

După: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar

Această comandă, în esență, se traduce prin „a modifica permisiunile de grup (g=), pentru a fi la fel ca detine utilizator (=u). Rețineți că nu puteți copia un set de permisiuni, precum și acorda altele noi, de ex.,:

$ chmod g=wu foobar

în acest caz, chmod arunca o eroare.

metoda numerică

chmod poate seta, de asemenea, permisiuni folosind numere.

utilizarea numerelor este o altă metodă care vă permite să editați permisiunile pentru toți cei trei proprietari, grup și alții în același timp, precum și setuid, setgid și sticky bits. Această structură de bază din codul este acesta:

$ chmod xxx filename

Unde xxx este un număr format din 3 cifre, unde fiecare cifră poate fi orice, de la 0 la 7., Prima cifră se aplică permisiunilor pentru proprietar, a doua cifră se aplică permisiunilor pentru grup, iar a treia cifră se aplică permisiunilor pentru toate celelalte.

În acest număr notație, valorile r, w și x au propria lor valoare număr:

r=4w=2x=1

Pentru a veni cu un număr de 3 cifre, aveți nevoie să ia în considerare ce permisiuni vrei proprietar, grup, și toți ceilalți să aibă, și apoi totalul valorilor lor în sus., vrei grupului și toată lumea să aibă doar permisiuni de citire și executare, ar veni cu valori numerice, astfel:

  • Proprietar: rwx=4+2+1=7
  • Grup: r-x=4+0+1=5
  • Altele: r-x=4+0+1=5
$ chmod 755 filename

Acesta este echivalentul folosind următoarea:

$ chmod u=rwx filename$ chmod go=rx filename

Pentru a vizualiza permisiunile existente ale unui fișier sau director în forma numerica, utilizați stat(1) de comandă:

$ stat -c %a filename

Unde %o opțiune specifică de ieșire în formă numerică.,

cele Mai multe foldere și directoare sunt stabilite pentru 755 pentru a permite citire, scriere și execuție pentru proprietar, dar neagă scris la toată lumea, și fișierele sunt în mod normal 644 pentru a permite lectură și scriere pentru proprietar, dar doar de lectură pentru oricine altcineva; se referă la ultima notă cu privire la lipsa de x permissions cu non fișiere executabile: este același lucru aici.,

Pentru a vedea acest lucru în acțiune cu exemple luați în considerare exemplul anterior, care a fost folosit, dar cu această metodă numerică, aplicat în loc:

Înainte: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar

$ chmod 664 foobar

După: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar

Daca asta a fost un executabil numărul ar fi 774 dacă ai vrea să acorde executabil permisiunea de la proprietar și de grup. Alternativ, dacă ați dorit ca toată lumea să aibă doar permisiunea de citire, numărul ar fi 444., Tratarea r 4, w ca 2, și x ca 1 este, probabil, cel mai simplu mod de a lucra valorile numerice pentru utilizarea chmod xxx filename, dar există, de asemenea, un binar metodă, în cazul în care fiecare permisiunea are un număr binar, și atunci, care este la rândul său convertit la un număr. Este un pic mai complicat, dar aici inclus pentru completitudine.,

luați în Considerare această permisiune set:

-rwxr-xr--

Dacă ai pus un 1 în fiecare permisiune acordată, și 0 pentru fiecare unul nu s-a acordat, rezultatul ar fi ceva de genul:

-rwxrwxr-x 111111101

apoi, puteți converti aceste numere binare:

000=0 100=4001=1 101=5010=2 110=6011=3 111=7

valoarea de mai sus ar fi, prin urmare, 775.

Gândiți-ne-am dorit pentru a elimina permisiuni de scriere de grup:

-rwxr-xr-x 111101101

valoarea ar fi, prin urmare, 755 și le-ar folosi chmod 755 filename pentru a elimina permisiuni de scriere., Veți observa că veți obține același număr de trei cifre, indiferent de metoda pe care o utilizați. Indiferent dacă utilizați text sau numere va depinde de preferințele personale și de viteza de tastare. Atunci când doriți să restaurați un director sau fișier cu permisiuni implicite de exemplu citească și să scrie (și să execute) permisiunea de la proprietar dar refuza permisiunea de scriere pentru toată lumea, poate fi mai rapid de a utiliza chmod 755/644 filename. Cu toate acestea, dacă schimbați permisiunile la ceva în afara normei, poate fi mai simplu și mai rapid să utilizați metoda textului, spre deosebire de încercarea de ao converti în numere, ceea ce poate duce la o greșeală., S-ar putea argumenta că nu există nicio diferență semnificativă reală în viteza oricărei metode pentru un utilizator care trebuie să utilizeze chmod doar ocazional.

de asemenea, puteți utiliza metodă numerică pentru a seta setuid, setgid și sticky biți folosind patru cifre.

setuid=4setgid=2sticky=1

De exemplu, chmod 2777 filename va stabili citi/scrie/executabil biți pentru toată lumea și, de asemenea, permite setgid bit.

Bulk chmod

în general, directoarele și fișierele nu ar trebui să aibă aceleași permisiuni., Dacă este necesar să modificați în bloc un arbore de directoare, utilizați find pentru a modifica selectiv unul sau altul.

La chmod numai directoare la 755:

$ find directory -type d -exec chmod 755 {} +

La chmod numai fișiere pentru a 644:

$ find directory -type f -exec chmod 644 {} +

Schimbarea de proprietate

chown schimbă proprietarul unui fișier sau director, care este mai rapid și mai ușor decât modificarea permisiunilor în unele cazuri.

luați în considerare următorul exemplu, făcând o nouă partiție cu GParted pentru datele de rezervă. Gparted face toate acestea ca root, astfel încât totul aparține root în mod implicit., Acest lucru este bine și bun, dar când vine vorba de scrierea datelor pe partiția montată, permisiunea este refuzată pentru utilizatorii obișnuiți.

brw-rw---- 1 root disk 8, 9 Jul 6 16:02 sda9drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup

după Cum puteți vedea dispozitivul în /dev este deținută de rădăcină, ca este locația de montare (/media/Backup)., Pentru a schimba proprietarul de locația de montare se poate face următoarele:

Înainte: drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup

# chown archie /media/Backup

După: drwxr-xr-x 5 archie root 4096 Jul 6 16:01 Backup

Acum partiția pot fi date în scris de către noul proprietar, archie, fără a modifica permisiunile (ca proprietar triada avut deja rwx permisiuni).

notă:

  • chown șterge întotdeauna setuid și setgid biți.
  • utilizatorii non-root nu pot folosi chown pentru a” da ” fișierele pe care le dețin unui alt utilizator.,

listele de control al accesului

listele de control al accesului oferă un mecanism suplimentar de permisiune mai flexibil pentru sistemele de fișiere, permițând setarea permisiunilor pentru orice utilizator sau grup pentru orice fișier.

Umask

umask utilitate este folosit pentru a controla de fișiere-crearea modul mască, care stabilește valoarea inițială a fișierului de permisiune pentru fișierele nou create.,

atribute de fișiere

În afară de biții de mod de fișier care controlează permisiunile de citire, scriere și executare ale utilizatorilor și grupurilor, mai multe sisteme de fișiere acceptă atribute de fișiere care permit personalizarea suplimentară a operațiilor de fișiere permise. Această secțiune descrie unele dintre aceste atribute și modul de lucru cu ele.

avertisment: în mod implicit, atributele fișierelor nu sunt păstrate de cp, rsync și alte programe similare.,

chattr și lsattr

Pentru ext2 și ext3 sisteme de fișiere, în e2fsprogs pachetul conține programe lsattr și chattr listă și modificați un fișier atribute, respectiv.,/li>

  • u: undeletable
  • A: nu atime actualizări
  • C: nu copia pe scrie
  • D: sincron director actualizări
  • S: sincron actualizări
  • T: top de director ierarhia
  • De exemplu, dacă doriți să setați imuabil pic pe un fișier, utilizați următoarea comandă:

    # chattr +i /path/to/file

    Pentru a elimina un atribut pe un fișier schimba doar + și -.,

    atribute Extinse

    Din xattr(7): „atributele Extinse sunt nume:perechi de valori asociate permanent cu fișiere și directoare”. Există patru clase de atribute extinse: Securitate, Sistem, încredere și utilizator.

    atenție: în mod implicit, atributele extinse nu sunt păstrate de cp, rsync și alte programe similare, consultați #păstrarea atributelor extinse.atributele extinse sunt de asemenea folosite pentru a seta capabilități.atributele extinse ale utilizatorului atributele extinse ale utilizatorului pot fi utilizate pentru a stoca informații arbitrare despre un fișier., To create one:

    $ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" foo.txt

    Use getfattr to display extended attributes:

    $ getfattr -d foo.txt
    # file: foo.txtuser.,3de557528">
    --preserve=mode,ownership,timestamps,xattr mv preserves by default1 tar --xattrs for creation and extraction bsdtar -p for extraction rsync --xattrs
    1. mv silently discards extended attributes when the target file system does not support them.,

    pentru a păstra atributele extinse cu editorii de text, trebuie să le configurați pentru a trunchia fișierele la salvare în loc să utilizați redenumire(2).

    Sfaturi și trucuri

    Păstra rădăcină

    Utilizare --preserve-root pavilion pentru a preveni chmod de la actorie recursiv pe /. Acest lucru poate, de exemplu, să împiedice eliminarea bitului executabil systemwide și, astfel, ruperea sistemului. Pentru a utiliza acest steag de fiecare dată, setați-l într-un alias. A se vedea, de asemenea .,

    Vezi și

    • wikipedia: Chattr
    • confuzie permisiune fișier Linux
    • confuzie permisiune fișier Linux partea 2
    • wikipedia:atribute fișier extins#Linux
    • atribute extinse: binele, nu atât de bine, rău.
    • backup și restaurare permisiuni de fișiere în Linux
    • De ce este” chmod-R 777 / ” distructiv?

    Lasă un răspuns

    Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *