'Kök' adlı bir hesap oluştursaydım ne olurdu?


30

Ubuntu'da adı verilen bir kullanıcı hesabı oluştursam root, otomatik olarak kök izinlerine sahip olur mu? Sistemi kırmak? Neden matristeki bir aksaklık var? Ne olacaktı


25
Kök adında bir hesap zaten var.
mikew her ne zaman

Yanıtlar:


46

Kullanıcı adları benzersiz olmalı, bu nedenle Owen Hines'in cevabında belirtildiği gibi , bu kullanıcıyı oluşturamazsınız. Bununla birlikte, buradaki kilit nokta, süper kullanıcı yetkilerinin (tüm olası izinler) kullanıcı adı rootdeğil, UID tarafından verildiğidir .

UID 0 olan kullanıcı süper kullanıcıdır.

Öyleyse, UID 0’daki kullanıcının farklı bir adı varsa ve adında bir kullanıcı root , özel durumları olmaz.

Seni wiki etiketine yönlendiriyorum!


Mevcut hesap kökünü yeniden adlandırıp normal bir kullanıcı kökü oluşturabilir misiniz?
emory

Bir yandan not olarak, kullanıcı adı 0 kullanıcı adını başka bir şeyle değiştirmek mümkün olmamıştı (denememiş olmama rağmen), bu nedenle süper kullanıcı çağrılmıyor root. Harika bir fikir değil, mümkün. Örneğin, bir kullanıcı god, kullanıcı kimliğiyle adı verilen bir süper kullanıcı hesabı 0ve bir kullanıcı rootkimliği ile 1000ya da başka bir sayı ile adlandırılan normal bir kullanıcı yapabilir .
Ian D. Scott,

15

Size izin vermezdi çünkü zaten bir rootkullanıcı olacaktı.

Ancak, Florian Diesch’in dediği gibi :

Bazı araçlar şikayet edecektir, ancak adında ikinci bir kullanıcı oluşturmak için her zaman düzenleme yapabilir /etc/passwdve etc/shadowmanuel olarak düzenleyebilirsiniz root.


2
Ve bunu yaparsan ne olacak chown root file?
fkraiem

1
@fkraiem, hmm .. güzel soru, bunun cevabını bilmiyorum.
The

3
Eskiden gerçekleşen şey, dosyadaki ilk kazanan oldu. Şimdi bilmiyorum
Joshua,

5

Öncelikle, başkalarının belirttiği gibi, UID 0 ile kullanıcıyı başka bir şeyle değiştirirsiniz. Sonra root adı ve 1000'den daha yüksek bir UID ile normal bir kullanıcı oluşturabilirsiniz. "İyi" çalışacaktır. Tüm izinler ve çekirdek sistem işlevleri kullanıcı adını değil UID'yi kullanır. Aslında bu, bir Linux sistemini sertleştirmede iyi bir ilk adımdır. (Kökleri devre dışı bırakmak çok daha iyi, ama sudo'dan önce bunu yapardık).

Şimdi ne olacağını.

Çoğu zaman hiçbir şey. Yetkilendirme veya kimlik doğrulama ile ilgili tüm sistem çağrıları UID (bildiğim kadarıyla) kullanır. Ve bir süredir bu şekilde olmuştur. Sisteminiz her zamanki gibi çalışmaya devam edecek. Sistem araçları yeni kullanıcı adını yansıtır, ancak normal şekilde çalışmaya devam eder. Başka bir deyişle, konvansiyonda "kök" ve taş koymamış.

Bununla birlikte, kötü yazılmış bazı araçlar ve programlar olduğundan eminim. $ USER ortam değişkenini kontrol eden programlar yanlış hareket edebilir. Genellikle bunlar senaryolar ve küçük projelerdir, ancak 6 yıl önce fdisk'te başınızı ağrıtmaya devam eden bu kötü işlemi izleyerek biraz zaman geçirebilirsiniz.

Bu her zaman yaptığım bir şeydi. Bu kolay bir adımdı ve “öngörülemeyen kullanıcı adları” kuralına giriyor. Ancak bugün aynı hedeflere ulaşmanın daha iyi yolları var.


Sanırım UID demek
Zanna

1

Diğerlerinin açıkladığı gibi, kullanıcı adı "root" değil, UID = 0 ise kullanıcıya "süper güç" verir. Bir şekilde "root" adında başka bir kullanıcı oluşturmayı başardıysanız (orijinalini yeniden adlandırdıktan / sildikten sonra) - kullanıcının süper durumu, verdiğiniz UID'ye bağlı olacaktır.

Bu aynı zamanda başka ilginç bir fikre de yol açar: aynı UID'ye sahip birden fazla kullanıcıya sahip olmak tamamen mümkündür (bu, dosya sistemi izinleri açısından temelde aynı kullanıcıyı yapan ancak farklı, örneğin kabuk ve ana dizinin olmasına izin verir). Aslında, bazı UNIX benzeri sistemler, farklı ayarlara sahip iki süper kullanıcı hesabına izin veren, toor (kökten geriye) adı verilen başka bir süper kullanıcı hesabına sahiptir.


1

2. “root” nasıl oluşturulur:

Evet, teoride aynı kullanıcı adı veya kimliği olan iki kullanıcı olmamalıdır. Ve standart uygulamalar kusursuzdur ve bu kullanıcıları sizin için yapmaz. Ancak / etc / passwd dosyasını her zaman elle düzenleyebilirsiniz.

Örneğin, yaptım:

$ sudo adduser root2 # created ordinary user
$ sudo vim /etc/passwd # edit last line, change 'root2' to 'root'. 
$ sudo -u '#1002' id # 1002 is UID of new user, it's in last line of /etc/passwd
uid=1002(root) gid=1002(root2) группы=1002(root2)

Gördüğünüz gibi, artık kökünüz! Evet, bu gerçek kök değil (kullanıcı kimliği = 0 değil), ancak aynı dört harften oluşur. Etkileyici ve işe yaramaz.

Daha iyi 2. “root” nasıl oluşturulur:

Ayrıca başka değişiklikler de yapabilirsiniz. Kullanıcı adınızı olduğu gibi bırakın (adınız veya root2) ancak kullanıcı adınızı değiştirin.

$ tail -n 1 /etc/passwd
root2:x:0:0:,,,:/home/root2:/bin/bash

(bkz. UID ve GID alanları sıfırdır) Artık, hemen hemen şüpheli olmayan bir kullanıcı adıyla (veya daha iyi etki için 'johndoe' kullanıcı adını oluştur), normal (root olmayan) bir kullanıcınız var, ama aslında, bu kullanıcının süper güçleri var!

$ fdisk /dev/sda
fdisk: unable to open /dev/sda: Permission denied
$ sudo -u root2 fdisk /dev/sda

Command (m for help):

Gördüğünüz gibi, sıradan kullanıcı / dev / sda üzerinde fdisk kullanamaz, ancak root2 her şeyi yapabilir!

Bu basit numara, bazen sistem arka kapı sağlamak için hacklendikten sonra kullanılır. Gerçek root anahtarlarını / şifrelerini değiştirse bile, korsan hala uid = 0 olan diğer kullanıcı aracılığıyla sistem üzerinde tam kontrol sahibi olacaktır.

Matris nasıl çalışır?

Aslında ne kullanıcı adı ne de 'root' ne de uid = 0 kendi başına büyülü değildir. Bu sadece kongre meselesi. Ve her zaman doğru bile değil. (bu soruya bakın: Kök hesabın her zaman UID / GID 0'ı var mı? ) Çekirdek kodu sihirlidir. Aslında, kullanıcı alanı kodunun kendisi - kökün yapabileceği hiçbir şeyi yapamaz. Kök olarak çalışsa bile! Kök gücü çekirdekte. örneğin, eğer "cat / etc / shadow" yaparsanız (sadece root genellikle bunu yapabilir), / bin / cat programı hala kullanıcı kodu olan libc open () fonksiyonunu çağırır ve bu open () fonksiyonu çekirdeğe sistem çağrısı yapar. Sonra çekirdeğin kendisi ne yapacağına karar verir. Örneğin, eğer etkili kullanıcı kimliği == 0 ise, çekirdek bazı işlemlere izin verebilir.

Teoride, çekirdeğin içindeki bazı kodları değiştirip 'www-data' kullanıcısını farklı şekilde ele alacaksanız, bazı işlemlere yalnızca 'www-data' kullanıcısı için izin verilebilir (ve root bile yapılamaz).


0

'Kullanıcı dostu' araçların çoğu buna karşı kontrol edecek ve daha önce alınmış bir kullanıcı adı ile hesap oluşturmanıza izin vermeyecektir.

Bunu atlarsanız ve / etc / passwd ve / etc / shadow öğenize manuel olarak ikinci bir kök hesap eklerseniz, hangisinin kullanılacağını belirlerseniz, orijinalinden önce mi yoksa sonra mı koyacağınıza göre değişir. Bir unix sistemindeki tüm kullanıcı hesapları gibi, isminden bağımsız olarak yalnızca kullanıcı kimliği sıfırsa, süper kullanıcı erişimine sahip olacaktır.

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.