filsystem använder behörigheter och attribut för att reglera nivån på interaktion som systemprocesser kan ha med filer och kataloger.
Visningsbehörigheter
använd kommandot ls-l
för att visa behörigheter (eller filläge) som ställts in för innehållet i en katalog, till exempel:
$ ls-l /path/to/directory
den första kolumnen är vad vi måste fokusera 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., |
de behörigheter som ägaren har över filen, förklaras nedan. | de behörigheter som gruppen har över filen, förklaras nedan. | de behörigheter som alla andra användare har över filen, förklaras nedan. | ett enda tecken som anger om en alternativ åtkomstmetod gäller för filen. När det här tecknet är ett mellanslag finns det ingen alternativ åtkomstmetod. Ett. – tecken indikerar en fil med ett säkerhetssammanhang, men ingen annan alternativ åtkomstmetod., En fil med någon annan kombination av alternativa åtkomstmetoder är markerad med ett+ – tecken, till exempel när det gäller Åtkomstkontrolllistor., |
var och en av de tre tillståndstriaderna (rwx
I exemplet ovan) kan bestå av följande tecken:
tecken | effekt på filer | effekt på kataloger | |
---|---|---|---|
läs tillstånd (första tecken) |
- |
filen kan inte läsas., | katalogens innehåll kan inte visas. |
r |
filen kan läsas. | katalogens innehåll kan visas. | |
skrivbehörighet (andra tecken) | - |
filen kan inte ändras. | katalogens innehåll kan inte ändras. |
w |
filen kan ändras., | katalogens innehåll kan ändras (skapa nya filer eller mappar; Byt namn på eller ta bort befintliga filer eller mappar); kräver att exekveringsbehörigheten också ställs in, annars har denna behörighet ingen effekt. | |
kör tillstånd (tredje tecken) | - |
filen kan inte utföras. | katalogen kan inte nås med cd. |
x |
filen kan köras., | katalogen kan nås med cd; det här är den enda behörighetsbiten som i praktiken kan anses vara ”ärftlig” från förfaderkatalogerna, i själva verket om någon mapp i sökvägen inte har x bit set, kan den slutliga filen eller mappen inte nås antingen, oavsett dess behörigheter; se path_resolution (7) för mer information., |
|
s |
setuid-biten när den hittas i användartriaden; setgid-biten när den hittas i grupptriaden; den finns inte i de andra triaden; det innebär också attx är inställd. |
||
S |
samma soms , menx är inte inställd; sällsynt på vanliga filer och värdelös på mappar., |
||
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
.exempel
Låt oss se några exempel för att klargöra:
drwx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie har full tillgång till Dokumentkatalogen. Han kan lista, skapa filer och byta namn, ta bort alla filer i dokument, oavsett filbehörigheter. Hans förmåga att komma åt en fil beror på filens tillstånd.
dr-x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie har full åtkomst förutom att han inte kan skapa, byta namn, ta bort en fil., Han kan lista filerna och (om filens tillstånd ger) kan komma åt en befintlig fil i dokument.
d-wx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie kan inte göra ’ls’ i dokument, men om han känner till namnet på en befintlig fil kan han lista, byta namn, ta bort eller (om filens tillstånd ger honom) komma åt den. Han kan också skapa nya filer.
d--x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie kan bara (om filens tillstånd ger honom) komma åt de filer i dokument som han känner till. Han kan inte lista redan befintliga filer eller skapa, byta namn, ta bort någon av dem.,
Du bör komma ihåg att vi utarbetar katalogbehörigheter och det har inget att göra med de enskilda filbehörigheterna. När du skapar en ny fil är det katalogen som ändras. Det är därför du behöver skriva tillstånd till katalogen.
låt oss titta på ett annat exempel, den här tiden för en fil, inte en katalog:
-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
Här kan vi se att den första bokstaven inte är d
men -
. Så vi vet att det är en fil, inte en katalog., Därefter är ägarens behörigheter rw-
så att ägaren har möjlighet att läsa och skriva men inte köra. Det kan tyckas märkligt att ägaren inte har alla tre behörigheter, men x
– behörigheten behövs inte eftersom det är en text/datafil, som ska läsas av en textredigerare som Gedit, EMACS eller programvara som R, och inte en körbar i sin egen rätt (om den innehöll något som python programmeringskod så kan det mycket väl vara)., Gruppens behörigheter är inställda på r--
, så gruppen har möjlighet att läsa filen men inte skriva/redigera den på något sätt — det är i huvudsak som att ställa in något att läsa. Vi kan se att samma behörigheter gäller för alla andra också.
ändra behörigheter
chmod är ett kommando i Linux och andra Unix-liknande operativsystem som gör det möjligt att ändra behörigheter (eller åtkomstläge) för en fil eller katalog.
textmetod
för att ändra behörigheter — eller åtkomstläge — för en fil, använd kommandot chmod i en terminal., Nedan följer kommandos allmänna struktur:
chmod who=permissions filename
där who
är något från en rad bokstäver, Varje betecknar vem som får tillstånd. De är som följer:
-
u
: användaren som äger filen. -
g
: användargruppen som filen tillhör. -
o
: de andra användarna, dvs. alla andra. -
a
: alla ovanstående; använd detta istället för att skrivaugo
.,
behörigheterna är desamma som diskuterats i # Visningsbehörigheter (r
, w
och x
).
titta nu på några exempel med det här kommandot., Antag att du blev mycket skyddande av Dokumentkatalogen och ville neka alla utom dig själv, behörighet att läsa, skriva och köra (eller i det här fallet söka/titta) i det:
innan: 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
här, eftersom du vill neka behörigheter, behöver du inte lägg några bokstäver efter =
där behörigheter skulle anges. Nu kan du se att endast ägarens behörigheter är rwx
och alla andra behörigheter är-
.,
det här kan återställas med:
innan: 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 nästa exempel vill du bevilja läs-och exekvera behörigheter till gruppen och andra användare, så att du lägger bokstäverna för behörigheterna (r
och x
) efter =
, utan mellanslag.
Du kan förenkla detta för att lägga mer än ett who
brev i samma kommando, e. ,g:
$ chmod go=rx Documents
who
bokstäver eller behörighetsbrev i en chmod
kommando: du kan ha chmod go=rx file
eller chmod og=xr file
. Det är detsamma.,Ider ett andra exempel, anta att du vill ändra en foobar
fil så att du har läst och skriva behörigheter, och andra användare i gruppen users
som kan vara kollegor som arbetar på foobar
, kan också läsa och skriva till den, men andra användare kan bara läsa den:
innan: -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
det här är precis som det första exemplet, men med en fil, inte en katalog, och du ger skrivbehörighet (bara för att ge ett exempel på att bevilja varje tillstånd).,
genvägar för textmetod
chmod-kommandot låter lägga till och subtrahera behörigheter från en befintlig uppsättning med+
eller-
istället för=
. Detta skiljer sig från ovanstående kommandon, som i huvudsak skriver om behörigheterna (t.ex. för att ändra ett tillstånd från r--
till rw-
, måste du fortfarande inkludera r
samt w
efter =
I kommandot chmod åkallan., Om du missader
skulle det ta bort behörighetenr
eftersom de skrivs om med=
. Använda+
och-
undviker detta genom att lägga till eller ta bort från den aktuella uppsättningen behörigheter).,>Innan: -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 annan genväg är det speciella X
– läget: det här är inte ett verkligt filläge, men det används ofta i samband med -R
alternativ för att ställa in den körbara biten endast för kataloger och lämna den oförändrad för vanliga filer, till exempel:
$ chmod -R a+rX ./data/
kopieringsbehörigheter
det är möjligt att berätta för chmod att kopiera behörigheterna från en klass, säg ägaren och ge samma behörigheter till grupp eller till och med alla., För att göra detta, istället för att sätta r
, w
, eller x
efter =
, sätta en annan who brev. e.g:
innan: -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
det här kommandot översätts väsentligen till ”ändra gruppbehörigheterna (g=
), för att vara samma som ägaranvändaren (=u
). Observera att du inte kan kopiera en uppsättning behörigheter samt bevilja nya t. ex.,:
$ chmod g=wu foobar
i så fall kastar chmod ett fel.
numerisk metod
chmod kan också ställa in behörigheter med hjälp av siffror.
att använda siffror är en annan metod som låter dig redigera behörigheterna för alla tre ägare, grupp och andra samtidigt, liksom setuid, setgid och sticky bits. Denna grundläggande struktur av koden är detta:
$ chmod xxx filename
där xxx
är ett 3-siffrigt nummer där varje siffra kan vara allt från 0 till 7., Den första siffran gäller behörigheter för ägare, den andra siffran gäller behörigheter för grupp och den tredje siffran gäller behörigheter för alla andra.
i denna nummernotation har värdenar
,w
ochx
sitt eget nummervärde:
r=4w=2x=1
för att komma med ett 3-siffrigt nummer måste du överväga vilka behörigheter du vill ha ägare, grupp och alla andra att ha, och sedan totalt sina värden upp., du vill att grupp och alla andra ska ha just läst och exekvera behörigheter, du skulle komma med de numeriska värdena så:
- ägare:
rwx
=4+2+1=7 - grupp:
r-x
=4+0+1=5 - Övrigt:
r-x
=4+0+1=5
$ chmod 755 filename
detta motsvarar att använda följande:
$ chmod u=rwx filename$ chmod go=rx filename
för att visa befintliga behörigheter för en fil eller katalog i numerisk form, använd kommandot stat(1):
$ stat -c %a filename
där alternativet %a anger utdata i numerisk form.,
de flesta mappar och kataloger är inställda på755
för att tillåta läsning, skrivning och utförande till ägaren, men neka skrivning till alla andra, och filer är normalt644
för att tillåta läsning och skrivning för ägaren men bara läsa för alla andra; se den sista noten på bristen påx
behörigheter med icke körbara filer: det är samma sak här.,
för att se detta i handling med exempel överväga det tidigare exemplet som har använts men med den här numeriska metoden som används istället:
innan:-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
om detta var en körbar skulle numret vara774
om du ville ge körbar behörighet till ägaren och gruppen. Alternativt om du ville att alla bara skulle ha läsbehörighet skulle numret vara 444
., Behandling avr
som 4,w
som 2, ochx
som 1 är förmodligen det enklaste sättet att räkna ut de numeriska värdena för att användachmod xxx filename
, men det finns också en binär metod, där varje tillstånd har ett binärt nummer, och sedan omvandlas det till ett nummer. Det är lite mer invecklad, men här ingår för fullständighet.,
överväga denna behörighetsuppsättning:
-rwxr-xr--
om du lägger en 1 under varje beviljat tillstånd och en 0 för var och en som inte beviljats, skulle resultatet vara något så här:
-rwxrwxr-x 111111101
Du kan sedan konvertera dessa binära tal:
000=0 100=4001=1 101=5010=2 110=6011=3 111=7
värdet av ovanstående skulle därför vara 775.
Tänk på att vi ville ta bort skrivbar behörighet från gruppen:
-rwxr-xr-x 111101101
värdet skulle därför vara 755 och du skulle användachmod 755 filename
för att ta bort skrivbar behörighet., Du kommer att märka att du får samma tresiffriga nummer oavsett vilken metod du använder. Oavsett om du använder text eller siffror beror på personliga preferenser och skrivhastighet. När du vill återställa en katalog eller fil till standardbehörigheter, t.ex. läs och skriv (och kör) tillstånd till ägaren men neka skrivbehörighet till alla andra, kan det vara snabbare att använda chmod 755/644 filename
. Men om du ändrar behörigheterna till något utöver det vanliga kan det vara enklare och snabbare att använda textmetoden i motsats till att försöka konvertera den till siffror, vilket kan leda till ett misstag., Det kan hävdas att det inte finns någon verklig signifikant skillnad i hastigheten på någon av metoderna för en användare som bara behöver använda chmod ibland.
Du kan också använda den numeriska metoden för att ställa in bitarnasetuid
,setgid
ochsticky
med fyra siffror.
setuid=4setgid=2sticky=1
till exempel kommer chmod 2777 filename
att ställa in läs – /skrivbara bitar för alla och även aktivera setgid
– biten.
Bulk chmod
generellt kataloger och filer bör inte ha samma behörigheter., Om det är nödvändigt att bulkmodifiera ett katalogträd, använd Sök för att selektivt ändra det ena eller det andra.
till chmod endast kataloger till 755:
$ find directory -type d -exec chmod 755 {} +
till chmod endast filer till 644:
$ find directory -type f -exec chmod 644 {} +
ändra ägande
chown ändrar ägaren till en fil eller katalog, vilket är snabbare och enklare än att ändra behörigheterna i vissa fall.
Tänk på följande exempel, vilket gör en ny partition med GParted för säkerhetskopieringsdata. Gparted gör allt som root så allt tillhör root som standard., Det här är allt bra, men när det gäller att skriva data till den monterade partitionen nekas tillstånd för vanliga användare.
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
ägs av root, liksom monteringsplatsen (/media/Backup
)., För att ändra ägaren till monteringsplatsen kan man göra följande:
innan: 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 kan partitionen ha data skrivna till den av den nya ägaren, archie, utan att ändra behörigheterna (som ägaren triaden redan hade drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
Nu kan partitionen ha data skrivna till den av den nya ägaren, archie, utan att ändra behörigheterna (som ägaren ”de42c4edca” >
behörigheter).
-
chown
rensar alltid setuid-och setgid-bitarna. - icke-root-användare kan inte använda
chown
för att ”ge bort” filer som de äger till en annan användare.,
Åtkomstkontrolllistor
Åtkomstkontrolllistor ger en ytterligare, mer flexibel behörighetsmekanism för filsystem genom att tillåta att ställa in behörigheter för alla användare eller grupper till en fil.
Umask
umask-verktyget används för att styra masken för filskapande läge, som bestämmer det ursprungliga värdet för filbehörighetsbitar för nyskapade filer.,
filattribut
bortsett från filläget bitar som styr användare och grupp läsa, skriva och köra behörigheter, stöder flera filsystem filattribut som möjliggör ytterligare anpassning av tillåtna filoperationer. I det här avsnittet beskrivs några av dessa attribut och hur man arbetar med dem.
chattr och lsattr
för ext2 och ext3 filsystem, e2fsprogs paketet innehåller program lsattr och chattr som listan och ändra en fil attribut, respektive.,/li>
u
: undeletableA
: inga ATime-uppdateringarC
: ingen kopia på SkrivD
: synkron kataloguppdateringarA
:”c8371fbcac”> : synkrona uppdateringar T
: överst i kataloghierarkin om du till exempel vill ställa in den oföränderliga biten på en fil, använd följande kommando:
# chattr +i /path/to/file
för att ta bort ett attribut på en fil ändras bara +
till -
.,
utökade attribut
Från xattr(7): ”utökade attribut är namn:värdepar associerade permanent med filer och kataloger”. Det finns fyra utökade attributklasser: säkerhet, system, betrodd och användare.
utökade attribut används också för att ställa in funktioner.
utökade attribut för användare
utökade attribut för användare kan användas för att lagra godtycklig information 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
preserves by default1 tar
--xattrs
for creation and extractionbsdtar
-p
for extractionrsync --xattrs
- mv silently discards extended attributes when the target file system does not support them.,
för att bevara utökade attribut med textredigerare måste du konfigurera dem för att trunkera filer på att spara istället för att använda rename(2).
Tips och tricks
bevara rot
använd flaggan
--preserve-root
för att förhindra attchmod
agerar rekursivt på/
. Detta kan till exempel hindra en från att ta bort den körbara bit systembred och därmed bryta systemet. Om du vill använda den här flaggan varje gång ställer du in den i ett alias. Se även .,Se även
- wikipedia:Chattr
- Linux file Permission Confusion
- Linux File Permission Confusion part 2
- wikipedia:Extended file attributes#Linux
- utökade attribut: det goda, det inte så bra, det dåliga.
- säkerhetskopiera och återställa filbehörigheter i Linux
- Varför är” chmod-R 777 / ” destruktivt?