2012-01-09 8 views
18

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

+1

私は接続を理解していませんが、Rubyを実行するにはsudoersにユーザーを追加する必要がありますか? –

+0

Rubyとは関係ありません。 Rubyの中で実行しているスクリプトは、sudoの権限で実行するためにはルビを必要とするため、sudoの理由があります。 ruby​​の部分は心配しないでください。これはsudoersの編集についてです – nickw444

+0

'/ etc/sudoers'に1つのグループエントリを追加し、' sudoersを繰り返し更新するのではなく、 'ファイル? –

答えて

39

あなたでし単に直接/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 

chmod a+rxに、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カークrightly points out>>リダイレクトがその時点でスーパーユーザ権限を落としたシェルによって処理されるので、あなたが直接sudo echo ... >> /etc/sudoersを呼び出すことはできません。しかし、echo ... >> /etc/sudoersを含むスクリプトを実行していて、スクリプト自体にスーパーユーザー権限がある場合は、すべて正常に動作するはずです。

+0

完璧に働いた。ありがとうございます – nickw444

+1

'sudo echo'は動作しません。https://blogs.oracle.com/joshis/entry/sudo_echo_does_not_work また、デフォルトでsudoersファイルは読み取り専用です –

+0

@Jappie:OPは「完璧に働いた」と言っていますあなたの問題が何であるか分かりません。おそらく[[/ etc/sudoersをスクリプトから編集するにはどうすればよいですか?]](http://stackoverflow.com/q/323957/732016)を見てみてください。 – wchargin

4

ありsudoグループでもある、とあなたは(/etc/sudoersの一般的な構成のために)それにユーザーを追加することができ

5

いいえ、まっすぐエコーは動作しません、あなたはサブシェルで実行する必要があります。代わりにこれを試してみてください:

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

+0

それです、sudoersファイルの0440の許可はそれをしません – pylover

-1

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

あなたはログインしたら、あなたは今、以下の以下のコマンドを試してください:

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

    adduserの[ユーザー名]

  2. は単に

    がここにコードを入力すると入力して、ユーザ 編集visudoをファイルにユーザーに

    passwdの[ユーザー名]

  3. グラントのroot権限をパスワードを追加します。

次のコード行を検索:オリジナルのポストは、このリンク上で、このようなCentos 6 – Creating sudoers user

0

他の答えを見つけるでしょう

[username] ALL=(ALL) ALL 

: ルートALL =(ALL)ALL

は次に以下のコードを追加しますサブシェルの作成は機能しますが、環境変数を使用する場合は機能しない可能性があります。私が見つけた一つの選択肢は、私にとって本当に素敵な演奏:

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

これは言われて、visudoを介して、スクリプト経由でsudoersファイルを変更していない場合は後知恵が... 20/20である私は真剣に右のファイルをバックアップを作成することをお勧めしますあなたがpkexecなしにsudoの権利へのアクセスを失うことが最初以来、権限及び内容、物理的なアクセスまたは再起動など

sudo cp /etc/sudoers /etc/sudoers.bak 
1

上のRedHatベースのディストリビューションを使用します。

su - root 

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

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

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

+0

https://access.redhat。 com/documentation/ja-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/ch02s03.html –

関連する問題