我已經安裝了多個數據驅動器並使用了noexec
參數。認為既然這只是我不需要的數據exec
。現在我遇到了一些權限問題,希望排除此原因並更好地理解該選項。
exec
參數in是否/etc/fstab
與賦予掛載系統中所有目錄和檔案執行權限具有相同的效果?
它如何影響.exe
透過 samba 共用或其他網路協定存取的 Windows 執行檔 ( )?
已安裝的驅動器將與aufs
或合併在一起mhddfs
,並透過 中的中央安裝點進行存取/mnt/virtual
。然後將透過網路(現在是 samba)存取它。也會有一些本地訪問(xbmc
)。我不確定是否應該向其提供文件的直接連結或 samba 連結?
在這種情況下,最佳實踐是什麼?
答案1
瀏覽手冊頁
如果您查看其手冊頁,mount.cifs
其中將用於安裝其中列出的任何共享,/etc/fstab
則有一條註釋提到noexec
。
該命令只能由 root 使用,除非安裝了 setuid,在這種情況下,啟用了 noeexec 和 nosuid 安裝標誌。當安裝為 setuid 程式時,程式遵循 mount 程式為使用者掛載規定的約定,並附加限制,即使用者必須能夠在掛載之前 chdir() 進入掛載點,以便能夠掛載到它。
一些 samba 用戶端工具(例如 smbclient(8))遵循 smb.conf 中存在的客戶端設定參數。與那些客戶端工具不同,mount.cifs 完全忽略 smb.conf。
有鑑於此,如果它包含在任何安裝嘗試中,我希望它能夠執行 exec/noexec 選項。另外查看mount.cifs
用法可以了解如何使用該選項。
Less commonly used options:
credentials=<filename>,guest,perm,noperm,setuids,nosetuids,rw,ro,
sep=<char>,iocharset=<codepage>,suid,nosuid,exec,noexec,serverino,
mapchars,nomapchars,nolock,servernetbiosname=<SRV_RFC1001NAME>
directio,nounix,cifsacl,sec=<authentication mechanism>,sign,fsc
檢視fstab
手冊頁解釋了 exec/noexec 的預期用途,但沒有指定它是適用於所有可執行檔還是僅適用於 Unix 執行檔。
執行/不執行
exec 允許您執行該分割區上的二進位文件,而 noexec 不允許您這樣做。 noexec 對於不包含二進位檔案(如 /var)的分割區可能很有用,或者包含您不想在系統上執行的二進位文件,或甚至無法在系統上執行的二進位檔案(例如 Windows 分割區)。
exec/noexec 是否使所有內容都可執行?
不, exec/noexec 屬性只是簡單地控制透過其權限位元標記為可執行的事物的允許,它不會直接影響權限。
Windows 的二進位檔案怎麼樣?
但是,exec/noexec 設定無法控制 Windows 可執行文件,只能控制也可以駐留在這些共用上的 Unix 執行檔。
另外,我甚至不確定如果您透過掛載 CIFS/Samba 共享/etc/fstab
,這些將如何發揮作用,Windows 作業系統何時會在這種情況下混合使用。 Windows 會/可以直接掛載此共用,甚至不需要透過 Linux。
測試一下
來自 Unix 的範例mount.cifs
您可以像這樣直接透過命令列進行測試。假設我們在 CIFS/Samba 共享上有一個檔案如下:
$ cat cmd.bash
#!/bin/bash
echo "hi"
$ chmod +x cmd.bash
現在我們像這樣安裝它,並嘗試運行腳本cmd.bash
:
$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser,noexec
$ cd /path/to/cifsmnt
$ ./cmd.bash
bash: ./cmd.bash: Permission denied
如果我們省略該選項,noexec
:
$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser
$ cd /path/to/cifsmnt
$ ./cmd.bash
hi
從 Windows
我在這裡可以想到的唯一場景是,如果我使用 Virtualbox 之類的東西,並且我在 Windows VM 可以使用的目錄內安裝了 CIFS/Samba 共用。
當我對此進行測試時,我成功地能夠.exe
透過此安裝設定來運行檔案。
筆記:我使用\\vboxsrv
Virtualbox 中的共享機制來掛載系統本地的主目錄/home/saml
。然後我運行此命令,將 CIFS/Samba 共用安裝為/home/saml
.
$ mkdir /home/saml/cifsmnt
$ mount //server/cifsshare cifsmount -o user=joeuser,noexec
結論
執行上述操作似乎表明 exec/noexec 沒有限制 Windows 對檔案的存取。