chmod(1p): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(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''....')
(Ingen skillnad)

Versionen från 31 augusti 2025 kl. 15.16

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)