filsystemer bruger tilladelser og attributter til at regulere niveauet for interaktion, som systemprocesser kan have med filer og mapper.
Visning tilladelser
Brug kommandoen ls s -l
indstilling for at få vist tilladelser (eller fil-tilstand) er indstillet for indholdet af en mappe, for eksempel:
$ ls -l /sti/til/mappe
Den første kolonne er, hvad vi skal 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., |
tilladelserne, som ejeren har over filen, forklaret nedenfor. | tilladelserne, som gruppen har over filen, forklaret nedenfor. | tilladelserne, som alle de andre brugere har over filen, forklaret nedenfor. | et enkelt tegn, der angiver, om en alternativ adgangsmetode gælder for filen. Når denne karakter er et mellemrum, er der ingen alternativ adgangsmetode. A . tegn angiver en fil med en sikkerhedskontekst, men ingen anden alternativ adgangsmetode., En fil med enhver anden kombination af alternative adgangsmetoder er markeret med et+ tegn, for eksempel i tilfælde af adgangskontrollister., |
Hver af de tre tilladelse treklange (rwx
i ovenstående eksempel) kan bestå af følgende tegn:
Karakter | Effekt på filer | Effekt på mapper | |
---|---|---|---|
Læs tilladelse (første tegn) | - |
filen kan ikke læses., | katalogets indhold kan ikke vises. |
r |
filen kan læses. | katalogets indhold kan vises. | |
Skriv tilladelse (andet tegn) | - |
filen kan ikke ændres. | katalogets indhold kan ikke ændres. |
w |
filen kan ændres., | mappens indhold kan ændres (Opret nye filer eller mapper, Omdøb eller Slet eksisterende filer eller mapper); kræver, at e .ecute-tilladelsen også indstilles, ellers har denne tilladelse ingen virkning. | |
Execute tilladelse (tredje tegn) | - |
filen kan ikke udføres. | mappen kan ikke tilgås med cd. |
x |
filen kan udføres., | Den mappe, som kan tilgås med cd; dette er den eneste tilladelse smule, at det i praksis kan anses for at være “arvet” fra de overordnede mapper, i virkeligheden, hvis nogen mapper i stien ikke har x – bit, den endelige filen eller mappen ikke kan åbnes enten, uanset dens rettigheder; se path_resolution(7) for at få flere oplysninger., |
|
s |
setuid-bit, når de findes i brugerens treklang; den setgid smule, når der findes i gruppen treklang; det findes ikke i andre treklang; det indebærer også, at x er indstillet. |
||
S |
Samme som s , men x er ikke sat; sjælden på almindelige filer, og ubrugelig 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.,Tip: Du kan se tilladelser langs en sti med namei -l path
.
Eksempler
Lad os se nogle eksempler for at præcisere:
drwx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie har fuld adgang til Dokumenter-mappen. Han kan liste, oprette filer og omdøbe, slette enhver fil i dokumenter, uanset filtilladelser. Hans evne til at få adgang til en fil afhænger af filens tilladelse.
dr-x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie har fuld adgang, medmindre han ikke kan oprette, omdøbe, slette en fil., Han kan liste filerne og (hvis filens tilladelse giver) kan få adgang til en eksisterende fil i dokumenter.
d-wx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie kan ikke gøre ‘ls’ I dokumenter, men hvis han kender navnet på en eksisterende fil, kan han liste, omdøbe, slette eller (hvis filens tilladelse giver ham) få adgang til den. Han er også i stand til at oprette nye filer.
d--x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie er kun i stand til (hvis filens tilladelse giver ham) adgang til disse filer i dokumenter, som han kender til. Han kan ikke liste allerede eksisterende filer eller oprette, omdøbe, slette nogen af dem.,
Du skal huske på, at vi uddyber mappetilladelser, og det har intet at gøre med de enkelte filtilladelser. Når du opretter en ny fil, er det den mappe, der ændres. Derfor har du brug for at skrive tilladelse til biblioteket.
Lad os se på et andet eksempel, denne gang af en fil, ikke en mappe:
-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
Her kan vi se, at det første bogstav er ikke d
men -
. Så vi ved, at det er en fil, ikke en mappe., Dernæst er ejerens tilladelser rw-
så ejeren har evnen til at læse og skrive, men ikke udføre. Dette kan synes mærkeligt, at ejeren ikke har alle tre tilladelser, men x
tilladelse er ikke nødvendig, da det er en tekst/data-fil, der skal læses af en tekst editor som Gedit, EMACS, eller software, som R, og ikke en eksekverbar i sin egen ret (hvis det indeholdt noget python programmering af kode, så er det meget vel kunne være)., Gruppens tilladelser er indstillet til r--
, så gruppen har evnen til at læse filen, men ikke skrive/redigere den på nogen måde — det er i det væsentlige som at indstille noget til skrivebeskyttet. Vi kan se, at de samme tilladelser også gælder for alle andre.
ændring af tilladelser
chmod er en kommando i Linu.og andre Uni.-lignende operativsystemer, der gør det muligt at ændre tilladelserne (eller adgangstilstand) for en fil eller mappe.
Tekstmetode
for at ændre tilladelser — eller adgangstilstand — for en fil skal du bruge kommandoen chmod i en terminal., Nedenfor er kommandoen ‘ s generelle struktur:
chmod who=permissions filename
Hvor who
er enhver fra en række breve, der hver symboliserer, som der er givet tilladelse. De er som følger:
-
u
: brugeren, der ejer filen. -
g
: den brugergruppe, som filen tilhører. -
o
: de andre brugere, dvs.alle andre. -
a
: alle ovenstående; brug dette i stedet for at skriveugo
.,
De tilladelser, er de samme som beskrevet i #Visning af tilladelser (r
w
og x
).
nu har et kig på nogle eksempler ved hjælp af denne kommando., Antag, at du blev meget beskyttende over de Dokumenter, bibliotek og ønskede at fratage alle andre end dig selv, tilladelser til at læse, skrive og udføre (eller i dette tilfælde søge/se) i det:
Før: drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documents
$ chmod g= Documents$ chmod o= Documents
Efter: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
Her, fordi du ønsker at nægte tilladelser, du ikke sætte nogen bogstaver efter =
hvor tilladelserne vil blive optaget. Nu kan du se, at kun ejeren tilladelserne er rwx
og alle andre tilladelser -
.,
Dette kan ændres med:
Før: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
$ chmod g=rx Documents$ chmod o=rx Documents
Efter: drwxr-xr-x 6 archie users 4096 Jul 6 17:32 Documents
I det næste eksempel, du ønsker at tildele til at læse og udføre tilladelser til gruppen, og andre brugere, så du sætter bogstaverne for de tilladelser (r
og x
) efter =
, med og uden mellemrum.
Du kan forenkle dette for at sætte mere end en who
brev i samme kommando, e.,g:
$ chmod go=rx Documents
who
bogstaver eller tilladelse bogstaver i en chmod
kommando: du kunne have chmod go=rx file
eller chmod og=xr file
. Det er det samme.,ider et andet eksempel, antag, at du ønsker at ændre en foobar
fil, så du har læse-og skriverettigheder, og andre brugere i gruppen users
, der kan være kolleger, der arbejder på foobar
, kan også læse fra og skrive til det, men andre brugere kan kun læse det:
Før: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=rw foobar
Efter: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Dette er præcis som i det første eksempel, men med en fil, ikke en mappe, og du giver skriveadgang (bare for at give et eksempel på tildeling af hvert tilladelse).,
Sms-metode genveje
chmod kommandoen kan tilføje og trække tilladelser fra en eksisterende ved hjælp af +
eller -
i stedet for =
. Dette er forskelligt fra de ovenstående kommandoer, som især re-skrive-tilladelser (fx at ændre en tilladelse fra r--
til rw-
, du stadig nødt til at inkludere r
samt w
efter =
i kommandoen chmod aktiveringen., Hvis du gik glip af r
, ville det fjerne r
tilladelsen, da de skrives om med =
. Brug af +
og -
undgår dette ved at tilføje eller fjerne det aktuelle sæt tilladelser).,>Tidligere: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod a-w foobar
Efter: -r--r--r-- 1 archie users 5120 Jun 27 08:28 foobar
En anden genvej er den specielle X
tilstand: dette er ikke en egentlig fil-tilstand, men det er ofte brugt i forbindelse med -R
mulighed for at indstille den eksekverbare bit kun for biblioteker, og lade det være uændret for almindelige filer, for eksempel:
$ chmod -R a+rX ./data/
Kopiering af tilladelser
Det er muligt at fortælle chmod til at kopiere tilladelser fra én klasse, siger ejeren, og give dem samme rettigheder til gruppen eller endda alle., For at gøre dette, i stedet for at sætte r
w
, eller x
efter =
sagt på en anden, der letter. e.g:
Før: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=u foobar
Efter: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Denne kommando i det væsentlige svarer til at “ændre tilladelserne for gruppen (g=
), at være det samme som at eje bruger (=u
). Bemærk, at du ikke kan kopiere et sæt tilladelser samt give nye f. eks.,:
$ chmod g=wu foobar
i så fald kaster chmod en fejl.
numerisk metode
chmod kan også indstille tilladelser ved hjælp af tal.brug af tal er en anden metode, der giver dig mulighed for at redigere tilladelserne for alle tre ejere, grupper og andre på samme tid samt setuid, setgid og sticky bits. Denne grundlæggende struktur i koden, er dette:
$ chmod xxx filename
Hvor xxx
er et 3-cifret tal, hvor hvert ciffer kan være alt fra 0 til 7., Det første ciffer gælder tilladelser for ejer, det andet ciffer gælder tilladelser for gruppe, og det tredje ciffer gælder tilladelser for alle andre.
I dette nummer notation, værdier r
w
og x
har deres eget nummer-værdi:
r=4w=2x=1
for At komme op med et 3-cifret nummer, du nødt til at overveje, hvilke tilladelser du ønsker, ejer, gruppe, og alle andre til at have, og så er alt deres værdier op., du ønsker gruppe og alle andre har bare læst og tilladelser til at køre, vil du komme op med de numeriske værdier, der kan lide det:
- Indehaver:
rwx
=4+2+1=7 - Gruppe:
r-x
=4+0+1=5 - Andet:
r-x
=4+0+1=5
$ chmod 755 filename
Dette svarer til at bruge følgende:
$ chmod u=rwx filename$ chmod go=rx filename
for At få vist de eksisterende tilladelser på en fil eller mappe i numerisk form, brug den statistiske listeeditor(1) – kommando:
$ stat -c %a filename
Hvor % – en indstilling angiver output i numerisk form.,
de Fleste mapper og mapper er indstillet til 755
for at tillade læsning, skrivning og udførelse til ejeren, men de nægter at skrive til alle andre, og filer er normalt 644
for at tillade læsning og skrivning for ejeren, men bare at læse for alle andre; se sidste anmærkning om manglende x
tilladelser med ikke eksekverbare filer: det er det samme her.,
for At se det i aktion med eksempler overveje det foregående eksempel, der har været brugt, men med denne numeriske metode, der anvendes i stedet:
Før: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod 664 foobar
Efter: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Hvis dette var en eksekverbar antallet ville være 774
hvis du ønsker at give eksekverbare tilladelse til ejer og gruppe. Alternativt, hvis du ønskede, at alle kun skulle have læst tilladelse, ville nummeret være 444
., Behandling af r
4, w
2 og x
1 er nok den nemmeste måde at finde ud af numeriske værdier for hjælp chmod xxx filename
, men der er også en binær metode, hvor hvert tilladelse har et binært tal, og så er det til gengæld konverteret til et tal. Det er lidt mere indviklet, men her inkluderet for fuldstændighed.,
Overvej dette tilladelsessæt:
-rwxr-xr--
Hvis du lægger en 1 under hvert tilladelse, og et 0 for hver en ikke givet, ville resultatet være noget i retning af dette:
-rwxrwxr-x 111111101
Du kan derefter konvertere disse binære tal:
000=0 100=4001=1 101=5010=2 110=6011=3 111=7
værdien af ovenstående vil derfor være 775.
Overvej vi ønskede at fjerne skrivbar tilladelse fra gruppe:
-rwxr-xr-x 111101101
Den værdi, vil derfor være 755, og du ville bruge chmod 755 filename
for at fjerne den skrivbare tilladelse., Du vil bemærke, at du får det samme trecifrede nummer, uanset hvilken metode du bruger. Uanset om du bruger tekst eller tal vil afhænge af personlige præferencer og skrivehastighed. Læse og skrive (og udføre) tilladelse til ejeren, men nægte at skrive tilladelse til alle andre, kan det være hurtigere at bruge chmod 755/644 filename
. Men hvis du ændrer tilladelserne til noget ud af normen, kan det være enklere og hurtigere at bruge tekstmetoden i modsætning til at forsøge at konvertere den til tal, hvilket kan føre til en fejl., Det kan hævdes, at der ikke er nogen reel signifikant forskel i hastigheden af begge metoder for en bruger, der kun skal bruge chmod lejlighedsvis.
Du kan også bruge den numeriske metode til at sætte setuid
setgid
og sticky
bits ved hjælp af fire cifre.
setuid=4setgid=2sticky=1
For eksempel: chmod 2777 filename
vil læse/skrive/executable bits for alle, og også gøre setgid
smule.
Bulk chmod
generelt mapper og filer bør ikke have de samme tilladelser., Hvis det er nødvendigt at ændre et mappetræ i bulk, skal du bruge find til selektivt at ændre det ene eller det andet.
for At chmod kun mapper til 755:
$ find directory -type d -exec chmod 755 {} +
for At chmod kun filer til 644:
$ find directory -type f -exec chmod 644 {} +
Ændring af ejerskab
chown ændringer ejeren af en fil eller mappe, som er hurtigere og lettere end at ændre tilladelser i nogle tilfælde.
overvej følgende eksempel, lav en ny partition med GParted til backup data. Gparted gør alt dette som root, så alt tilhører root som standard., Dette er alt sammen godt og godt, men når det kommer til at skrive data til den monterede partition, nægtes tilladelse for almindelige brugere.
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 enheden i /dev
ejes af root, som er mount placering (/media/Backup
)., For at ændre ejeren af mount placering, kan man gøre følgende:
Før: drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
# chown archie /media/Backup
Efter: drwxr-xr-x 5 archie root 4096 Jul 6 16:01 Backup
Nu er den partition, kan have data, der skrives til den af den nye ejer, archie, uden at ændre tilladelser (som ejer treklang allerede havde rwx
tilladelser).
-
chown
rydder altid setuid-og setgid-bits. - ikke-root-brugere kan ikke bruge
chown
til at “give væk” filer, de ejer til en anden bruger.,
adgangskontrollister
adgangskontrollister giver en yderligere, mere fleksibel tilladelsesmekanisme for filsystemer ved at tillade at indstille tilladelser for enhver bruger eller gruppe til enhver fil.
Umask
umask-værktøjet bruges til at styre filoprettelsesmasken, som bestemmer den oprindelige værdi af filtilladelsesbits for nyoprettede filer.,
filattributter
bortset fra filtilstandsbitene, der styrer bruger og gruppe, læser, skriver og udfører tilladelser, understøtter flere filsystemer filattributter, der muliggør yderligere tilpasning af tilladte filoperationer. Dette afsnit beskriver nogle af disse attributter, og hvordan man arbejder med dem.
chattr og lsattr
For ext2 og ext3-filsystemer, den e2fsprogs pakke indeholder de programmer, lsattr og chattr listen og ændre en fils egenskaber, hhv.,/li>
u
: undeletableA
: ingen tid opdateringerC
: ingen copy on writeD
: synkrone bibliotek opdateringerS
: synkron opdateringerT
: øverste mappe hierarkiFor eksempel, hvis du ønsker at indstille den uforanderlige smule på nogle fil, skal du bruge følgende kommando:
# chattr +i /path/to/file
for At fjerne en attribut, om en fil skal du blot ændre +
til -
.,
udvidede attributter
fra 7attr(7): “udvidede attributter er navn:værdipar forbundet permanent med filer og mapper”. Der er fire udvidede attribut klasser: Sikkerhed, system, betroede og bruger.
bruger udvidede attributter
bruger udvidede attributter kan bruges til at gemme vilkårlige oplysninger 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 at bevare udvidede attributter med teksteditorer skal du konfigurere dem til at afkorte filer ved at gemme i stedet for at bruge Omdøb(2).
Tips og tricks
Bevare root
Brug --preserve-root
flag for at forhindre chmod
fra at handle rekursivt på /
. Dette kan for eksempel forhindre en i at fjerne den eksekverbare bit systemwideide og dermed bryde systemet. Hvis du vil bruge dette flag hver gang, skal du indstille det i et alias. Se også .,
Se også
- wikipedia:Chattr
- Linux Fil Tilladelse Forvirring
- Linux Fil Tilladelse Forvirring del 2
- wikipedia:Udvidet filattributter#Linux
- Udvidede attributter: det gode, det ikke er så gode, de dårlige.
- Backup og gendannelse af filtilladelser i Linu?
- Hvorfor er “chmod-r 777 /” destruktiv?