sudoでスクリプトを実行してパスワードを要求しないようにするにはどうすればよいですか?

sudoでスクリプトを実行してパスワードを要求しないようにするにはどうすればよいですか?

次のスクリプトを実行したいと思います。

#!/bin/bash

if grep -qs 'MinecraftServer' /media/kiancross/MinecraftServer/MinecraftServer; then
    echo "Disk already mounted, server boot will continue"
else
     mount /dev/sda1 /media/kiancross/MinecraftServer
fi

sudo mount /dev/sda1 /media/kiancross/MinecraftServer
cd /media/kiancross/MinecraftServer/MinecraftServer/1.6.4
screen -d -m -S MinecraftServer ./start.sh
screen -r MinecraftServer   

私の問題は、マウントするにはsudoが必要で、管理者以外の人がこのスクリプトを実行できるようにしたいということです。スクリプトを実行すると、mount: only root can do that管理者パスワードの入力を求められます。

私はあなたに行くことを提案した他のフォーラムの指示に従い、次のコード行を追加しましsudo visudo myusername ALL = (root) NOPASSWD: /path/to/my/program。これを試してから再起動した後でも、パスワードの入力を求められます。また、rootこの記事で説明されているようにファイル所有者を変更してみました。

これを行った後もパスワードなしでは実行できません。

私はUbuntu 14.04を実行しています。

ベストアンサー1

これを行う方法は2つあります。

1: sudoを使う

1つは、誰もがsudoを使用してディスクをマウントできるようにすることです。 sudo行は次のようになります。

ALL ALL = NOPASSWD: mount /dev/sda1 /media/kiancross/MinecraftServer

最初のALLは「すべてのユーザー」を意味し、2番目は「このsudoersファイルがインストールされているすべてのサーバーで」を意味します。また、ディレクトリだけでなく、実際のコマンドへのフルパスも必要です。

これにより、次のようにコマンドがmount常にwithを使用して実行されるようにスクリプトも変更する必要がありますsudo

 sudo mount /dev/sda1 /media/kiancross/MinecraftServer

2: インストールオプションの使用

別のアプローチは、すべてのユーザーがマウントできるように/ dev / sda1のマウントオプションを変更することです。これにより、sudoをまったく使用する必要はありません。これを行うには、そのディスクの行が次のように /etc/fstab を変更します。

/dev/sda1 /media/kiancross/MinecraftServer YOURFSTYPE users,exec

YOURFSTYPEもちろん、ディスクのファイルシステムタイプ(おそらくext4)を記録する必要があることがわかります。

代替案は、users,exec一般ユーザーがファイルシステムをマウントし、そのシステム上のプログラムを実行できることを意味します。通常、ファイルシステムがルート以外の人によってマウントされている場合、そのファイルは実行されないため、これを指定する必要があります。

おすすめ記事