我想运行以下脚本:
#!/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
有两种方法可以做到这一点。
1:使用sudo
一是让大家都可以使用sudo来挂载磁盘。 sudo 行应该如下所示:
ALL ALL = NOPASSWD: mount /dev/sda1 /media/kiancross/MinecraftServer
第一个ALL表示“所有用户”;第二个意思是“在安装此 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
意味着该文件系统可以由普通用户安装,并且可以执行其上的程序。您必须指定此项,因为通常如果文件系统由 root 以外的其他人安装,则其上的文件将不会被执行。