web-dev-qa-db-ja.com

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

シェルスクリプトを使用してsudoersファイルにユーザーを追加することはできますか?私は探し回っていましたが、まだ何も見つかりません。

25
nickw444

/etc/sudoersファイルに直接echo(もちろん昇格した特権で)することができます:

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.shchmod a+rx itに保存し、ターミナルウィンドウから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

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

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

nickw444@laptop ~ $ Sudo ./addsudousers.sh `cat listofusers.txt`

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

Edit:Jappie Kirk 正しく指摘Sudo echo ... >> /etc/sudoersであるため直接>>を呼び出すことができない_リダイレクトはシェルによって処理され、シェルはその時点でスーパーユーザー権限を削除しました。ただし、echo ... >> /etc/sudoersを含むスクリプトを実行し、スクリプト自体にスーパーユーザー特権がある場合、すべてが正常に機能するはずです。

43
wchargin

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

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

9
Apollo

Sudoグループもあり、ユーザーを追加できます(一般的な構成の/etc/sudoers

adduser [ユーザー名] Sudo

on RedHatベースディストリビューションの使用:

su - root

パスワードを入力してから、

echo 'YOURUSERNAME ALL=(ALL:ALL) ALL' >> /etc/sudoers

sudoersファイルにユーザーを追加します。

2
Mahdi Rashidi

マシンにルートとしてログインします。 rootユーザーは、新しいユーザーを追加する権限を持つ唯一のユーザーです。

ログインすると、次のコマンドを試すことができます。

  1. 新しいユーザーを作成します。

    adduser [ユーザー名]

  2. ユーザーにパスワードを追加

    passwd [ユーザー名]

  3. ユーザーにルート権限を付与する単に入力するだけでvisudoファイルを編集します

    ここにコードを入力してください

次のコード行を見つけます:root ALL =(ALL)ALL

次に、このコードを以下に追加します。

[username] ALL=(ALL) ALL

元の投稿はこのリンクにあります Centos 6 – sudoersユーザーの作成

0
Jur P

パスワードを使用してSudoグループにユーザーを作成する単一行。

useradd -p $(openssl passwd -1 [〜#〜] password [〜#〜][〜#〜] username [〜#〜] -s/bin/bash -G須藤

0

サブシェルの生成などの他の回答は機能しますが、環境変数を使用する場合は機能しない場合があります。私が見つけた1つの選択肢は私にとって本当にうまくいきました:

echo "%<user>      ALL=(ALL) ALL" | Sudo tee -a /etc/sudoers > /dev/null

つまり、後知恵は20/20です... visudoを使用せずにスクリプトを使用してsudoersを変更する場合、pkexec、physicalなしでSudo権限へのアクセスを失う可能性があるため、適切なファイルのアクセス許可と内容でバックアップを作成することを真剣にお勧めしますアクセスまたは再起動など。

Sudo cp /etc/sudoers /etc/sudoers.bak
0
Luke Exton