chmod(1p)

Från Wiki.linux.se
Version från den 31 augusti 2025 kl. 15.16 av Admin (diskussion | bidrag) (Skapade sidan med '= chmod(1p) = == PROLOG == Denna manualsida är del av POSIX Programmer’s Manual. Linux-implementationen kan avvika (se motsvarande Linux-man-sida för Linux-specifikt beteende), eller gränssnittet kan saknas på Linux. == NAMN == chmod — ändra filers lägesbitar (rättigheter) == SYNOPS == <pre> chmod [-R] läge fil... </pre> == BESKRIVNING == Verktyget '''chmod''' ändrar valfria lägesbitar (”file mode bits”) för varje angiven ''fil'' enligt ''läge''....')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

chmod(1p)

PROLOG

Denna manualsida är del av POSIX Programmer’s Manual. Linux-implementationen kan avvika (se motsvarande Linux-man-sida för Linux-specifikt beteende), eller gränssnittet kan saknas på Linux.

NAMN

chmod — ändra filers lägesbitar (rättigheter)

SYNOPS

chmod [-R] läge fil...

BESKRIVNING

Verktyget chmod ändrar valfria lägesbitar (”file mode bits”) för varje angiven fil enligt läge.

Det är implementeringsdefinierat om och hur chmod påverkar alternativa/ytterligare åtkomstkontrollmekanismer (se POSIX.1-2017 ”File Access Permissions”).

Endast en process vars effektiva användar-ID matchar filens ägar-ID, eller en process med lämpliga privilegier, får ändra lägesbitarna.

När ändringen lyckas ska chmod markera filens ”last status change”-timestamp för uppdatering.

ALTERNATIV

Alternativ Beskrivning
-R Rekursivt. För varje fil som är en katalog ändras läget för katalogen och alla objekt i dess hierarki.

OPERANDER

läge
Antingen ett symboliskt_läge eller ett icke-negativt oktalt heltal. Se ”UTÖKAD BESKRIVNING”.
fil
Sökväg till fil vars lägesbitar ska ändras.

STDIN

Ej använd.

INDATAFILER

Inga.

MILJÖVARIABLER

Följande variabler kan påverka exekveringen av chmod:

LANG
Standardvärden för internationaliseringsvariabler som är tomma/ej satta.
LC_ALL
Åsidosätter alla andra internationaliseringsvariabler när satt till icke-tom sträng.
LC_CTYPE
Tolkning av byteföljder som tecken (enbyte vs. multibyte) i argument.
LC_MESSAGES
Lokal för format/innehåll i diagnostik på stderr.
NLSPATH
Plats för meddelandekataloger för LC_MESSAGES.

ASYNKRONA HÄNDELSER

Standard.

STDOUT

Ej använd.

STDERR

Endast för diagnostik.

UTGÅNGSFILER

Inga.

UTÖKAD BESKRIVNING

Symboliskt läge

Operanden läge kan vara ett symboliskt_läge som består av en eller flera satser separerade med komma. Varje sats verkar på filens aktuella läge i angiven ordning.

who
u (ägare), g (grupp), o (andra), a (alla; motsvarar ugo).
perm
r (läs), w (skriv), x (kör/sök), X (kör/sök endast om katalog eller om något x-bit redan är satt), s (SUID om u, SGID om g), t (sticky bit/S_ISVTX).
permcopy
u, g, o – kopiera aktuella rättigheter från respektive del.
op
+ (sätt), - (rensa), = (sätt exakt och rensa andra enligt who).

Specifika regler:

  • Om perm utelämnas gör +/-/= inget.
  • Om who utelämnas avser operationen ägare/grupp/andra, men maskas av processens umask för + och =.
  • X ignoreras om filen ej är katalog och inga x-bitar är satta.
  • Kombinationen o med s ändrar inte SUID/SGID (tillåtet men utan effekt).
  • t (sticky) har specificerad betydelse för kataloger; övrigt är ospecificerat.

Implementationsdetaljer (regelförenkling): på reguljära filer kan förfrågningar om att sätta/ta bort SUID/SGID när alla x-bitar är av sakna effekt eller rensa SUID/SGID när alla x-bitar rensas; beteendet är implementeringsdefinierat. På andra filtyper är det implementeringsdefinierat om SUID/SGID hedras.

Oktalt läge

Ett icke-negativt oktalt heltal sätter lägesbitarna absolut. För varje satt bit sätts motsvarande rättighet; övriga rensas. För reguljära filer gäller även SUID/SGID enligt tabellen nedan; för andra filtyper är hedrandet implementeringsdefinierat.

Oktal Bit Oktal Bit Oktal Bit Oktal Bit
4000 S_ISUID 0400 S_IRUSR 0040 S_IRGRP 0004 S_IROTH
2000 S_ISGID 0200 S_IWUSR 0020 S_IWGRP 0002 S_IWOTH
1000 S_ISVTX 0100 S_IXUSR 0010 S_IXGRP 0001 S_IXOTH

Andra oktala bitar än ovan: beteende ospecificerat.

Grammatik för symboliskt_läge

symbolic_mode  : clause
               | symbolic_mode ',' clause
               ;
clause         : actionlist
               | wholist actionlist
               ;
wholist        : who
               | wholist who
               ;
who            : 'u' | 'g' | 'o' | 'a'
               ;
actionlist     : action
               | actionlist action
               ;
action         : op
               | op permlist
               | op permcopy
               ;
permcopy       : 'u' | 'g' | 'o'
               ;
op             : '+' | '-' | '='
               ;
permlist       : perm
               | perm permlist
               ;
perm           : 'r' | 'w' | 'x' | 'X' | 's' | 't'
               ;

EXIT-STATUS

0   Verktyget exekverade utan fel och alla begärda ändringar gjordes.
>0  Fel inträffade.

FELKONSEKVENSER

Standard.

Följande avsnitt är informativa.

ANVÄNDNING I PROGRAM

  • Vid rekursiv ändring (-R) kan vissa implementationer ändra katalogen före filerna, andra efter. Att göra en hierarki otillgänglig för sig själv kan därför misslyckas på olika sätt – undvik detta mönster.
  • POSIX kräver att umask beaktas när who utelämnas. Skillnad mellan:
chmod a-w fil      # tar ALL skrivrätt
chmod -- -w fil    # tar bort skrivrätt enligt vad umask skulle tillåta
  • Antag inte tolkningen av SUID/SGID på kataloger – den varierar.

EXEMPEL

# Sätt åtkomst för ägare/läs-skriv-kör; grupp/läs-kör; andra/läs-kör (0755)
chmod 755 katalog

# Ge endast ägaren läs/skriv, rensa allt annat (0600)
chmod 600 hemlig.txt

# Lägg till körbarhet för ägare (behåll övrigt)
chmod u+x skript.sh

# Ta bort skriv för grupp och andra
chmod go-w fil.txt

# Sätt SUID på ett program (kräver ofta root)
chmod u+s /usr/local/bin/program

# Sätt SGID och ”sticky” på en katalog (typisk delad gruppkatalog)
chmod g+s,t /srv/projekt

# Kopiera ägarens rättigheter till grupp, och rensa grupp-skriv
chmod g=u,g-w fil.txt

# Rekursivt: gör alla .sh körbara för ägare (behåller andra rättigheter via X)
find . -name '*.sh' -type f -exec chmod u+X {} +

# Använd endast X: lägg till körbarhet på kataloger men inte på vanliga filer
chmod a+X -R .

MOTIVATION (RATIONALE)

Beteende beskrivs via referenser till POSIX-koncept för att undvika duplicering. Exitstatus standardiseras till 0/>0 (vissa historiska varianter använde antal fel, vilket kan överflöda). X är hämtad från BSD och är särskilt användbar vid rekursiva ändringar. Grammatik har utökats med permcopy (t.ex. o=u -g).

FRAMTIDA RIKTNINGAR

Inga.

SE ÄVEN

ls(1p), umask(1p)

Se även POSIX.1-2017: File Access Permissions; Environment Variables; Utility Syntax Guidelines. Systemgränssnitt: chmod(3p).

COPYRIGHT

Delar av texten återges ur IEEE Std 1003.1-2017 / The Open Group Base Specifications Issue 7, 2018 Edition. Vid skillnader gäller originalstandarden. Typografiska/formatteringsfel kan ha uppstått vid konvertering till man-format.

IEEE/The Open Group                2017                            chmod(1p)