izinkan sudo ke pengguna lain tanpa kata sandi

46

Saya ingin dapat 'su' ke pengguna tertentu, memungkinkan saya untuk menjalankan perintah apa pun tanpa kata sandi dimasukkan.

Sebagai contoh:

Jika login saya adalah user1 dan pengguna yang ingin saya 'su' adalah user2:

Saya akan menggunakan perintah:

su - user2

tapi kemudian saya diminta

Password:

zio
sumber
Minta kata sandi untuk pengguna lain. Setidaknya pengguna lain tahu apa yang telah dilakukan di bawah id-nya.
Global nomad
1
Ini tidak ada hubungannya dengan pengguna fisik lain. Kedua ID adalah milikku. Saya tahu kata sandi saat saya membuat akun. Saya hanya tidak mau harus mengetikkan kata sandi setiap waktu.
zio
Apakah boleh untuk ssh pada pengguna atau apakah Anda perlu mewarisi satu shell pada khususnya dan membutuhkan su untuk bekerja?
bmike
1
@zio Kasus penggunaan yang bagus. Tidak open -na Skypebekerja untukmu
bmike

Jawaban:

66

sudo dapat melakukan hal itu untuk Anda :)

Perlu sedikit konfigurasi, tetapi setelah selesai Anda hanya akan melakukan ini:

sudo -u user2 -s

Dan Anda akan masuk sebagai pengguna2 tanpa memasukkan kata sandi.

Konfigurasi

Untuk mengkonfigurasi sudo, Anda harus mengedit file konfigurasi melalui: visudo. Catatan: perintah ini akan membuka konfigurasi menggunakan vieditor teks, jika Anda tidak nyaman dengan itu, Anda perlu mengatur editor lain (menggunakan export EDITOR=<command>) sebelum menjalankan baris berikut. Editor baris perintah lain yang terkadang dianggap lebih mudah adalah nano, jadi Anda akan melakukannya export EDITOR=/usr/bin/nano. Anda biasanya membutuhkan hak istimewa pengguna super untuk visudo:

sudo visudo

File ini disusun dalam bagian yang berbeda, alias, lalu default dan akhirnya pada akhirnya Anda memiliki aturan. Di sinilah Anda perlu menambahkan baris baru. Jadi Anda menavigasi di akhir file dan menambahkan ini:

user1    ALL=(user2) NOPASSWD: /bin/bash

Anda dapat mengganti juga /bin/basholeh ALLdan kemudian Anda bisa memulai perintah apapun sebagai user2 tanpa password: sudo -u user2 <command>.

Jika Anda ingin dapat beralih ke pengguna apa saja gunakan

user1    ALL=(ALL) NOPASSWD: /bin/bash

Memperbarui

Saya baru saja melihat komentar Anda tentang Skype. Anda dapat mempertimbangkan untuk menambahkan Skype secara langsung ke file konfigurasi sudo. Saya berasumsi Anda telah menginstal Skype di folder Aplikasi Anda :

user1    ALL=(user2) NOPASSWD: /Applications/Skype.app/Contents/MacOS/Skype

Maka Anda akan menelepon dari terminal:

sudo -u user2 /Applications/Skype.app/Contents/MacOS/Skype
Huygens
sumber
Ini jauh lebih rumit daripada ide kunci ssh, jadi gunakan ini kecuali Anda memerlukan kunci ssh untuk akses jarak jauh juga.
bmike
2
Satu hal yang perlu diperhatikan dari perspektif keamanan adalah bahwa menentukan perintah tertentu menyiratkan bahwa itu harus menjadi perintah read-only untuk pengguna1; Jika tidak, mereka dapat menimpa perintah dengan sesuatu yang lain dan menjalankannya sebagai user2. Dan jika Anda tidak peduli tentang itu, maka Anda mungkin juga menentukan bahwa user1 dapat menjalankan perintah apa pun sebagai user2 dan karenanya memiliki konfigurasi sudo yang lebih sederhana.
Stan Kurdziel
Poin bagus @StanKurdziel! Meskipun ini adalah sesuatu yang harus diperhatikan, sangat jarang memiliki sistem yang dapat dieksekusi yang dapat ditulis oleh pengguna kecuali Anda melakukan root tetapi dalam hal ini Anda tidak perlu sudo ;-) Tetapi Anda benar untuk menambahkan komentar ini karena sangat jarang bahwa saya mungkin mengabaikannya lebih dari satu kali.
Huygens
Untuk membuatnya lebih dekat dengan perilaku su - user2alih-alih su user2, perintah mungkin harus melibatkan semua sudo -u user2 -i, untuk mensimulasikan login awal sebagai user2
Gert van den Berg
4

Saya akan mengatur kunci ssh publik / pribadi untuk akun kedua dan menyimpan kunci di akun pertama.

Maka Anda bisa menjalankan perintah seperti:

 ssh user@localhost -n /Applications/Skype.app/Contents/MacOS/Skype &

Anda masih memiliki masalah di mana Skype menjadi bingung karena dua contoh berjalan pada satu akun pengguna dan file yang dibaca / ditulis oleh program itu mungkin bertentangan. Ini juga mungkin bekerja cukup baik untuk kebutuhan Anda dan Anda tidak perlu iPod touch untuk menjalankan instance Skype kedua Anda.

bmike
sumber
1
Ini adalah solusi aman yang bagus untuk kasus umum masuk bebas kata sandi ke akun mana pun di host mana pun, tapi saya akan mengatakan itu mungkin berlebihan ketika kedua akun berada di host yang sama dan milik pengguna yang sama.
calum_b
@ skottishwildcat Ini jauh lebih aman daripada alternatif skrip kata sandi dan mengumpankannya dalam teks yang jelas atau menggunakan variabel dan menyimpan kata sandi dalam gantungan kunci dan menggunakan alat seperti expectuntuk skrip interaksi. Saya hanya menggunakan sudo su - blahdan mengetik kata sandi saya. Saya pikir jawaban lain cukup baik untuk membuat ini sebagai komentar.
bmike
Oh, saya tentu tidak menyarankan jawaban Anda harus dihapus ... Saya bahkan tidak memilih, itu jawaban yang sangat bagus.
calum_b
Kami tampaknya setuju sepenuhnya - terima kasih atas penambahannya - silakan mengeditnya menjadi jawaban jika Anda dapat memperbaikinya.
bmike
Solusi yang diterima ( sudo -u user2 <...>) memang memiliki keuntungan yang tidak dapat digunakan dari jarak jauh, yang mungkin membantu keamanan - tidak ada kunci pribadi untuk pengguna1 yang dapat dicuri.
Gert van den Berg