Jalankan skrip shell sebagai pengguna lain yang tidak memiliki kata sandi

Saya ingin menjalankan skrip dari shell ubuntu utama sebagai Pengguna berbeda yang tidak memiliki kata sandi.

Saya memiliki hak istimewa sudo penuh, jadi saya mencoba ini:

sudo su -c "Your command right here" -s /bin/sh otheruser

Kemudian saya harus memasukkan kata sandi saya, tetapi saya tidak yakin apakah skrip itu sekarang benar-benar berjalan di bawah pengguna itu.

Bagaimana Saya bisa mengonfirmasi bahwa skrip benar-benar berjalan di bawah pengguna itu sekarang?

Anda dapat melakukannya dengan su atau sudo, tidak perlu keduanya.

sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"' 

Bagian yang relevan dari man sudo:

-H   The -H (HOME) option requests that the security policy set     the HOME environment variable to the home directory of the     target user (root by default) as specified by the password     database.  Depending on the policy, this may be the default     behavior.
-u user     The -u (user) option causes sudo to run the specified      command as a user other than root.  To specify a uid      instead of a user name, use #uid.  When running commands as      a uid, many shells require that the '#' be escaped with a      backslash ('\').  Security policies may restrict uids to      those listed in the password database.  The sudoers policy      allows uids that are not in the password database as long      as the targetpw option is not set.  Other security policies      may not support this.

su hanya dapat beralih pengguna tanpa memberikan password jika Anda root. Lihat jawaban Caleb

Anda dapat memodifikasi /etc/pam.d/su file untuk memungkinkan su tanpa password. Lihat ini jawaban.

Jika Anda mengubah file auth Anda untuk berikut ini, setiap pengguna yang merupakan bagian dari kelompok somegroup bisa su untuk otheruser tanpa password.

auth       sufficient pam_rootok.soauth       [success=ignore default=1] pam_succeed_if.so user = otheruserauth       sufficient   pam_succeed_if.so use_uid user ingroup somegroup

Kemudian uji dari terminal

rubo77@local$ su otheruser -c 'echo "hello from $USER"'hello from otheruser

Jika Anda ingin menggunakan su alih-alih sudo, saya yakin Anda dapat menggunakan sesuatu seperti ini:

su - <username> -c "<commands>"
  • - akan mensimulasikan login dari pengguna tertentu
  • -c mengatakan bahwa Anda ingin menjalankan perintah

ps. Sayangnya saya tidak dapat menginstal ruby menggunakan rvm dengan metode ini, tetapi itu mungkin tidak terkait.

Jawaban di atas sangat berguna bagi saya butto menjawab pertanyaan yang sebenarnya...

Bagaimana Saya bisa menegaskan bahwa skrip benar-benar berjalan di bawah pengguna itu sekarang?-

Gunakan:

ps -ef | grep <command-name>

Outputnya harus menyertakan skrip Anda dan pengguna sebenarnya yang menjalankannya.Orang - orang pada sistem seperti BSD, misalnya MAC dapat menemukan informasi serupa dengan:

ps aux | grep <command-name>

Pastikan Anda beralih ke pengguna root dengan perintah sudo su dan kemudian gunakan perintah

su user -s <command>

Misalnya: su www-data -s bin/magento cache:clean

Aku punya masalah yang sama.Cukup ketik perintah screen -dmS testscreen ini akan membuat layar terpisah pada akun pengguna non-sudo Anda dan kemudian Anda dapat mencatatnya dan memeriksa apakah layar ini ada di sana screen -ls.

Anda dapat menggunakan sudo untuk melakukan hal ini. Pertama, Anda perlu memodifikasi /etc/sudoers file untuk menambahkan aturan yang memungkinkan hudson pengguna untuk menjadi pengguna lain untuk script yang bersangkutan. Mari kita asumsikan Anda memiliki user1 akun yang perlu dijalankan /usr/local/bin/my_script.sh.

Lari visudo untuk memodifikasi sudoers file.Kemudian, gunakan yang berikut ini sudo perintah untuk menjalankan script dari hudson.

Sangat penting bahwa Anda menggunakan visudo untuk memodifikasi sudoers file untuk memeriksa file untuk kesalahan sebelum meletakkannya di tempat. Juga, saya sarankan membaca cepat man sudoers untuk memahami dengan jelas apa yang dilakukan di atas sebelum menambahkannya ke konfigurasi Anda.

Saya menggunakan"ssh & quot; menunjuk ke mesin lokal yang sama.Ini memungkinkan saya untuk menjalankan skrip shell atau perintah tanpa kata sandi.

ssh target-user@localhost script-to-execute

Pertama, saya memastikan pengguna host menyimpan kunci publiknya ke pengguna target (di mesin yang sama).Kemudian saya menjalankan perintah ssh yang saya tunjukkan di atas.

Hasilnya, adalah perintah/skrip yang dijalankan sebagai pengguna target, bahkan tanpa memasukkan kata sandi.

< kode>sudo-u<pengguna > & lt;perintah & gt;
< / kode > < / pra>