Linux

如何以 sudo 身份執行腳本並且不要求我輸入密碼?

  • January 25, 2015

我想執行以下腳本:

#!/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   

我的問題是 mount 需要 sudo 並且我希望非管理員的人能夠執行此腳本。當我執行腳本時,它說mount: only root can do that然後它要求我輸入管理員密碼。

我按照建議您去的其他論壇上的說明進行操作,sudo visudo然後添加以下程式碼行:myusername ALL = (root) NOPASSWD: /path/to/my/program. 嘗試此操作後,即使重新啟動,我仍然被要求輸入密碼。我還嘗試root按照本文中的說明將文件的所有者更改為。

之後,我仍然無法在沒有密碼的情況下執行它。

我正在執行 Ubuntu 14.04。

有兩種方法可以做到這一點。

1:使用須藤

一是讓大家使用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 以外的其他人安裝,則不會執行其上的文件。

引用自:https://unix.stackexchange.com/questions/181004