
次のスクリプトを実行したいと思います。
#!/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
一般ユーザーがファイルシステムをマウントし、そのシステム上のプログラムを実行できることを意味します。通常、ファイルシステムがルート以外の人によってマウントされている場合、そのファイルは実行されないため、これを指定する必要があります。