Fstab exec noexec 參數如何影響 samba 共享

Fstab exec noexec 參數如何影響 samba 共享

我已經安裝了多個數據驅動器並使用了noexec參數。認為既然這只是我不需要的數據exec。現在我遇到了一些權限問題,希望排除此原因並更好地理解該選項。

exec參數in是否/etc/fstab與賦予掛載系統中所有目錄和檔案執行權限具有相同的效果?

它如何影響.exe透過 samba 共用或其他網路協定存取的 Windows 執行檔 ( )?

已安裝的驅動器將與aufs或合併在一起mhddfs,並透過 中的中央安裝點進行存取/mnt/virtual。然後將透過網路(現在是 samba)存取它。也會有一些本地訪問(xbmc)。我不確定是否應該向其提供文件的直接連結或 samba 連結?

在這種情況下,最佳實踐是什麼?

答案1

瀏覽手冊頁

如果您查看其手冊頁,mount.cifs其中將用於安裝其中列出的任何共享,/etc/fstab則有一條註釋提到noexec

摘錄 - mount.cifs 手冊頁

該命令只能由 root 使用,除非安裝了 setuid,在這種情況下,啟用了 noeexec 和 nosuid 安裝標誌。當安裝為 setuid 程式時,程式遵循 mount 程式為使用者掛載規定的約定,並附加限制,即使用者必須能夠在掛載之前 chdir() 進入掛載點,以便能夠掛載到它。

一些 samba 用戶端工具(例如 smbclient(8))遵循 smb.conf 中存在的客戶端設定參數。與那些客戶端工具不同,mount.cifs 完全忽略 smb.conf。

有鑑於此,如果它包含在任何安裝嘗試中,我希望它能夠執行 exec/noexec 選項。另外查看mount.cifs用法可以了解如何使用該選項。

摘錄 - 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 執行檔。

摘自 fstab 手冊頁

執行/不執行

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透過此安裝設定來運行檔案。

筆記:我使用\\vboxsrvVirtualbox 中的共享機制來掛載系統本地的主目錄/home/saml。然後我運行此命令,將 CIFS/Samba 共用安裝為/home/saml.

$ mkdir /home/saml/cifsmnt
$ mount //server/cifsshare cifsmount -o user=joeuser,noexec

結論

執行上述操作似乎表明 exec/noexec 沒有限制 Windows 對檔案的存取。

相關內容