質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

6380閲覧

sudo visudoでシェル操作をパスワード不要の状態にすることができない

Y_N

総合スコア13

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

1グッド

0クリップ

投稿2017/06/01 04:49

###前提・実現したいこと
バッチファイルでシェルを動かすということを行っています。
具体的には以下の処理をバッチファイルで行おうとしています。

・bashでUbuntu環境にアクセスする(使用OSはwin10)
・root権限を取得する
・ホームディレクトリに移動し、ホームディレクトリにあるシェルを動かす

###発生している問題・エラーメッセージ
直近の問題はsudo visudoで一部のシェルのみをパスワード不要で実行するという作業がうまくできません。

###該当のソースコード

@echo off bash -c 'sudo -i ./suto.sh' ```sudo visudo 追加行 <user> ALL=NOPASSWD: (ここの内容が分かりません) 宜しくお願いします。
KSwordOfHaste👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

訂正1: 質問者さんのコメントにより、自分の回答が解決になっていない点に気づけました。質問者さんがコメントされているとおり、例えばユーザksohで/usr/bin/a.shとb.shのみパスワードなしで実行を許したいといった場合、sudoersの書き方で以下のようにすれば期待通りにできるのですね!

ksoh ALL=NOPASSWD: /usr/bin/a.sh,/usr/bin/b.sh

不勉強のため頓珍漢な回答をしてしまいました。大変失礼しました。

追記1: 最初/home/ksoh/a.shというようなコマンド例を想定して上の例を書きましたがセキュリティー上問題なので、/usr/bin/a.shのような例に訂正しました。

以下、元の回答

特定のユーザー例えばksohをpasswordなしでsudoコマンド実行可能にするにはsudo visudoで以下の行を追加すると可能になると思います

ksoh ALL=NOPASSWD: ALL

sudoグループの全ユーザーに対してpassword入力を不要にするなら以下となります。

%sudo ALL=NOPASSWD: ALL


ただし自分はbash on Linux on Windowsではなく普通のLinux 16.04LTS上でやっています。

投稿2017/06/03 03:40

編集2017/06/05 01:48
KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y_N

2017/06/05 00:43

ご回答頂き有り難うございます!! 結論から申し上げますと少し意味合いが違います。 (こちらの説明不足ですみません) ユーザーの権限をパスワード不要のものにするというよりかは、特定のユーザにおいてあるコマンドのみの権限を有効にするということを行おうとしています。 例えばroot権限でlsコマンドのみNOパスワードで実行したいというようなことを行おうとしていました。 結果的に下記内容をvisudoに記載し、 <user名> ALL=NOPASSWD:/user/bin/<シェルスクリプト名> 下記内容をbashで実行すれば、 sudo ./<シェルスクリプト名> 一部のシェルファイルをNOパスワードでroot権限を使用して実行できることが分かりました。 ご回答頂いた内容と少し異なりますが、ご回答くださったということでベストアンサーにさせていただきます。 有り難うございました!
KSwordOfHaste

2017/06/05 01:33

「一部のシェルのみを」という質問文を見て「シェルスクリプトへsetuidのような仕組みは使えないはずだから・・・」とハヤトチリしてしまい、sudoersの書き方で対処するという点に思い至りませんでした。 uid/guid ALL=NOPASSWORD: command1,commadn2,... のような書き方で「一部のコマンドのみ特権ユーザーとしての実行を許す」ということができるのですね。自分の方が勉強させていただきました。 質問者さんの質問内容は充分意図を表していると思います。自分の回答の方に解釈不足があり問題解決には不十分ですね。ゆえに本件のような場合には(面倒でなければ)「自己解決」としてクローズしていただくのが適切だと思います。閲覧者の皆さんに「KSwordOfHasteの回答は不十分であり」「回答者さんの解決方法が適切」であることが明確にわかりやすいからです! 大変失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問