Hur man använder kommandot chown på Linux

Filer och kataloger i Linux-system tillhör alla någon. Du kan ändra deras ägande med kommandot chown. Vi visar dig hur.

Varje fil tillhör en användare och en grupp

Linux är ett fleranvändarsystem. Operativsystemet tillåter att flera användarkonton definieras och för alla giltiga användare att logga in på datorn. Dessutom kan flera användare använda en enda dator samtidigt.

För att upprätthålla en förteckning över vilka filer som tillhör vilken användare och för att upprätthålla viss säkerhet, använder Linux begreppet ägande. Varje fil tillhör en ägare – en användare – och en grupp.

När en fil skapas är dess ägare användaren som skapade den. Gruppen som filen tillhör – den ”ägande” gruppen – är användarens nuvarande grupp. Användare och grupper har namn, och de har också numeriska identiteter, kallade en användare (eller unik) identifierare (UID) och en gruppidentifierare (GID).

När du skapar en fil ägs den av dig och den tillhör din nuvarande grupp. Vanligtvis är det här gruppen du har loggat in på. Som standard är detta en grupp som delar samma namn som ditt användarnamn och som skapades när du skapades som användare i systemet.

Du kan använda kommandot chown för att ändra ägarvärdena till något annat. Du kan ställa in en ny ägare, en ny grupp eller en ny ägare och en ny grupp samtidigt. Ägaren till en fil kan ändra gruppens ägande, men endast root kan ändra användarens ägande eftersom det involverar en annan användare. Utan root-privilegier kan du inte få en annan användare på systemet omedvetet att ”adoptera” en fil.

Varför skulle du vilja byta ägare?

Här är några exempel på situationer där du kanske vill göra detta:

Om du överför filer mellan olika Linux- eller Unix-liknande operativsystem måste du ändra användar- och gruppägare till den nya användaren och gruppägaren för kontot du vill använda filerna under på den nya Linux-datorn.
En användare kan lämna din organisation och alla hans filer kommer att vara en annan personalmedlems ansvar. Du måste ändra ägaren och gruppens ägare till den anställde som nu är ansvarig för dessa filer.
Du kan skapa ett skript som kommer att användas av en specifik användare.
Du kan skapa en fil eller katalog inloggad som root, men du vill att den ska vara tillgänglig för en specifik användare.

Visa dina grupper, UID och GID

Till lista grupperna du är med kan du använda kommandot grupper.

groups

För att få en lista över grupperna, deras numeriska ID, och ditt UID och GIDanvänd kommandot id:

id

Du kan använda vissa alternativ med ID för att förfina utdata.

-u: Lista ditt UID.
-g: Lista ditt effektiva (nuvarande) GID.
-nu: Lista ditt användarnamn.
-ng: Lista ditt nuvarande gruppnamn.

id -u
id -g
id -nu
id -ng

Visa användar- och gruppägande av en fil

För att se ägarna till en fil eller katalog, använd alternativet -l (lång lista) med ls.

ls -l

Vi kan se att namnet dave förekommer två gånger i listan. Utseendet längst till vänster talar om för oss att filägaren är en användare som heter dave. Dave längst till höger talar om för oss att filen tillhör en grupp som också kallas dave.

Som standard, när en Linux-användare skapas, läggs de till i en privat grupp som namnges efter deras användarnamn. De är den enda medlemmen i den gruppen.

Den här körbara filen ägs av användaren mary och gruppen som filen tillhör är marys privata grupp.

ls -l

Denna fil ägs av användaren oscar, men gruppen som filen tillhör kallas researchlab. Detta innebär att andra medlemmar i researchlab-gruppen kan komma åt den här filen, enligt filbehörigheterna som har ställts in för medlemmarna i den gruppen.

Ändra användarägande

Låt oss gå igenom några exempel. Detta kommando kommer att ändra användarens äganderätt till filen while.c till användaren mary.

sudo chown mary while.c

Vi kan använda ls för att se ändringarna av filegenskaperna.

ls -l while.c

Du kan använda chown för att ändra äganderätten till flera filer samtidigt.

sudo chown mary getval.c global.c goto.c

Detta ändrar användarens äganderätt för alla tre filerna.

ls -l getval.c global.c goto.c

Du kan använda jokertecken för att välja grupper av filer. Detta kommando kommer att ändra användarens äganderätt för alla filer som börjar med bokstaven ”c.”

sudo chown mary c*.*

Alla filer kommer nu att ha mary som ägare. Observera att inget av gruppens ägande har ändrats.

ls -l mary c*.*

Låt oss ändra ägandet av en katalog. Vi skickar helt enkelt katalognamnet till chown istället för ett filnamn.

sudo chown mary ./archive/

För att kontrollera ägaregenskaperna för katalogen använder vi ls, men använder också alternativet -d (katalog) för det. Detta listar egenskaperna för katalogen, inte filerna i den.

ls -l -d ./archive/

För att ändra äganderätten till alla filer i en katalog kan du använda alternativet -R (rekursivt). Det här alternativet kommer att ändra användarens äganderätt för alla filer i arkivmappen.

sudo chown -R mary ./archive/

Låt oss nu titta på filerna i arkivkatalogen.

ls -l ./archive/

Som förväntat tillhör alla filer nu mary.

Ändra koncernägande

Det finns olika sätt att ändra gruppägandet.

Om du vill ändra gruppägandet samtidigt som du ändrar användarens ägande, skickar du det nya ägarnamnet och det nya gruppnamnet med ett kolon ”:” som skiljer dem åt. Gruppen måste redan existera.

sudo chown mary:researchlab charm.c

Användarägaren och gruppen som filen tillhör har båda ändrats.

ls -l charm.c

Ett förkortat sätt att ändra gruppägandet till den nya ägarens nuvarande grupp, ange bara kolon och utelämna gruppnamnet.

sudo chown mary: caps.c

ls -l caps.c

Både användarägande och gruppägande har ändrats till mary.

För att bara ändra gruppens äganderätt, föregå det med ett kolon och utelämna användarnamnet. Användarens ägare kommer inte att ändras.

sudo chown :researchlab at.c

ls -l at.c

Gruppens ägande har ändrats, men användarens ägande förblir detsamma.

Använder Chown med UID- och GID-värden

Du kan använda de numeriska UID- och GID-värdena med kommandot chown. Detta kommando kommer att ställa in användaren och gruppens äganderätt till mary.

sudo chown 1001:1001 at.c

ls -l at.c

Innehav är nio tiondelar av lagen

Eller så säger de. Men i Linux är ägande en stor del av filsäkerheten, med filbehörigheter som ger resten av det. Använd kommandona chown och chmod för att säkra filåtkomst på ditt system.