Saya menulis skrip (sebenarnya kombinasi skrip dan makefile) yang menginstal dependensi eksternal: beberapa apt-get
perintah, beberapa git
kloning, membangun, menginstal, menambahkan pengguna ke grup, ...
Beberapa operasi dalam skrip ini memerlukan izin pengguna super, beberapa tidak.
Sampai sekarang saya telah menjalankan seluruh proses make dengan sudo, tetapi memiliki beberapa kelemahan:
git
repo yang saya klon dapatkanroot
sebagai pemilik, yang berarti saya tidak dapat memodifikasinya sesudahnya tanpasudo
atauchown
- skrip yang menambahkan pengguna ke grup tidak tahu pengguna mana yang akan ditambahkan sejak
whoami
kembaliroot
Apa cara terbaik untuk menjalankan sebagai superuser hanya perintah yang membutuhkannya? Idealnya proses ini masih mengharuskan saya untuk memasukkan sudo
kata sandi, tetapi hanya sekali pada awal proses instalasi. Maka akan melupakannya di akhir, tetapi tetap sepanjang waktu sampai saat itu (bisa memakan waktu beberapa jam).
Solusi yang saya temukan online meliputi:
sudo -v
pada awal naskah, tetapi jika saya mengerti benar kali ini. Skrip saya dapat berjalan selama beberapa jam- menjalankan skrip dengan
sudo
, tetapi perintah yang tidak perlu superusersudo -u $(logname) <command>
. Inilah yang saya lakukan sekarang, tetapi rasanya harus sebaliknya.
Idealnya, saya ingin skrip saya untuk:
- meminta kredensial pengguna super
- jalankan perintah normal sebagai pengguna yang login
- jalankan perintah sudo dengan kredensial yang dimasukkan pada langkah 1
sudo -k
untuk menutup sesi pengguna super
su $SUDO_USER -c command
untuk perintah yang dijalankan sebagai pengguna normal.
SUDO_USER
variabel lingkungan. Jika ada, ini akan berisi nama pengguna pengguna yang meminta sudo. Jadi, Anda dapat (sebagai root) chown $ SUDO_USER: $ SUDO_GID $ your_files. Demikian pula, Anda dapat memeriksa variabel-variabel ini sehingga perintah adduser Anda tahu pengguna mana yang akan ditambahkan.