filsystemer bruker tillatelser og muligheter for å regulere nivået av interaksjon som system prosesser kan ha med filer og kataloger.
Visning tillatelser
Bruke ls-kommandoen er -l
alternativet hvis du vil vise tillatelsene (eller fil-modus) er stilt til innholdet i en katalog, for eksempel:
$ ls -l /sti/til/katalog
Den første kolonnen er det vi må fokusere på., 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., |
tillatelsene som eier har over filen, forklart nedenfor. | tillatelsene som konsernet har over filen, forklart nedenfor. | tillatelsene at alle andre brukere har over filen, forklart nedenfor. | Et enkelt tegn som angir om en alternativ tilgang metoden gjelder kun for filen. Når denne karakteren er en plass, det er ingen alternative tilgang metoden. En . tegn angir en fil med et sikkerhets-sammenheng, men ingen andre alternative tilgang metoden., En fil med en annen kombinasjon av alternative tilgang metoder er merket med en + karakter, for eksempel i tilfelle av tilgangskontroll., |
Hver av de tre tillatelse treklanger (rwx
i eksemplet ovenfor) kan bestå av følgende tegn:
Tegn | Effekt på filer | Effekt på kataloger | |
---|---|---|---|
Les tillatelse (første tegnet) | - |
– filen ikke kunne leses., | – katalogen innholdet kan ikke vises. |
r |
– filen kan leses. | – katalogen innholdet kan bli vist. | |
Skriv tillatelse (andre tegn) | - |
– filen kan ikke endres. | – katalogen innholdet kan ikke endres. |
w |
– filen kan bli endret., | – katalogen innholdet kan bli endret (opprette nye filer eller mapper, endre navn på eller slette eksisterende filer eller mapper); krever utføre tillatelse til å være stille, ellers er dette tillatelse ikke har noen effekt. | |
– Utfør tillatelse (tredje tegn) | - |
– filen kan ikke utføres. | – katalogen kan ikke nås med cd. |
x |
– filen kan utføres., | – katalogen kan nås med cd; dette er bare tillatelse bit som i praksis kan bli vurdert til å være «arvet» fra stamfar kataloger, faktisk hvis en hvilken som helst mappe på banen ikke har x bit set, den endelige filen eller mappen kan ikke nås enten er, uavhengig av sine tillatelser, se path_resolution(7) for mer informasjon., |
|
s |
Den setuid bit når den blir funnet i brukerens triade; den setgid bit når den er funnet i gruppen triade; det er ikke funnet i andre triade; det innebærer også at x er satt. |
||
S |
Samme som s , men x er ikke stille; sjeldne på vanlige filer, og ubrukelig på mapper., |
||
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
.Eksempler
La oss se på noen eksempler for å klargjøre:
drwx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie har full tilgang til Dokumenter-mappen. Han kan vise, opprette filer og endre navn, slette filer i Dokumenter, uavhengig av filrettigheter. Hans evne til å få tilgang til en fil, avhenger av fil ‘ s tillatelse.
dr-x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie har full tilgang, med mindre han kan ikke opprette, endre navn, slette en fil., Han kan vise filene og (hvis filen har tillatelse utdanner) kan få tilgang til en eksisterende fil i Dokumenter.
d-wx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie kan ikke gjøre ‘ls’ i Dokumenter, men hvis han vet navnet på en eksisterende fil, så han kan vise, gi nytt navn til, slette eller (hvis filen har tillatelse utdanner ham) få tilgang til den. Også han er i stand til å opprette nye filer.
d--x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie er bare i stand til (hvis filen har tillatelse utdanner ham) få tilgang til disse filene i Dokumenter som han kjenner. Han kan ikke liste allerede eksisterende filer eller opprette, endre navn, slette noen av dem.,
Du bør huske på at vi utdype katalog tillatelser, og det har ingenting å gjøre med individuelle tillatelser fil. Når du oppretter en ny fil det er katalogen som endres. Det er derfor du trenger skrivetilgang til katalogen.
La oss se på et annet eksempel, denne gang av en fil, ikke en katalog:
-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
Her kan vi se det første brevet er ikke d
, men -
. Så vi vet at det er en fil, ikke en katalog., Neste eier tillatelsene er rw-
så eieren har evnen til å lese og skrive, men ikke utføre. Dette kan virke merkelig at eieren ikke har alle tre tillatelser, men x
tillatelse er ikke nødvendig, så det er en tekst/data-filen, for å bli lest av et tekstredigeringsprogram, for eksempel Gedit, EMACS, eller programvare som R, og ikke en kjørbar i sin egen rett (hvis det finnes noe sånt som python-programmering-koden så er det meget vel kan være)., Konsernets tillatelser er satt til r--
, slik at gruppen har evnen til å lese filen, men ikke skrive/redigere den på noen som helst måte — det er egentlig som å sette noe å lese-bare. Vi kan se at den samme-tillatelser gjelde for alle andre også.
Endre tillatelser
chmod er en kommando i Linux og andre Unix-lignende operativsystemer som gjør det mulig å endre tillatelser (eller tilgang modus) av en fil eller en katalog.
Tekst metode
Hvis du vil endre tillatelser — eller access-modus — for en fil, kan du bruke kommandoen chmod i en terminal., Nedenfor er kommandoen generelle struktur:
chmod who=permissions filename
Der who
er noen fra et utvalg av brev, hver dvs. som blir gitt tillatelse. De er som følger:
-
u
: brukeren som eier filen. -
g
: brukeren gruppe som filen tilhører. -
o
: andre brukere, dvs. alle andre. -
a
: alle de ovennevnte; bruk denne i stedet for å skriveugo
.,
tillatelsene er den samme som nevnt i #Vise tillatelser (r
, w
og x
).
Nå har du en titt på noen eksempler ved hjelp av denne kommandoen., Tenk deg at du ble veldig beskyttende av Dokumenter-mappe og ønsket å nekte alle, men deg selv tillatelse til å lese, skrive og utføre (eller i dette tilfellet søk/se) i det:
Før: drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documents
$ chmod g= Documents$ chmod o= Documents
Etter: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
Her fordi du ønsker å nekte tillatelser, kan du ikke sette noen bokstaver etter =
der tillatelsene ville bli inngått. Nå kan du se at bare eieren tillatelsene er rwx
og alle andre tillatelser er -
.,
Dette kan gjenopprettes med:
Før: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
$ chmod g=rx Documents$ chmod o=rx Documents
Etter: drwxr-xr-x 6 archie users 4096 Jul 6 17:32 Documents
I neste eksempel, du vil gi lese-og tillatelse til å kjøre gruppen, og andre brukere, så du setter bokstavene for tillatelser (r
og x
etter =
uten mellomrom.
Du kan forenkle dette for å sette mer enn en who
bokstav i den samme kommandoen, e.,g:
$ chmod go=rx Documents
who
bokstaver eller tillatelse bokstaver i en chmod
kommando: du kunne ha chmod go=rx file
eller chmod og=xr file
. Det er alt det samme.,ider et annet eksempel, la oss anta at du ønsker å endre en foobar
fil, slik at du har lese-og skriverettigheter, og andre brukere i gruppen users
som kan være kolleger som arbeider på foobar
, kan også lese og skrive til det, men at andre brukere kan bare lese det:
Før: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=rw foobar
Etter: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Dette er akkurat som i det første eksemplet, men med en fil, ikke en katalog, og du gi skrivetilgang (akkurat slik som å gi et eksempel på å gi hver tillatelse).,
Tekst metode snarveier
chmod-kommandoen kan legge til og trekke fra tillatelser fra et eksisterende sett med +
eller -
i stedet for =
. Dette er forskjellig fra de ovennevnte kommandoer, som i hovedsak re-skrive tillatelser (for eksempel for å endre en tillatelse fra r--
til rw-
, du fortsatt trenger å inkludere r
samt w
etter =
i kommandoen chmod gang., Hvis du gikk glipp r
, ville det ta bort r
tillatelse etter hvert som de blir re-skrevet med =
. Ved hjelp av +
og -
unngår dette ved å legge til eller ta bort fra dagens sett med tillatelser).,>Før: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod a-w foobar
Etter: -r--r--r-- 1 archie users 5120 Jun 27 08:28 foobar
En annen snarvei er de spesielle X
modus: dette er ikke en vanlig fil-modus, men det er ofte brukt i forbindelse med -R
alternativet for å angi den kjørbare bit bare for kataloger, og la det være uendret for vanlige filer, for eksempel:
$ chmod -R a+rX ./data/
Kopiere tillatelser
Det er mulig å fortelle chmod til å kopiere tillatelser fra en klasse, sier eier, og gi de samme tillatelser til en gruppe eller til alle., For å gjøre dette, i stedet for å sette r
, w
, eller x
etter =
, sagt på en annen som brev. e.g:
Før: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=u foobar
Etter: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Denne kommandoen i hovedsak kan oversettes til «endre tillatelsene for gruppe (g=
), til å være det samme som å eie bruker (=u
). Merk at du ikke kan kopiere et sett med tillatelser, samt gi nye f.eks.,:
$ chmod g=wu foobar
I det tilfelle chmod kaste en feil.
Numerisk metode
chmod kan også angi tillatelser ved hjelp av tall.
ved Hjelp av tall, er en annen metode som lar deg redigere tillatelsene for alle tre eier, gruppe og andre på samme tid, så vel som setuid, setgid, og klebrig biter. Denne grunnleggende strukturen i koden er dette:
$ chmod xxx filename
Der xxx
er en 3-sifret tall der hvert tall kan være alt fra 0 til 7., Det første sifferet gjelder tillatelser for eieren, det andre sifferet gjelder tillatelser for gruppen, og den tredje siffer gjelder tillatelser for alle andre.
I dette nummeret notasjon, verdier r
, w
, og x
har sitt eget nummer verdi:
r=4w=2x=1
for Å komme opp med en 3-sifrede nummeret som du trenger for å vurdere hvilke tillatelser du ønsker eier, gruppe, og alle andre skal ha, og deretter totale verdier opp., du vil gruppen og alle andre til å ha bare lese og kjøretillatelser, du ville komme opp med tallverdier slik:
- Eier:
rwx
=4+2+1=7 - Gruppe:
r-x
=4+0+1=5 - Andre:
r-x
=4+0+1=5
$ chmod 755 filename
Dette er tilsvarende med følgende:
$ chmod u=rwx filename$ chmod go=rx filename
for Å vise eksisterende tillatelser på en fil eller mappe i numerisk form, bruk stat(1) kommando:
$ stat -c %a filename
Hvor %a alternativet angir utdataformatet i numerisk form.,
de Fleste mapper og kataloger er satt til 755
for å tillate lesing, skriving og kjøring til eieren, men nekte å skrive til alle andre, og filene er normalt 644
for å tillate lesing og skriving for eieren, men bare å lese for alle andre; se siste note mangel på x
tillatelser med ikke-kjørbare filer: det er det samme her.,
for Å se dette i aksjon med eksempler vurdere forrige eksempel, som har vært brukt, men med denne numeriske metoden som brukes i stedet:
Før: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod 664 foobar
Etter: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Hvis dette var en kjørbar tallet ville være 774
hvis du ønsket å gi kjørbare tillatelse til eier og gruppe. Alternativt, hvis du ønsket alle å bare ha lest tillatelse tallet ville være 444
., Behandling av r
4, w
2, og x
1 er trolig den enkleste måten å regne ut den numeriske verdier for å bruke chmod xxx filename
, men det er også en binær metode, der hver tillatelse har et binært tall, og deretter som i sin tur er konvertert til et tall. Det er litt mer tvetydig, men her er inkludert for fullstendighet.,
bør du Vurdere denne tillatelsen sett:
-rwxr-xr--
Hvis du putter en 1 under hver tillatelse er gitt, og en 0 for hver en som ikke er gitt, ville resultatet bli noe som dette:
-rwxrwxr-x 111111101
Du kan deretter konvertere disse binære tall:
000=0 100=4001=1 101=5010=2 110=6011=3 111=7
verdien av det ovenfor, vil derfor være 775.
Anser vi ønsket å fjerne den skrivbare tillatelse fra gruppen:
-rwxr-xr-x 111101101
Den verdien som ville derfor være 755 og du ville bruke chmod 755 filename
for å fjerne den skrivbare tillatelse., Du vil merke at du får den samme tre-sifret tall uansett hvilken metode du bruker. Enten du bruker teksten eller tallene vil avhenge av personlig smak og skrive hastighet. Når du ønsker å gjenopprette en mappe eller en fil til standardtillatelsene for eksempel lese og skrive (og kjøre) tillatelse til eieren, men nekte tillatelse til å skrive til alle andre, kan det være raskere å bruke chmod 755/644 filename
. Men hvis du endrer tillatelsene til noe ut av normen, kan det være enklere og raskere å bruke teksten metode, i motsetning til å prøve å konvertere det til tall, som kan føre til en feil., Det kan hevdes at det ikke er noen reell betydelig forskjell i hastigheten av metode for en bruker som bare har behov for å bruke chmod på anledning.
Du kan også bruke den numeriske metoden for å angi setuid
, setgid
, og sticky
biter med fire sifre.
setuid=4setgid=2sticky=1
For eksempel, chmod 2777 filename
vil sette lese – /skrive – /kjørbare biter for alle, og også aktivere setgid
bit.
Bulk chmod
Vanligvis kataloger og filer som ikke skal ha de samme rettigheter., Hvis det er nødvendig for å bulk endre en katalog treet, bruker finn for å velge endre det ene eller det andre.
for Å chmod bare kataloger for å 755:
$ find directory -type d -exec chmod 755 {} +
for Å chmod bare filer til 644:
$ find directory -type f -exec chmod 644 {} +
Endre eierskap
chown endringer eier av en fil eller katalog, som er raskere og enklere enn å endre tillatelser i noen tilfeller.
Tenk deg følgende eksempel, å lage en ny partisjon med GParted for sikkerhetskopiering av data. Gparted gjør alt dette som root, slik at alt tilhører rot som standard., Dette er vel og bra, men når det kommer til skriving av data til det montert partisjon, kan tillatelse nektes for vanlige brukere.
brw-rw---- 1 root disk 8, 9 Jul 6 16:02 sda9drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
Som du kan se enheten i /dev
er eid av root, som er mount sted (/media/Backup
)., For å endre eier av mount sted kan man gjøre følgende:
Før: drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
# chown archie /media/Backup
Etter: drwxr-xr-x 5 archie root 4096 Jul 6 16:01 Backup
Nå partisjonen kan ha data som skrives til det ved den nye eieren, archie, uten å endre tillatelser (som eier triade allerede hadde rwx
tillatelser).
-
chown
alltid tømmer setuid og setgid biter. - Ikke-root brukere ikke kan bruke
chown
for å «gi bort» – filer som de eier til en annen bruker.,
Access Control Lists
tilgangskontroll gir en ekstra, mer fleksibel tillatelse mekanisme for filsystemer ved å tillate slik angir du tillatelser for en hvilken som helst bruker eller gruppe til en hvilken som helst fil.
Umask
umask-verktøyet brukes til å kontrollere fil-oppretting-modus maske, som bestemmer den første verdien av filen tillatelse biter for nyopprettede filer.,
– Fil attributter
Bortsett fra fil-modus biter som styrer brukeren og gruppen lese, skrive og eksekvere tillatelser, flere filsystem-støtte filattributtene som gjør det mulig for ytterligere tilpasning av tillatte fil operasjoner. Denne delen beskriver noen av disse egenskapene og hvordan å arbeide med dem.
chattr og lsattr
For ext2 og ext3 filsystemer, den e2fsprogs pakken inneholder programmer lsattr og chattr at listen, og endre en fil attributter, henholdsvis.,/li>
u
: undeletableA
: ingen atid oppdateringerC
: ingen kopi på skriveD
: synkron katalog oppdateringerS
: synkron oppdateringerT
: toppen av katalogen hierarkiFor eksempel, hvis du ønsker å sette uforanderlige litt på noen filen, bruker du følgende kommando:
# chattr +i /path/to/file
for Å fjerne et attributt på en fil bare endre +
til -
.,
Utvidede attributter
Fra xattr(7): «Utvidede attributtene er navn:verdi-parene som er forbundet med permanent filer og mapper». Det er fire utvidet attributt klasser: sikkerhet, system, pålitelige og brukeren.
Utvidede attributtene er også brukt til å angi Evner.
Bruker utvidede attributter
Bruker utvidede attributter kan brukes til å lagre vilkårlig informasjon om en fil., 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
tar
--xattrs
for creation and extractionbsdtar
-p
for extraction--xattrs
- mv silently discards extended attributes when the target file system does not support them.,
for Å bevare utvidede attributter med tekst redaktører du trenger for å konfigurere dem til å avkorte filer på å spare i stedet for å bruke navn(2).
Tips og triks
Bevare rot
for --preserve-root
flagg for å hindre chmod
fra å handle med undermapper på /
. Dette kan for eksempel hindre en fra å fjerne den kjørbare bit totalt og dermed bryte systemet. For å bruke dette flagget hver gang, satt det i et alias. Se også .,
Se også:
- wikipedia:Chattr
- Linux-Fil Tillatelse Forvirring
- Linux-Fil Tillatelse Forvirring del 2
- wikipedia:Utvidede attributter#Linux
- Utvidede attributter: det gode, det ikke er så gode, de dårlige.
- Sikkerhetskopiering og gjenoppretting av fil tillatelser i Linux
- Hvorfor er «chmod -R-777 /» destruktiv?