Sudo Suyu çalıştırmak için iyi bir sebep var mı?


78

Kök hesabının devre dışı bırakıldığı makinelerde bir kök kabuğu başlatmak için şunlardan birini çalıştırabilirsiniz:

  • sudo -i: etkileşimli bir giriş kabuğu çalıştır (okur /root/.bashrcve /root/.profile)
  • sudo -s: giriş yapmayan etkileşimli bir kabuk çalıştır (okur /root/.bashrc)

Ubuntu dünyasında, çok sık sudo suönerilen bir kök kabuğu almanın bir yolu olarak görüyorum . Biri ne zaman yapacak, neden iki ayrı komut çalıştırmalı? Söyleyebileceğim kadarıyla sudo -ieşdeğer sudo su -ve sudo -saynıdır sudo su.

Tek farklılıklar var ( sudo -isolda ve sudo su -sağda kıyaslandığında ):

'sudo -i' ve 'sudo su -' ile karşılaştırmalı meld ekran görüntüsü

Ve sudo -s(solda) ve sudo su(sağda) karşılaştırarak:

'sudo -s' ve 'sudo su' ile karşılaştırmalı meld ekran görüntüsü

Temel farklılıklar ( SUDO_foodeğişkenleri görmezden gelmek ve LS_COLORS) sürümlerdeki XDG_foosistem değişkenleri gibi görünüyor sudo su.

Bu farkın, davetsiz misafir yerine kullanma emri çıkardığı durumlar var sudo sumı? İnsanlara (çoğu zaman olduğu gibi) güvenli bir şekilde kaçmanın hiçbir anlamı olmadığını sudo suveya bir şeyleri özlemediğimi söyleyebilir miyim ?


8
ubuntuKullanıcıların standart olmasını engelleyen bu fantezi sistemleri hiç anlamadım su -. Sorun yarattılar ve şimdi nasıl çözüleceği konusunda sonsuz tartışmalar var.
jimmij

16
@jimmij Kök şifresini bilmene gerek yok su -mu? Birden fazla kişinin root erişimine ihtiyaç duyduğu çok kullanıcılı ortamlarda güvenlik açığı oluşturduğunu düşünmüyor musunuz?
Erathiel

4
@Christopher Sorun, sistemi kırmak için sudo ayrıcalığına sahip olan bir kullanıcı veya kök parola değil. Sorun parola güvenliği ile ilgili. Kök şifresini değiştirdiğinizde, ihtiyacı olan tüm kullanıcıların bilmesini istersiniz ki bu zor olabilir. Sudo ile bu zorluğun yok.
Huygens

4
Diff aracı nedir?
Josh Geek

5
@jimmij Ubuntu nasıl kullanılır su -? Evet, bir root şifresi ayarlamak zorunda kalacaktı, ama bu önemsiz.
Phizes

Yanıtlar:


62

Sorunuzda belirttiğiniz gibi, temel fark çevre.

sudo su - vs. sudo -i

Durumunda sudo su -bunun bir giriş kabuğu, yani /etc/profile, .profileve .bashrcyürütülür ve root çevre ile root ana dizininde bulacaksınız.

sudo -ihemen hemen aynı olduğunu (ilk giriş taklit) seçeneği bir giriş kabuğu olarak hedef kullanıcının parolası veritabanı girişinin tarafından belirtilen kabuk çalıştırır. Bu oturum özgü kaynak gibi dosyaları anlamına gelir , ya da okuma ve kabuk tarafından çalıştırılacaktır.sudo su --i.profile.bashrc.login

sudo su vs. sudo -s

sudo susudokomutu ile çağırır su. Bash etkileşimli giriş olmayan kabuk olarak adlandırılır. Yani bashsadece yürütür .bashrc. Köke geçtikten sonra hala aynı dizinde olduğunuzu görebilirsiniz:

user@host:~$ sudo su
root@host:/home/user#

sudo -s$SHELLdeğişkeni okur ve içeriği yürütür. Eğer $SHELLiçeren /bin/bashdiline doladığı sudo /bin/bash, yani /bin/basholmayan giriş kabuğu olarak başlatılır, böylece tüm nokta dosyaları infaz değildir, ancak bashkendisi okur. bashrcarayan kullanıcının Ortamınız aynı kalıyor. Eviniz kökün evi olmayacak. Demek kök, ama arayan kullanıcının ortamında.

Sonuç

-iBayrak eklendi sudoiçinde 2004 benzer bir işlevi sağlamak için, sudo su -böylece sudo su -için şablon oldu sudo -ive bunun gibi çalışmak gerekiyordu. Çevre önemli olmadıkça bence hangisini kullandığınız önemli değil.

İlave

Burada belirtilmesi gereken temel bir nokta, daha yüksek ayrıcalıklara sahip tek bir komutsudo çalıştırmak ve daha sonra bu ayrıcalıkları orijinal olanlara bırakmak için tasarlanmıştır. Asla kullanıcıyı gerçekten değiştirip kök kabuğunu açık bırakmak istemedi . Zaman içinde, bu tür mekanizmalarla genişletildi, çünkü insanlar neden her komutun önünde kullanıldıkları konusunda sinirlendiler .sudosudo

Yani anlamı sudokötüye kullanıldı. sudokullanıcıyı, kök ayrıcalıklarının kullanımını en aza indirgemeye teşvik ediyordu.

Şimdi sahip olduğumuz şey, sudodaha popüler hale geliyor. Neredeyse tüm tanınmış linux dağıtımlarına entegre edilmiştir. Başka bir kullanıcı hesabına geçmek için kullanılan orijinal araçtır su. Eski bir okul için * nix usta gibi böyle bir şey sudogereksiz görünebilir. Karmaşıklık ekler ve Microsofts os-ailesinden bildiğimiz mekanizmalara daha muhtemel davranır ve bu nedenle * nix sistemlerinin sadeliği felsefesine aykırıdır.

Gerçekten usta değilim, ama bence sudoher zaman yanımda bir dikendi, zamandan beri tanıtılmıştı ve sudomümkünse her zaman kullanımı için çalıştım . Ben kullanmak konusunda isteksizim sudo. Tüm sistemlerimde kök hesap etkindir. Fakat işler değişir, belki zaman gelir, ne zaman sumahrum kalır ve tamamen yer sudodeğiştirir su.

Bu nedenle, eski bir araca güvenmek yerine sudoiç mekanizmalarını ( -s, -i) kullanmak en iyisi olacağını düşünüyorum su.


4
Ah, öyleyse 2004'ten önce sudo suo zaman kaçmak için bir neden vardı ? O zaman sudo ve aktif kök hesapları olmayan dağıtımları kullanıyordum, bu yüzden bilmiyorum. Bu Ubuntu dünyasındaki sudo sema prevalansını açıklayabilir.
terdon

8
Hiç sudo -iya da daha sudo -sönce hiç bilmiyordum - 1991'den beri çeşitli türlerde UNIX'ler kullanıyorum ve benim sudo su -için bu noktada sadece yerleşik bir alışkanlık.
kabarık

2
O sudo -szamankiyle aynı mı sudo $SHELL?
Samuel Edwin Ward

3
(@Chaos ile anlaşarak) Kullanım nedenleri sudo su -1) işe yarıyor ve tam olarak ne yaptığını biliyorsunuz, ve 2) başka bir seçeneği hatırlamak zorunda değilsiniz sudo(zaten bildiğiniz zaman su -) ve 3) sudoŞu anda hangi versiyonla çalıştığınızı hatırlamak zorunda değilim. Zaten sahip olduğunuz işler iyi gittiğinde neden bir trivia parçasını daha hatırlayın? su -iGünlük girişini önlemek dışında daha iyi bir şey var mı ? Bunun sudo su -için endişelenecek kadar kullanmıyorum .
jrw32982

3
Güncellemeyi yeni gördüm, çok hoş! Kayıt için, * nix dişlerimi hiç kullanamadığım sudove kullanamadığım sistemlerde de kestiğimi söyleyeyim su. Beni rahatsız eden ikisinin birleşimi.
terdon

16

Sorunuzu doğrudan cevaplamak için: Hayır, bunu yapmak için iyi bir neden yoktur. Ayrıca, sudo su yeterli olduğunda iki günlük girişi üretir.

Bunu yapan birçok insan gördüm ve neden sadece kaçmadıklarını sorduğumda sudo -scevap, sadece -sbayrak sudo'yu bilmedikleri ve genel olarak işaret ettikten sonra değiştirdikleri.

Ancak, listenize sudo -sve sudo -iben bir daha seçeneğini eklemek istediğiniz sudo -sEiçin bir yedek türüdür, su -m. sudo -sEEv dizini dahil ortamınızı korur. Bu, ana dizininizin güvensiz olması durumunda (NFS'de) risklidir. Ancak, birçok kişinin kök kullandığı bir ortamda, kök .bashrcdosyasının içeriği konusunda hemfikir olmanıza gerek kalmaz . Benim .bashrckökü birçok uzmanlık içerir, bu yüzden tam olarak kök olarak aynı ortamı alamadım, ama en azından tam istediğim ortamı olsun.


4
Eğer ortamınızı koruyorsa $HOME, bunun anlamı, ev klasörü altında oluşturulan tüm yeni dosyaların sizin tarafınızdan size ait olduğu anlamına gelir. Bunu yaşadım, çünkü çoğu izin hatalarını teşhis etmek zor.
Eris

sudo -sEve sonra echo $HOMEverir /rootCentOS 7, bash 4.2 üzerinde. -sEbelirttiğiniz gibi ana dizini korumak için görünmüyor.
jeremysprofile
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.