web-dev-qa-db-ja.com

実行可能なbashスクリプトをSudo権限で実行しますか?

Ubuntu 18.04 Gnome de。

次の再起動にフラグを付けてWindowsのGrubエントリを選択する簡単なbashスクリプトファイルを作成しました。 Linux DEから直接Windowsをすばやく再起動します。

問題は、実行するファイルを変更するためにdconfを使用する必要があることです。これにより、ターミナルで実行をクリックして、パスワードを自動的に要求します。それ以外の場合は、ファイルを実行するだけでは何も実行されません。bcはパスワードの入力を待機しています。

このようなbashスクリプトファイルを固有のSudo権限で実行して、パスワードを要求する必要がないようにする方法はありますか?

[〜#〜] edit [〜#〜](@waltinatorに向けられていますが、コメントのフォーマットがひどいため):

そうだろう

/bin/kill

bashスクリプトファイルの場所と名前は?たとえば、私のbashスクリプトファイルの名前はrestart2windowsで、デスクトップにあります。

/home/myusername/Desktop/restart2windows

そのため、この行を/ etc/sudoersに追加するだけです(visudoを使用してそのファイルを編集すること、およびアドバイスどおりにsudoers.dを編集する必要があるかどうかはまだ不明です)。

myusername     mymachinename = NOPASSWD: /home/myusername/Desktop/restart2windows

これは正しいでしょうか?

編集2

私はvisudoを介してsudoersを編集してみました:

Sudo visudo

上記で提案した行をコメント行の下に追加しました:

#includedir /etc/sudoers.d

その後、デスクトップからbashスクリプトファイルを実行しようとしましたが、何も実行されませんでした。端末で実行することを選択した場合、端末はパスワード入力を待機しています。

これが非常にシンプルなbashスクリプトファイルの内容です。

#!/bin/bash
Sudo grub-reboot 2
Sudo reboot now

見つかりました この質問はここにあります そこにSudoを追加する必要があるようです? OPからの彼のコード行がOPのコード行と一致しないため、その質問に対するその回答に混乱しています。

編集3:

私はこの同じ投稿をUbuntuforums.orgにも投稿しました: https://ubuntuforums.org/showthread.php?t=2434878

2
BingBong

読んだ man sudoers-単一のコマンドへのパスワードなしのアクセスを許可します。読んだ man visudoも。

manページから:

  PASSWD and NOPASSWD

   By default, Sudo requires that a user authenticate him or herself before running a
   command.  This behavior can be modified via the NOPASSWD tag.  Like a Runas_Spec, the
   NOPASSWD tag sets a default for the commands that follow it in the Cmnd_Spec_List.
   Conversely, the PASSWD tag can be used to reverse things.  For example:

   ray     rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm

   would allow the user ray to run /bin/kill, /bin/ls, and /usr/bin/lprm as root on the
   machine rushmore without authenticating himself.  If we only want ray to be able to run
   /bin/kill without a password the entry would be:

   ray     rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm

   Note, however, that the PASSWD tag has no effect on users who are in the group specified
   by the exempt_group option.

また、「既存のbashスクリプトをrootとして実行する」ことは、多くの非常に悲しいセキュリティ話の始まりであることに注意します。

スクリプトをrootとして実行するのではなく、スクリプト内の2つのコマンド(の完全パス)へのパスワードなしのアクセスをユーザーに許可します。

0
waltinator