apakah ada perbedaan antara menjalankan tugas intensif terhadap sudo dengan perintah berikut ?:
- sudo bagus [perintah intensif di sini]
- sudo nice [perintah intensif di sini]
BTW ini untuk Linux 3.x.
apakah ada perbedaan antara menjalankan tugas intensif terhadap sudo dengan perintah berikut ?:
BTW ini untuk Linux 3.x.
Jawaban:
Ada perbedaan, yang penting.
Jika Anda ingin mengurangi prioritas proses, urutannya tidak masalah. Di sisi lain, jika Anda ingin meningkatkannya , Anda harus meletakkan sudo
sebelumnya nice
.
Karena Anda menjalankan perintah sebagai pengguna normal (jika tidak, Anda tidak akan repot dengan sudo sama sekali), Anda hanya dapat mengurangi prioritas perintah Anda. Tetapi jika Anda menggunakannya sudo
terlebih dahulu, Anda dapat meningkatkannya jika Anda mau.
Jika Anda menjalankannya nice sudo
maka prompt untuk kata sandi Anda juga akan hilang, tetapi karena Anda akan menghabiskan lebih banyak waktu mengetiknya, itu tidak terlalu menjadi masalah.
Seperti dicatat ThoriumBR, jika Anda menurunkan prioritas, maka urutannya tidak relevan, tetapi jika Anda ingin meningkatkan prioritas, maka (karena ini harus dilakukan sebagai root) yang harus Anda gunakan sudo nice
.
Kalau tidak, saya tidak bisa membayangkan perbedaan nyata.
Dengan menggunakan 'prinsip hak istimewa paling rendah', Anda hanya harus menjalankan program dengan hak akses root jika diperlukan, dan kemudian letakkan kembali begitu Anda tidak membutuhkannya lagi.
Jadi ya, ada perbedaan, jika ada eksploit untuk kebaikan, penyerang bisa menjalankan kode dengan hak yang sama dengan program yang bagus.
Selain itu, sudo akan menyetel ulang lingkungan Anda, sehingga mengurangi efek samping, coba
$ 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
Jadi perintah 'bagus' yang Anda jalankan melalui sudo mungkin sebenarnya menjadi biner yang berbeda.
$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens:
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)
Jawaban terlambat:
Jika akses sudo Anda terbatas pada program-program tertentu ( foo
dan bar
, misalnya), maka Anda tidak akan memiliki otoritas untuk menjalankan sudo nice foo
, tetapi akan diizinkan untuk berjalan nice sudo foo
.
nice bash -c 'ps -p $$ -o pid,ni,comm'
, dansudo nice bash -c 'ps -p $$ -o pid,ni,comm'
, dannice sudo bash -c 'ps -p $$ -o pid,ni,comm'
. Ketiganya harus menunjukkan kepada Anda nilai bagus untuk id proses ($$) dari shell yang dihasilkan.