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ü?
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ü?
Yanıtlar:
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
root
mı?
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 admin
ve 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 root
olarak ç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).
root
ve toor
her ikisine de sahiptir.
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).
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.
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