GNU/Linux >> Belajar Linux >  >> Linux

Meminta pengguna untuk login sebagai root saat menjalankan skrip shell

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

...

Linux
  1. Cara Menonaktifkan Login Pengguna Root melalui SSH

  2. Tidak Dapat Menghapus File, Bahkan Saat Menjalankan Sebagai Root?

  3. Perintah Linux untuk memeriksa apakah skrip shell sedang berjalan atau tidak

  1. Bagaimana Cara Menjalankan Perintah Sebelum Login Pengguna Di Linux?

  2. Jalankan skrip shell di shell saat ini dengan izin sudo

  3. Jalankan skrip shell sebagai pengguna yang berbeda

  1. Bagaimana Cara Menjatuhkan Hak Istimewa Root Dalam Skrip Shell?

  2. Pergantian Riwayat Gagal Saat Diimplementasikan Dalam Script Shell?

  3. Cara Membuat Script Shell Selalu Jalankan Sebagai Root?