Kök hesabın her zaman UID / GID 0'ı var mı?


50

Yönettiğim tüm Linux sistemlerinde, kök hesabın GID ve 0 kullanıcı kimliği var. Bu garantili mi, yoksa sistem köküne farklı bir kimlik vermesi mümkün mü?


3
ID 0 tüm haklara sahiptir. Gerçek ad (veya birden fazla ad) farklı olabilir. Örneğin sunucumun iki kullanıcı kimliği 0 kullanıcısı var. Biri 'root', biri 'toor'.
Hennes

Yanıtlar:


80

Sorunuzun aslında iki kısmı var .

Süper kullanıcı hesabının Linux'ta her zaman 0/0 kimliği var mı?

Evet. Tarafından belirtildiği üzere Zengin Homolka'yı içinde bir yorumun , uid 0 açıkça denetler kök daima en azından sahip olduğu araçlar kök kullanıcı için kontrol etmek gerek kernel kodu var uid 0.

UID 0 olan kullanıcı hesabının adı her zaman rootmı?

Hayır root , yalnızca / etc / passwd veya başka bir kimlik doğrulama deposunda listelenen bir addır. Sen de hesabını çağırabilirsin adminve işletim sisteminin kendisi umursamaz, ancak bazı uygulamalar adında ayrıcalıklı bir hesap olmasını bekledikleri için hoşuna gitmeyebilir root. UID 0 hesabını * nix rootolarak çağırmak çok kuvvetli bir kongredir , ancak sistem tarafından gerekli değildir (yine de, muhtemelen sistem yönetim araçlarını da içeren belirli kullanıcı yazılımları için gerekli olabilir).

Bu tarafından sivri out gibi, aynı zamanda fazlalaştı Simon Richter , BSD üzerinde genellikle vardır ikinci adında Kongre tarafından, 0 hesabı uidA toor( "kök" yazıldığından geriye olduğunu ve aynı zamanda lexically geliyor sonra root bir listesini alfabetik olarak sıralanmış olarak). Örneğin, FreeBSD bunu bir kök kullanıcısına özelleştirilmiş bir kabuk ayarı sağlamak için kullanır ve kök kullanıcıyı , sistemin kök bölümünde varolan garantili varsayılan bir kabuk ile bırakır (kurtarma amacıyla kullanışlıdır).


15
Çekirdekte kök olup olmadığını kontrol etmek için kod var, uid == 0. Evet, zor kodlanmış ve kalıcı.
Rich Homolka

1
BSD tipik olarak UID 0 ile birlikte rootve toorher ikisine de sahiptir.
Simon Richter

@SimonRichter Bu durumda, adı olan bir süper kullanıcı hesabı var root, bu nedenle kimlik doğrulama deposu kitaplıkları aynı UID'ye sahip iki kullanıcıyla karıştırılmadığı sürece, sorun yok (bu durumda BSD'ler bunu yapmaz. ya da kütüphaneler sabitlenirdi).
Ağustos'ta

Çekirdeğin root temsilcisi olarak UID = 0 kullanan ve "root_uid" adlı değişkenlerde sakladığı kod var, ancak aslında "root" olarak adlandırılan kullanıcıya bağlı hiçbir şey (6 yıl sonra) bulamadım . UID'nin / etc / passwd olup olmadığı, ancak sonuçta UID = 0 ile başlatılan işlemler olacaktır. :)
dannysauer

15

1) yönetici her zaman kullanıcı kimliği == 0'dır. Bu, çekirdekte kodlanmıştır. Bunu değiştirmek için çekirdekte bazı kodlamalar gerekir. Bunun fazla bir anlamı yok, o yüzden bitmedi. Örneğin, aynı NFS'yi paylaşan diğer unix'ler için tutarsızlık olabilir.

2) kullanıcı kimliği 0 mutlaka kök ile eşleşmez. En iyi örnek FreeBSD'dir. İki kullanıcı kimliği == 0 hesap var, fark kabuk. root, diskleriniz kötü olduğunda ve fsck / usr'ye ihtiyaç duyduğunuzda kullanabileceğiniz basit bir kabuk olan shell / bin / sh komutuna sahiptir. toor, acil durumlar için çok daha kullanışlı olan tcsh'yi kullanır, çünkü tarih gibi şeyler vardır.

Başka, daha kişisel bir örnek; NIS üzerinden bir kök eşdeğeri (örneğin, uid = 0) hesabına sahip oldukları bir iş. Şifre boş! Çünkü yeni sysadmin, makinelerdeki kök parolayı hatırlayamıyordu. Bunun için bariz nedenlerden dolayı bağırdım (NIS şifreleri tanımlarını boşluğunu gizleyemez). Bu hesaptan memnun değildim.

Ve bu, Uid 0 veren sistem kök değil, sizsiniz. Bunu benim passwd dosyaları veya diğer adlandırma dizinlerini (NIS, ldap) kullanarak değiştiriyorum ancak derlenmedi. Gerektiğinde ağa sahip olamayacağınız için / etc / passwd'de en az bir tane kullanıcı kimliği 0 hesabınız olması gerekmesine rağmen .

Bu nedenle root her zaman 0 kimliğidir, ancak 0 kimliği her zaman her zaman kök değildir.


1
Oof, tek bir cevap seçmenin acısı ...
Tanaki

5
@Tanaki Genel olarak, sorunuzu yanıtlamanıza en çok yardım eden yanıtı kabul edin ve yararlı bulduğunuz tüm yanıtları değerlendirin. En yüksek oyu alan veya ilk yazılı cevabı kabul etmeniz gerektiğini söyleyen hiçbir şey yok.
Ağustos'ta

1

Durdurulamaz sunucuyu kullanan sistemler için, ROOT_UID 0 değil 65535'tir.

OSS kullanıcıları ve grupları OSS ortamı, açıkça bir site yöneticisi tarafından oluşturulmadıkça, ortak UNIX varsayılan kullanıcı adları ve kullanıcı kimlikleri sağlamaz. Ancak, eşdeğer OSS kullanıcı adları ve kullanıcı kimlikleri mevcuttur. Örneğin, normalde UNIX kullanıcı adı kökü ve 0 kullanıcı kimliği ile ilişkilendirilen ayrıcalıklar, SUPER.SUPER ve takma adı olan 65535'in OSS kullanıcı kimliği (UID) (süper kimlik) için mevcuttur.

Bkz. Https://h20195.www2.hpe.com/V2/GetPDF.aspx/4AA4-6316TRW.pdf

Coreutils'te, root-uid.h başlık dosyasını bulabilirsiniz:

/* 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.