Linux
如何以 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
我的問題是 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 以外的其他人安裝,則不會執行其上的文件。