我想知道如何通過 Golang 在 Linux CentOS 7 服務器中將檔案掛載為只讀。我已經嘗試過系統呼叫,但這不起作用,系統呼叫會掛載檔案,但作為讀寫,我試圖在資料中提供 ro 引數,但它仍然以讀寫方式掛載。這是我的代碼:
syscall.Mount(src, dst, "auto", syscall.MS_BIND, "ro")
你可以看到我在資料中給出了ro引數,我也試圖只給出r和readonly以及只讀但它們都不起作用,當我編譯 go 檔案并執行它然后當我檢查 /etc/ mtab 然后我得到這個輸出:
cat /etc/mtab | grep "firewall"
/dev/vda1 /root/firewall.txt ext4 rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=quota.user 0 0
在這里可以看到 firewall.txt 掛載為rw表示讀寫
我想將它安裝為只讀,任何人都可以幫助我如何在 Golang 中做到這一點?
uj5u.com熱心網友回復:
我遇到了類似的問題,通過將 fstype 設定為bind并將標志設定為MS_REMOUNT MS_RDONLY和MS_BIND來修復它。您可以使用以下代碼:
syscall.Mount(source, destination, "bind", syscall.MS_REMOUNT|syscall.MS_RDONLY|syscall.MS_BIND, "")
uj5u.com熱心網友回復:
只讀模式由 syscall 標志定義,該標志MS_RDONLY也在syscall 包中定義。所以呼叫應該是:
syscall.Mount(src, dst, "auto", syscall.MS_BIND | syscall.MS_RDONLY, "")
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/422109.html
標籤:
