背景
我正在嘗試在我的使用者登入時自動執行一個命令來安裝受密碼保護的 Samba 共用。不希望在她登入時掛載 Samba 共享。當我登入時。這排除了編輯我的 fstab 文件,因為我希望它是特定於使用者的。
先前的研究
我搜尋並查看了許多與安裝 Samba 共享相關的問題和答案,包括“在啟動/登入時掛載 Samba 共用並使用腳本“ 和 ”正確的 fstab 項目可在啟動時掛載 samba 共享,」但大多數答案都涉及編輯 fstab,這對大多數人來說都很好,但這不是我在這裡尋找的。
到目前為止我做了什麼
我可以透過執行以下操作從命令列手動掛載 Samba 共用:
sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
問題陳述
當我從命令列執行前面的命令時,它效果很好 - 它提示我輸入密碼以獲得 sudo 權限,我輸入它,然後命令運行。問題是,當我將完全相同的命令新增至「啟動應用程式首選項」>「編輯啟動程式」中的「命令」欄位、儲存變更、重新啟動並重新登入時,Samba 共享並未像我預期的那樣安裝。我懷疑這是因為我需要 root 權限才能以 sudo 身份運行,並且使用啟動程序首選項中的腳本,我無法輸入它,因此腳本只是失敗。
我該如何解決這個問題?
答案1
好吧,我設法自己解決了這個問題(在其他人的幫助下)。正如我所懷疑的那樣,根本問題是我試圖在不提供密碼的情況下執行需要 root 權限的命令。我按照線程中的說明解決了這個問題“如何在腳本中使用 sudo 命令而不要求輸入密碼總而言之,我建立了一個名為「script-mount-samba-share.sh」的 shell 腳本,其中只包含一行我要執行的 mount 指令:
mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
然後,我將文件的所有權更改為root:root 並將其權限更改為700。的「命令」欄位編程為「sudo /home/scott/script-mount-samba-share.sh」(不含引號),瞧。下次我重新啟動並使用我的用戶登入時,無需費力即可安裝 Samba 共用。我還測試了當我重新啟動並使用其他用戶登入時,Samba 共享不會被安裝,這正是我想要的。
我現在試圖克服的唯一小問題是,當我已經登錄然後將用戶切換到其他人時,我的 Samba 共享仍然顯示在 Nautilus 的左側導航欄中,這是有道理的當我使用自己的用戶登錄時已安裝,但我不希望其他用戶在Nautilus 中顯示已安裝的共享,因此我的下一個任務是弄清楚如何實現該部分。
答案2
新增 mount 命令的使用者名稱和密碼非常重要,否則可能會要求輸入密碼。對我來說這有效:
sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,user=,password=,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
當然,隨著 /etc/sudoers 中的所有更改