Karena saya sesekali menggunakan Pi saya di atas SSH, saya telah belajar bahwa berbahaya untuk mengizinkan SSH mengakses perintah sudo. Karena itu, saya berencana untuk mematikan izin ini dalam waktu dekat. Tapi, ketika saya menginstal paket saya biasanya harus reboot. Saat ini, ini hanya diperbolehkan melalui superuser.
sudo reboot
Apakah ada cara saya bisa mengedit izin pengguna pi untuk mengizinkannya untuk reboot (dan menginstal) paket?
Bisakah saya memiliki beberapa akun dengan izin berbeda?
Terima kasih
Jawaban:
Untuk mengklarifikasi sedikit: Tidak ada "perintah sudo", hanya ada perintah yang membutuhkan hak akses root untuk beroperasi dengan benar dan
sudo
adalah perintah untuk memperolehnya untuk satu perintah:sudo
cukup jalankan perintah yang diberikan sebagai root (baca "sudo" sebagai imperatif) kalimat "pengguna super, lakukan sesuatu!"). Aturan tentang mana pengguna dapat melakukan hal ini tertulis dalam/etc/sudoers
. Pada instalasi Raspbian default, "pi" pengguna default telah mendapatkan izinnya dari baris ini:Ini berarti: "Pi 'pengguna pada SEMUA host diizinkan untuk beralih ke SEMUA pengguna dan TIDAK harus mengetik PASSWD-nya saat menggunakan SEMUA (baca: apa saja) perintah". (Saya menggunakan tata bahasa gila di sini untuk mempertahankan urutan baris .. catatan tentang mengapa ada cara untuk membedakan host: cara ini, file sudoers yang sama dapat didistribusikan ke beberapa mesin di jaringan sehingga admin jaringan memiliki lebih sedikit pekerjaan) .
Mungkin bisa menjalankan perintah menggunakan sudo tanpa mengeluarkan kata sandi admin adalah alasan mengapa Anda pikir itu berbahaya untuk menggunakan sudo di atas SSH (Saya belum pernah mendengar masalah umum dengan melakukan itu ... begitu juga Anda bisa jelaskan bahaya apa yang sebenarnya Anda maksudkan?).
Tentu Anda dapat memiliki banyak pengguna dengan izin berbeda. Tapi saya khawatir menggunakan sudo masih merupakan cara terbaik untuk mengelola izin ini.
Jadi, saya harap resep kecil ini adalah yang Anda butuhkan:
Ini akan membuat pengguna "admin", meminta kata sandi, membuat direktori rumahnya, dll.
Ini akan menempatkan pengguna "admin" ke grup pengguna "sudo" dan "adm". Dan karena izin dikelola di Linux dengan menambahkan pengguna ke grup pengguna, ini memberi pengguna "admin" semua hak istimewa dan izin yang ia butuhkan. Ada baris di
/etc/sudoers
dalamnya yang memungkinkan setiap pengguna yang ada di grup pengguna "sudo" untuk mengeksekusi perintah apa pun sebagai root; dan hak istimewa ini adalah apa yang kami butuhkan untuk pengguna admin (menambahkannya ke "adm" memungkinkannya untuk membaca beberapa file log/var/log
tanpa menggunakansudo
dan beberapa hal lainnya). Anda masih perlu menggunakansudo
saat Anda masuk sebagai admin - tetapi sekarang sudo lagi dan lagi meminta kata sandi admin setiap kali Anda tidak menggunakan sudo selama sekitar lima menit.Sekarang logoff dan logon sebagai "admin" pengguna. Periksa apakah
bekerja. Jika ya, Anda dapat mencabut beberapa hak istimewa dari pengguna "pi", karena Anda sekarang yakin bahwa pengguna admin Anda memiliki hak istimewa yang tepat:
Ini membuat pengguna "pi" keluar dari grup pengguna "sudo".
Ini akan memulai editor yang memungkinkan Anda untuk mengedit
/etc/sudoers
. Letakkan tagar (#
) sebelum baris dimulai dengan "pi", berkomentar (atau cukup hapus). Kemudian simpan dan keluar dari editor, visudo akan segera memuat kembali aturan privilege. Sekarang pengguna "pi" tidak lagi diizinkan untuk menggunakan sudo.Setelah itu, Anda dapat masuk kembali sebagai "pi" pengguna. Jika Anda ingin beralih ke admin untuk beberapa perintah, gunakan
su
("alihkan pengguna"):Jika Anda ingin menambahkan lebih banyak pengguna: gunakan
sudo adduser <name>
seperti di atas, lalu periksa daftar grup pengguna yang telah diperoleh "pi":Gunakan
sudo adduser <username> <groupname>
untuk menambahkan pengguna baru Anda ke beberapa grup pengguna ini, memungkinkan dia untuk menggunakan audio, video dipercepat, menggunakan perangkat yang dapat dicolokkan, dll. Jika tidak yakin, tambahkan dia ke semua grup pengguna ini (tetapi tidak untuk "sudo"!).sumber
visudo
adalah perintah yang akan menggunakan editor default Anda untuk mengedit file sudoers. Mengedit file ini tanpa itu bisa jadi menyebalkan dan tidak disarankan. Anda dapat mengubah editor pilihan Anda dengan menerbitkansudo update-alternatives --config editor
VISUAL=vim visudo
untuk kali ini saja. Tapi contoh yang bagus untuk mengubah program default, seperti editor.Ya, Anda dapat mengonfigurasi
sudo
hanya mengizinkan pengguna untuk menjalankan perintah tertentu dengan hak istimewa tambahan. Anda dapat mengubah ini di/etc/sudoers
file Anda , tetapi disarankan untuk tidak melakukan ini secara langsung tetapi gunakansudo visudo
perintah untuk ini.Dalam instalasi sistem default, Anda harus menemukan baris seperti itu:
Ini memberitahu
sudo
untuk memungkinkan penggunapi
untuk menjalankan semua cammand sebagairoot
pengguna tanpa memberikan kata sandi Anda dapat mengubah yang terakhirALL
dan menentukan daftar perintah yang dibatasi koma (dengan jalur lengkapnya) diizinkan untuk dijalankan. Dalam kasus Anda, Anda harus mengubah baris ini menjadi:Perhatikan bahwa ada satu baris lagi dalam
sudoers
mempengaruhipi
pengguna:Baris ini memungkinkan semua pengguna dalam grup
sudo
(%
karakter di depan nama berarti itu adalah nama grup dan bukan nama pengguna) menjalankan SEMUA kata sandi asalkan mereka tahu kata sandi SENDIRI . Jika Anda meninggalkan baris ini, pengguna akan dapat menjalankan semua perintah lain tetapi akan dimintai kata sandi.pi
Jika Anda ingin mencegah hal ini terjadi, Anda dapat menghapus baris ini atau menghapus pengguna
pi
darisudo
grup.Setelah membuat perubahan pada
/etc/sudoers
file Anda mungkin ingin memeriksa bahwa itu benar-benar melakukan apa yang Anda inginkan dengan memanggilsudo -l -U pi
perintah.Tentu saja Anda dapat membuat akun yang berbeda dan mengonfigurasi
sudoers
memberi mereka akses ke berbagai perintah.sumber
Mei 2018, Konsep ini masih akurat tetapi prosedurnya telah berubah dengan versi yang lebih baru:
Pertama, file harus diedit langsung di vi atau nano atau leafpad atau emacs - mana saja yang merupakan editor teks favorit Anda.
Pi nama pengguna tidak disebutkan dalam file ini:
dan baris terakhir dari file ini adalah ini:
Ini adalah direktori yang berisi file bernama
yang berisi satu baris ini
Yang memiliki efek tidak meminta perintah sudo apa pun selama saya masuk sebagai pengguna pi. (perhatikan sintaksnya persis seperti ini)
Ini bagus.
Baris grup
%sudo ALL=(ALL:ALL) ALL
masih ada sebagaiJadi untuk menjawab bagian pertama dari pertanyaan:
Ketika saya memindahkan file /etc/sudoers/sudoers.d/010_pi-nopasswd mengajukan satu tingkat direktori untuk membuat gagal memasukkan, kemudian menunggu 15 menit, itu menyebabkan sistem Raspbian saya meminta kata sandi saya sendiri saat menggunakan sudo, hanya seperti sistem Ubuntu 14.04 LTS saya dulu.
Kemudian ketika saya memindahkannya kembali ke tempatnya, bahkan setelah 10 menit itu tidak lagi mendorong saya.
Tidak perlu reboot. Voila, tidak perlu kata sandi saat menggunakan sudo
Sistem pengujian lubuntu 14.04 LTS saya memiliki pengaturan yang sama kecuali bahwa file 010_pi-nopasswd tidak ada. lubuntu diinstal dengan pi sebagai pengguna root. Itu mendorong saya untuk setiap kali saya menggunakan sudo, kemudian tidak meminta saya selama 10 menit sesudahnya.
Saya menambahkan file yang sama ini ke sistem Ubuntu seperti cara Raspbian diatur, (ingat untuk chmod 0440 pada file ini saat Anda masih berada di jendela 10 menit) - dan
Voila, itu tidak lagi meminta saya untuk kata sandi saya sendiri ketika saya masuk sebagai pi bahkan setelah 15 menit.
Sekali lagi, perubahan terjadi secara instan tanpa perlu reboot.
Ini adalah jawaban Mei 2018 untuk cara menonaktifkan dan mengaktifkan prompt untuk penggunaan perintah sudo saat login sebagai pengguna root pi. Pengguna dan grup lain dapat dikonfigurasi dengan cara yang sama.
--UPDATE untuk Ubuntu 16.04 LTS Sistem ini juga sangat mirip. Namun, perbedaan terbesar adalah bahwa 16,04 memiliki banyak izin file yang lebih ketat sehingga pekerjaan harus dilakukan dalam
su
mode. Jika Anda lupa kata sandi root Anda, Anda dapat mengatur ulang dari prompt normal Anda dengan menggunakansudo passwd root
Kemudiansu
perintah akan bekerja dan Anda bisa pergi dari sana.sumber
sudoers
biasanya dilakukan pada saat pengguna dibuat. Gunakan Contoh: Anda akan perhatikan bahwa string perintah umumsudo apt-get update && sudo apt-get upgrade
memanggil sudo dua kali namun menyebalkan karena mungkin berhenti dan meminta kata sandi lagi sebelum peningkatan. Jadi saya menetapkan milik saya untuk tidak pernah meminta satu nama login saya (pi) dan juga kemudian menggunakannyasudo apt-get update -y && sudo apt-get upgrade -y
sehingga tidak akan berhenti untuk meminta OK untuk membuat perubahan yang cukup besar. Untuk membuatnya lebih mirip Unix. Lakukan saja apa yang saya minta, dan bahkan jika saya pergi saya ingin itu selesai.Lebih aman untuk mengizinkan akses sudo melalui SSH daripada mengizinkan pengguna mana pun untuk menginstal paket. Jika Anda benar-benar khawatir tentang hal itu, ubah garis
/etc/sudoers
dari:untuk
Itu berarti Anda akan dimintai kata sandi saat pertama kali menggunakan sudo dalam sesi apa pun, dan sekali lagi setelah batas waktu beberapa menit. Anda tidak dapat mengedit
/etc/sudoers
secara langsung; gunakansudo visudo
untuk melakukannya.Sepertinya Krzysztof masuk dengan jawaban di sana. Apakah Anda benar-benar yakin perlu me-reboot setiap kali Anda menginstal paket baru? Kecuali Anda menginstal kernel atau firmware baru, tidak banyak lagi yang perlu reboot. Ini adalah OS berkualitas yang kami miliki di sini ...
sumber
timestamp
batas waktu adalah ide yang bagus. Secara default 15 menit, BTW. Perhatikan bahwaPASSWD
default (jikaNOPASSWD
tidak ditentukan sebelumnya dalam daftar perintah ini). Perhatikan juga bahwa/etc/sudoers
dapat diedit langsung tanpa masalah jika Anda tahu apa yang Anda lakukan. Menggunakanvisudo
membuat perubahan pada file sementara mencegah file ditulis secara otomatis di tengah-tengah perubahan (yang dapat menyebabkan kesalahan sintaks dan / atau masalah keamanan), itu mengunci file ini terhadap beberapa pengeditan simultan dan melakukan beberapa pemeriksaan sintaksis sebelum menulis file.Sebagai alternatif dari apa yang dikatakan scruss, hapus
/etc/sudoers.d/010_pi-nopasswd
file dengan menjalankansudo rm /etc/sudoers.d/010_pi-nopasswd
. Jauh lebih mudah dan lebih aman daripada mengedit file sudoers utama, yang dapat merusak sudo.sumber