Bagaimana cara mengubah izin pengguna pi sudo; bagaimana cara menambahkan akun lain dengan izin yang berbeda?

14

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

xxmbabanexx
sumber
1
Apakah ada jawaban yang telah membantu? Adakah di antara mereka jawaban yang Anda cari? Silakan tandai itu sebagai dijawab.
Anders
Iya. Jika Anda masih tertarik, saya memperbaruinya hingga Juni 2017 - pertanyaan ini ditanyakan 4 tahun 2 bulan yang lalu, dan mengarahkan saya ke cara untuk menyelesaikan masalah hari ini. Lihatlah jawabannya di bawah ini:
SDsolar

Jawaban:

22

Untuk mengklarifikasi sedikit: Tidak ada "perintah sudo", hanya ada perintah yang membutuhkan hak akses root untuk beroperasi dengan benar dan sudoadalah perintah untuk memperolehnya untuk satu perintah: sudocukup 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:

pi ALL=(ALL) NOPASSWD: ALL

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:

$ sudo adduser admin

Ini akan membuat pengguna "admin", meminta kata sandi, membuat direktori rumahnya, dll.

$ sudo adduser admin sudo
$ sudo adduser admin adm

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/sudoersdalamnya 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/logtanpa menggunakan sudodan beberapa hal lainnya). Anda masih perlu menggunakan sudosaat 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

$ sudo apt-get update
$ sudo apt-get upgrade

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:

$ sudo deluser pi sudo
$ sudo deluser pi adm

Ini membuat pengguna "pi" keluar dari grup pengguna "sudo".

$ sudo visudo

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"):

$ su - admin

Jika Anda ingin menambahkan lebih banyak pengguna: gunakan sudo adduser <name>seperti di atas, lalu periksa daftar grup pengguna yang telah diperoleh "pi":

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input

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"!).

orithena
sumber
2
visudoadalah 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
earthmeLon
Atau Anda dapat mencoba ini VISUAL=vim visudountuk kali ini saja. Tapi contoh yang bagus untuk mengubah program default, seperti editor.
Anders
6

Ya, Anda dapat mengonfigurasi sudohanya mengizinkan pengguna untuk menjalankan perintah tertentu dengan hak istimewa tambahan. Anda dapat mengubah ini di /etc/sudoersfile Anda , tetapi disarankan untuk tidak melakukan ini secara langsung tetapi gunakan sudo visudoperintah untuk ini.

Dalam instalasi sistem default, Anda harus menemukan baris seperti itu:

pi ALL=(ALL) NOPASSWD: ALL

Ini memberitahu sudountuk memungkinkan pengguna piuntuk menjalankan semua cammand sebagai rootpengguna tanpa memberikan kata sandi Anda dapat mengubah yang terakhir ALLdan menentukan daftar perintah yang dibatasi koma (dengan jalur lengkapnya) diizinkan untuk dijalankan. Dalam kasus Anda, Anda harus mengubah baris ini menjadi:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown

Perhatikan bahwa ada satu baris lagi dalam sudoersmempengaruhi pipengguna:

%sudo   ALL=(ALL:ALL) ALL

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 pidari sudogrup.

Setelah membuat perubahan pada /etc/sudoersfile Anda mungkin ingin memeriksa bahwa itu benar-benar melakukan apa yang Anda inginkan dengan memanggil sudo -l -U piperintah.

Tentu saja Anda dapat membuat akun yang berbeda dan mengonfigurasi sudoersmemberi mereka akses ke berbagai perintah.

Krzysztof Adamski
sumber
1

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:

/etc/sudoers

dan baris terakhir dari file ini adalah ini:

#includedir /etc/sudoers.d

Ini adalah direktori yang berisi file bernama

010_pi-nopasswd

yang berisi satu baris ini

pi ALL=(ALL) NOPASSWD: ALL

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) ALLmasih ada sebagai

Jadi 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 sumode. Jika Anda lupa kata sandi root Anda, Anda dapat mengatur ulang dari prompt normal Anda dengan menggunakan sudo passwd rootKemudian superintah akan bekerja dan Anda bisa pergi dari sana.

SDsolar
sumber
Baru saja menemukan ini melalui Google - jadi jika saya mengikuti ini, pengguna masih perlu berada dalam grup sudoers, tetapi /etc/sudo.d mengontrol seberapa sering pengguna tertentu diminta kata sandi?
Lonstar
1
Ya. Anda sudah mendapatkannya. Menjadi anggota sudoersbiasanya dilakukan pada saat pengguna dibuat. Gunakan Contoh: Anda akan perhatikan bahwa string perintah umum sudo apt-get update && sudo apt-get upgradememanggil 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 menggunakannya sudo apt-get update -y && sudo apt-get upgrade -ysehingga 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.
SDsolar
0

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/sudoersdari:

pi ALL=(ALL) NOPASSWD: ALL

untuk

pi ALL=(ALL) PASSWD: ALL

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/sudoerssecara langsung; gunakan sudo visudountuk 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 ...

scruss
sumber
3
Menyebutkan timestampbatas waktu adalah ide yang bagus. Secara default 15 menit, BTW. Perhatikan bahwa PASSWDdefault (jika NOPASSWDtidak ditentukan sebelumnya dalam daftar perintah ini). Perhatikan juga bahwa /etc/sudoersdapat diedit langsung tanpa masalah jika Anda tahu apa yang Anda lakukan. Menggunakan visudomembuat 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.
Krzysztof Adamski
Saya pikir pembaruan OP yang jarang bahwa dia selalu mendapatkan kernel baru ... atau kolega menyuruhnya untuk reboot setiap kali, karena dia tidak ingin menjelaskan bagaimana OP dapat menemukan paket kernel dalam daftar pembaruan.
orithena
TNX untuk komentar ini, @Krzysztof. Saya membuat koreksi dalam jawaban saya. Dan Anda benar tentang pengeditan. Bahkan, pada mesin 16.04 saya, saya hanya memasukkan baris pi langsung ke file sudoers, karena sudoers.d hanya berisi readme. Saya meninggalkannya hanya karena, tetapi setidaknya izin pi sedang diproses. (Editor favoride saya adalah VI / VIM, btw, tetapi kadang-kadang akan menggunakan leafpad atau Idle. Belum menguasai emacs - 15 tahun adalah waktu yang lama - dan saya bisa melakukan lebih banyak, lebih cepat, lebih cepat daripada yang saya bisa di emacs , sejauh ini.) Terima kasih lagi.
SDsolar
0

Sebagai alternatif dari apa yang dikatakan scruss, hapus /etc/sudoers.d/010_pi-nopasswdfile dengan menjalankan sudo rm /etc/sudoers.d/010_pi-nopasswd. Jauh lebih mudah dan lebih aman daripada mengedit file sudoers utama, yang dapat merusak sudo.


sumber