为了账号安全,请及时绑定邮箱和手机立即绑定

我们如何通过 Go 在 Linux 中将文件挂载为只读?

我们如何通过 Go 在 Linux 中将文件挂载为只读?

Go
白衣染霜花 2022-10-31 15:43:44
我想知道如何通过 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 中做到这一点?
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

我遇到了类似的问题,通过将 fstype 设置为bind并将标志设置为MS_REMOUNT MS_RDONLYMS_BIND来修复它。您可以使用以下代码:

syscall.Mount(source, destination, "bind", syscall.MS_REMOUNT|syscall.MS_RDONLY|syscall.MS_BIND, "")


查看完整回答
反对 回复 2022-10-31
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

只读模式由 syscall 标志定义,该标志MS_RDONLY也在syscall 包中定义。所以调用应该是:

syscall.Mount(src, dst, "auto", syscall.MS_BIND | syscall.MS_RDONLY, "")


查看完整回答
反对 回复 2022-10-31
  • 2 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号