Ini sangat mudah dilakukan:
#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"
Ketika pengguna saat ini bukan root, jalankan ulang skrip melalui sudo
.
Perhatikan bahwa saya menggunakan sudo
di sini bukan su
. Ini karena memungkinkan Anda mempertahankan argumen. Jika Anda menggunakan su
, perintah Anda harus su -c "$0 [email protected]"
yang akan merusak argumen Anda jika memiliki spasi atau karakter shell khusus.
Jika shell Anda adalah bash, Anda dapat menghindari panggilan eksternal ke whoami
:
(( EUID != 0 )) && exec sudo -- "$0" "[email protected]"
Anda juga dapat memeriksa UID:
if [ $(id -u) != 0 ]; then
echo "You're not root"
# elevate script privileges
fi
Anda dapat memanggil skrip itu sendiri dan memeriksa:
#! /bin/bash
if [ "root" != "$USER" ]; then
su -c "$0" root
exit
fi
...
File swap yang tumbuh secara dinamis di Debian
Login SSH tidak berfungsi menggunakan kunci Tanpa Kata Sandi?