Saya sedang menulis skrip shell, yang perlu dijalankan dengan hak akses root.
Saya dapat memeriksa apakah pengguna memiliki hak akses root dengan sudo -nv || echo "no sudo"
, tapi itu tidak membantu saya, jika kredensialnya masih di-cache oleh sudo
, tapi dia tidak memanggil skrip saya dengan itu. Jadi saya tidak punya cara untuk bereaksi terhadap pengguna, tidak memanggil skrip saya dengan sudo.
Saya bisa memasukkan sudo
di depan setiap perintah yang membutuhkannya, jadi hanya memeriksa untuk melihat apakah pengguna memiliki hak akses root sudah cukup, tetapi menurut saya, harus ada solusi yang lebih baik.
Saya mencari perintah, yang dapat saya masukkan ke dalam skrip saya, yang meminta hak akses root kepada pengguna dan, jika disediakan, mengeksekusi sisa skrip, seolah-olah pengguna memanggilnya dengan hak akses root.
Yang saya inginkan:
#!/bin/bash
if ! command; then # what I'm looking for
echo "This script needs root privileges."
exit 1
fi
mv /bin/cmd1 /bin/cmd2 # requires root
Diedit 2 kali
Jawaban yang Diterima:
Uji apakah Anda root, dan jika tidak, mulai ulang dengan sudo
, misalnya:
#! /bin/bash
if [[ $EUID -ne 0 ]];
then
exec sudo /bin/bash "$0" "[email protected]"
fi