Apa yang sebenarnya dilakukan oleh "sudo-s"?

26

Saya menggunakan ubuntu 10.04.

Saya perhatikan bahwa setelah saya menjalankan " sudo -s " di terminal, prompt berubah dari

" XXX @ XXX "

untuk

" root @ XXX ",

tampaknya itu berubah menjadi root privilege.

Tetapi ketika saya memeriksa dokumentasi perintah "sudo" di sini , itu menjelaskan cerita lain tentang "sudo -s", adakah yang bisa menjelaskan kepada saya apa yang tepatnya dilakukan " sudo -s "?

Leem
sumber
6
Anda harus menanyakan hal ini di askubuntu.com
7
Mengapa askubuntu.com? sudohampir tidak spesifik untuk Ubuntu ...
Dave Sherohman
kemungkinan rangkap dari Perbedaan antara perintah "su -s" dan "sudo -s"
Linker3000

Jawaban:

9

Keduanya tidak benar-benar tidak konsisten - sudoperintah selalu mengubah pengguna, baik untuk me-root, atau ke pengguna yang Anda tentukan dengan -uswitch. Yang -sdilakukan hanyalah menyediakan jalan pintas untuk memulai shell sebagai pengguna itu. Ini benar-benar setara dengan:

sudo $SHELL

kecuali bahwa kemungkinan akan mundur ke /bin/shatau sesuatu jika SHELLtidak diatur.

TomH
sumber
6

sudo -smenjalankan shell yang ditentukan dalam $SHELLvariabel lingkungan Anda sebagai superuser / root. Anda dapat menentukan pengguna lain menggunakan -u.

The $SHELLvariabel lingkungan berisi path shell login default pengguna. Pengaturan aktual untuk program shell default biasanya di etc/passwd. Bergantung pada apa yang telah Anda lakukan dalam sesi Anda saat ini, variabel $ SHELL mungkin tidak mengandung program shell yang sedang Anda gunakan. Jika Anda masuk secara otomatis dengan zsh misalnya, tetapi kemudian memanggil bash, $ SHELL tidak akan berubah /bin/zsh.

Tampilkan program pengguna dan shell saat ini: echo $(whoami) is logged in and shell is $0

  • whoami mencetak nama pengguna yang sedang digunakan pengguna.
  • $0 berisi nama / jalur program yang sedang berjalan (program shell dalam kasus ini).
RKelley
sumber
3

Dari manual:

sudo memungkinkan pengguna yang diizinkan untuk menjalankan perintah sebagai superuser atau pengguna lain, sebagaimana ditentukan dalam file sudoers.

-s Shell, menjalankan shell yang ditentukan oleh variabel lingkungan SHELL jika diatur atau shell seperti yang ditentukan dalam passwd (5).

Lebih serius lagi, sudo -s menjalankan variabel lingkungan shell. Karena Anda tidak menambahkan variabel apa pun itu berjalan seperti yang ditentukan dalam passwd, dan menghubungkan Anda sebagai root.

Anarko_Bizounours
sumber
1
Tidak jelas dari manual bahwa jika Anda tidak menyediakan pengguna, defaultnya adalah root. Anda harus membaca deskripsi untuk -uopsi untuk mempelajarinya. Tetapi bagi seseorang yang tidak terbiasa sudo, mereka tidak akan tahu untuk melihatnya -u.
wisbucky
0

Kedengarannya seperti sedang membuat contoh lain dari shell di atas shell saat ini, tetapi dengan hak akses root. Saya berani bertaruh bahwa setelah Anda melakukannya sudo -sjika Anda mengetik keluar, Anda akan kembali ke shell asli.

Noah Duncan
sumber
-1

sudo -s memungkinkan Anda menjalankan perintah yang Anda pra-otorisasi [lihat / etc / sudoers], mungkin dengan meminta Anda untuk mengkonfirmasi ID Anda saat ini.

Eric Herlitz
sumber