GNU/Linux >> Znalost Linux >  >> Linux

Má účet root vždy UID/GID 0?

Ve skutečnosti jsou dvě části na vaši otázku.

Má účet superuživatele v Linuxu vždy uid/gid 0/0?

Ano. Jak v komentáři poukázal Rich Homolka, v jádře je kód, který explicitně kontroluje uid 0, když potřebuje zkontrolovat uživatele root, což znamená, že root má vždy alespoň uid 0.

Je název uživatelského účtu s uid 0 vždy root ?

Ne. root je pouze jméno uvedené v /etc/passwd nebo v jiném úložišti ověřování. Stejně tak můžete účet nazvat admin a OS samotnému to bude jedno, ale některým aplikacím se to nemusí úplně líbit, protože očekávají existenci privilegovaného účtu s názvem root . Volání účtu uid 0 na *nix root je velmi silně dodržovaná konvence, ale není vyžadována systémem (ačkoli může být vyžadována určitým uživatelským softwarem, případně včetně nástrojů pro správu systému).

Za zmínku také stojí, že, jak poukázal Simon Richter, na BSD často existuje sekunda uid 0, podle konvence s názvem toor (což je „kořen“ napsáno pozpátku a také lexikálně přichází za root v seznamu seřazeném podle abecedy). Například FreeBSD jej používá k tomu, aby uživateli root poskytl přizpůsobené nastavení shellu, přičemž uživateli root ponechává výchozí shell, který zaručeně existuje v kořenovém oddílu systému (užitečné pro účely obnovy).


1) správce je vždy uid ==0. Toto je zakódováno v jádře. Změnit to bude vyžadovat nějaké kódování v jádře. Nemá to moc smysl, takže se to nedělá. Například by to bylo nekonzistentní pro jiné unixy sdílející stejný NFS například.

2) uid 0 se nemusí nutně mapovat na root. Nejlepším příkladem je FreeBSD. Má dva účty uid ==0, rozdíl je v shellu. root má shell /bin/sh, což je jednoduchý shell, užitečný, když jsou vaše disky špatné a potřebujete fsck /usr. toor používá tcsh, který je mnohem užitečnější v jiných než nouzových situacích, protože obsahuje věci jako historii atd.

Další, osobnější příklad; jednu práci, kterou jsem měl, kde měli účet root equiv (tj. uid=0) přes NIS. Heslo, prázdné! Protože nový správce systému si nemohl vzpomenout na heslo uživatele root na počítačích. Křičel jsem na to ze zřejmých důvodů (hesla NIS podle definice nemohou skrýt svou prázdnotu). Tento účet mě nepotěšil.

A opravdu to není systém, který dává uid 0 jako root, ale vy. Můžete to změnit pomocí souborů passwd nebo jiných pojmenovacích adresářů (NIS, ldap), ale není to zkompilováno. I když byste měli mít alespoň jeden účet uid 0 v /etc/passwd, protože nemusíte mít síť, když to opravdu potřebujete .

Takže root je vždy uid 0, ale uid 0 nemusí být nutně vždy root.


Pro systémy, které používají nonStop server, ROOT_UID není 0, ale 65535.

Uživatelé a skupiny OSS Prostředí OSS neposkytuje běžná výchozí uživatelská jména a ID uživatelů systému UNIX, pokud nejsou explicitně vytvořena správcem webu. Ekvivalentní uživatelská jména a ID uživatelů OSS však existují. Například oprávnění normálně spojená s uživatelským jménem UNIX root a ID uživatele 0 existují pro ID uživatele (UID) OSS 65535 (super ID), což je uživatel SUPER.SUPER a jeho aliasy.

Viz https://h20195.www2.hpe.com/V2/GetPDF.aspx/4AA4-6316ENW.pdf

V coreutils můžete najít hlavičkový soubor root-uid.h:

/* The user ID that always has appropriate privileges in the POSIX sense.

   Copyright 2012-2016 Free Software Foundation, Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.

   Written by Paul Eggert.  */

#ifndef ROOT_UID_H_
#define ROOT_UID_H_

/* The user ID that always has appropriate privileges in the POSIX sense.  */
#ifdef __TANDEM
# define ROOT_UID 65535
#else
# define ROOT_UID 0
#endif

#endif

Linux
  1. Rozdíl mezi uživatelským a servisním účtem?

  2. Odhlaste uživatele a smažte účet

  3. Proč setuid bit funguje nekonzistentně?

  1. Proč potřebuje uživatel root oprávnění sudo?

  2. Existuje inverzní příkaz k řezání?

  3. Nainstalujte WordPress na uživatelský účet jako root

  1. Rychlý tip:Přidejte uživatele do skupiny sudoers

  2. Zakažte přihlášení pomocí účtu root

  3. Co znamená atribut „s“ v oprávněních k souboru?