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

シェル スクリプトを使用してユーザーを sudoers に追加する

いいえ、直接のエコーは機能しません。サブシェルで実行する必要があります。代わりにこれを試してください:

sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"


単純に echo できます (もちろん昇格した権限で) /etc/sudoers に直接 ファイル:

sudo -i
echo 'nickw444  ALL=(ALL:ALL) ALL' >> /etc/sudoers
#             ^^
#             tab

(ユーザー名と最初の ALL の間のタブ文字に注意してください )

または、スクリプトの場合:

#!/bin/bash
# Run me with superuser privileges
echo 'nickw444  ALL=(ALL:ALL) ALL' >> /etc/sudoers

次に somefile.sh に保存します 、 chmod a+rx sudo ./somefile.sh を実行します 端末ウィンドウから。

複数のユーザーを追加するには、スクリプトを次のように変更します。

#!/bin/bash

while [[ -n $1 ]]; do
    echo "$1    ALL=(ALL:ALL) ALL" >> /etc/sudoers;
    shift # shift all parameters;
done

次に、次のようにスクリプトを実行します (addsudousers.sh として保存したと仮定します)。 ):

sudo ./addsudousers.sh bob joe jeff

つまり、スペースで区切られています。

ファイルから名前を読み取るには:

[email protected] ~ $ sudo ./addsudousers.sh `cat listofusers.txt`

listofusers.txt もスペースで区切る必要があります。

編集: Jappie Kirk は、sudo echo ... >> /etc/sudoers を直接呼び出すことはできないと正しく指摘しています。 >> リダイレクションはシェルによって処理され、その時点でスーパーユーザー権限が削除されています。ただし、echo ... >> /etc/sudoers を含むスクリプトを実行すると、 スクリプト自体にはスーパーユーザー権限があり、すべて問題なく動作するはずです。


Linux
  1. Sudoersファイルにエラーがありますか?修正方法は次のとおりです。

  2. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  3. sudoers 構成ファイルでユーザーの「sudo su」を無効にする方法

  1. 「sudo:/etc/sudoers is world writable」 – sudoers ファイルのパーミッションを修正する方法

  2. /etc/sudoers ファイルを編集する正規表現パターン

  3. コマンドラインから非対話的に sudoer を追加する

  1. sudo プロンプトでパスワードを入力するときのフィードバックを無効にする

  2. ディレクトリのすべてのファイルをシェル スクリプトに含める方法 (この場合は /etc/init.d/iptables)

  3. /etc/sudoers - 侮辱 - 侮辱のリストを追加するには?