Kurangi hak istimewa dalam skrip bash

0

Apakah mungkin untuk menelepon dari skrip bash, dijalankan sebagai sudo, skrip lain dengan hak pengguna normal?

Pilihan lain adalah menjalankan perintah tertentu sebagai pengguna normal tetapi keseluruhan skrip akan dijalankan sebagai superuser.

PS Yang ingin saya lakukan adalah mengkustomisasi Launcher dari dalam skrip instalasi yang harus dijalankan sebagai sudo.

Joe
sumber
@Zanna Bukankah sebaliknya, untuk meningkatkan hak istimewa?
Henning Kockerbeck
@Zanna Ah, begitu. Tapi ada yang menarik sudo -u username command, lihat jawaban saya di bawah ini. Jadi su -u username -c commandmungkin layak untuk dilihat.
Henning Kockerbeck
@HenningKockerbeck bagus, terangkat :)
Zanna

Jawaban:

1

Ada beberapa cara. Jika Anda hanya perlu menjalankan satu perintah tanpa parameter apa pun, Anda dapat menggunakannyasudo -u <username>

#!/bin/bash
whoami
sudo -u otheruser whoami
whoami

Tetapi jika Anda perlu menjalankan beberapa perintah, perintah dengan parameter atau apa pun dengan spasi kosong di dalamnya, metode itu tidak berfungsi.

#!/bin/bash
ls /some/dir
sudo -u otheruser ls /some/dir # not working as expected
ls /some/dir

Itu juga tidak membantu untuk mengutip perintah seperti sudo -u otheruser "ls /some/dir".

Dalam kasus tersebut, Anda dapat dengan mudah beralih pengguna su

#!/bin/bash
whoami; ls /some/dir
su otheruser -c "whoami; ls /some/dir"
whoami; ls /some/dir
Henning Kockerbeck
sumber
Saya tidak bisa menggunakan parameter "-u" di su
Joe
Tidak berhasil, saya mencobanya tetapi tampaknya tidak berpengaruh
Joe
@Joe Saya baru saja menguji contoh script dengan susaya uraikan di atas lagi, ia melakukan apa yang seharusnya dilakukan. Apa hasil dari whoamidi satu sisi dan su otheruser -c "whoami"di sisi lain? Jika Anda memulai skrip dengan sudo, yang pertama harus memberikan "root", yang kedua nama pengguna yang tidak diistimewakan (dalam contoh, "pengguna lain").
Henning Kockerbeck