güzel sudo veya sudo güzel?


53

aşağıdaki komutlarla yoğun bir görevi yürütmek arasında sudo üzerinden herhangi bir fark var mı?

  1. sudo güzel [burada yoğun komut]
  2. sudo nice [burada yoğun komut]

BTW bu Linux 3.x içindir.


6
Gördüğünüz sınamak yardımcı olmak için nice bash -c 'ps -p $$ -o pid,ni,comm', ve sudo nice bash -c 'ps -p $$ -o pid,ni,comm', ve nice sudo bash -c 'ps -p $$ -o pid,ni,comm'. Üçünün de size, ortaya çıkmış kabuğun işlem kimliği ($$) için iyi değerini göstermesi gerekir.
Zoredache

@Zoredache, yorumunuzu ÇOK yapıcı olduğunu düşünüyorum iken, aynı güzel değere sahip olacaklarını söylemeliyiz, çünkü sorarken miras alır, bu sorunun asıl cevabı olmalı.
Florin Asăvoaie

3
@FlorinAsavoaie Eğer cevap olması gerektiğini düşünüyorsanız, o zaman eklemek için çekinmeyin. Yukarıdaki yorumlarımı olayları test etmenin bir yolu olarak ekledim, çünkü şahsen ne olacağından% 100 emin değildim ve çeşitli değerleri içeren güzel değeri gösterebilecek bir komut bulmaya karar verdim. Aslında, işlerin olması gerektiği gibi çalıştığını gösteren bir test yaptırmayı tercih etme eğiliminde olan kamptayım.
Zoredache

@ FlorinAsavoaie Ben de öyle düşünürdüm, ancak serverfault.com/a/626576/117546 adresine bakın .
emory

Yanıtlar:


104

Bir fark var, çok önemli.

İşlemin önceliğini azaltmak istiyorsanız , sipariş önemli değil. Öte yandan, arttırmak istiyorsanız daha sudoönce koymalısınız nice.

Komutu normal bir kullanıcı olarak çalıştırdığınız için (aksi takdirde sudo ile hiç uğraşmazsınız), yalnızca komutunuzun önceliğini düşürebilirsiniz. Ama sudoönce kullanırsan , istersen artırabilirsin.


21
Tebrikler, sen kazandın.
Michael Hampton

2
Bu çok önemli bir noktadır, ancak bir cevap olarak sadece emrin neden temel durumda olmadığını açıkladığınızda (Michael'ın cevabında olduğu gibi) açıklamanız tamamlanmıştır.
Monica ile Hafiflik Yarışları,

16

Çalıştırırsanız nice sudo, şifrenizin sorusu da iyi olacaktır, ancak yazarken çok daha fazla zaman harcayacağınız için, bu gerçekten önemli değil.

ThoriumBR'in belirttiği gibi, önceliği düşürüyorsanız, o zaman sıra önemsizdir, ancak önceliği yükseltmek istiyorsanız, o zaman (bunun root olarak yapılması gerektiğinden) kullanmanız gerekir sudo nice.

Aksi takdirde gerçek bir fark hayal edemiyorum.


2

'En az ayrıcalık ilkesini' kullanarak, yalnızca gereksinim duyduğunda kök ayrıcalıklarına sahip bir program çalıştırmalı ve daha sonra gerekmediğinde hemen bırakmalısınız.

Öyleyse evet, bir fark var, iyi bir istismar varsa, bir saldırgan iyi bir programla aynı ayrıcalıklarla kod çalıştırabilir.

Ayrıca, sudo ortamınızı sıfırlar, böylece yan etkilerini hafifletebilir

$ echo 'echo $PATH' | sh
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/jens/.local/bin:/home/jens/bin:/home/jens/.local/bin
$ echo 'echo $PATH' | sudo sh
[sudo] password for jens: 
/sbin:/bin:/usr/sbin:/usr/bin

Bu yüzden sudo üzerinden çalıştırdığınız 'nice' komutu aslında farklı bir ikili olabilir.

$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens: 
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)

2

Geç cevap:

Eğer sudo erişiminiz belirli programlarla sınırlıysa ( foove barörneğin), o zaman çalıştırma yetkiniz sudo nice fooolmayacak, ancak çalışmasına izin verilecektir nice sudo foo.

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.