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.,
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țiugo
.,
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
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).
-
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.
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
: undeletableA
: nu atime actualizăriC
: nu copia pe scrieD
: sincron director actualizăriS
: sincron actualizăriT
: top de director ierarhiaDe 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.
$ 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
tar
--xattrs
for creation and extractionbsdtar
-p
for extraction--xattrs
- 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?