GNU/Linux >> Linux の 問題 >  >> Linux

シェル スクリプトの実行時に root としてログインするようにユーザーに要求する

これは非常に簡単に実現できます:

#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"

現在のユーザーが root でない場合は、sudo からスクリプトを再実行します。 .

sudo を使用していることに注意してください su の代わりにここに .これは、引数を保持できるためです。 su を使用する場合 、あなたのコマンドは su -c "$0 [email protected]" でなければなりません 引数にスペースや特殊なシェル文字が含まれていると、引数が台無しになります。

シェルが bash の場合、whoami への外部呼び出しを回避できます。 :

(( EUID != 0 )) && exec sudo -- "$0" "[email protected]"

UID も確認できます:

 if [ $(id -u) != 0 ]; then
     echo "You're not root"
     # elevate script privileges
 fi

スクリプト自体を呼び出して確認できます:

#! /bin/bash

if [ "root" != "$USER" ]; then
  su -c "$0" root
  exit
fi

...

Linux
  1. シェルスクリプトで実装すると履歴置換が失敗しますか?

  2. ルートとして実行している場合でも、ファイルを削除できませんか?

  3. シェルスクリプトを常にルートとして実行する方法は?

  1. rootユーザーとしてjenkinsでシェルコマンドを実行しますか?

  2. ユーザーが選択的なコマンドを実行できるように制限する (Linux)

  3. シェルスクリプトでユーザーのパスワードを確認する

  1. SSH経由でrootユーザーのログインを無効にする方法

  2. Linuxでユーザーがログインする前にコマンドを実行する方法は?

  3. シェルスクリプトでルート権限を削除する方法は?