Quiero saber cómo podemos montar un archivo como de solo lectura en Linux CentOS 7 Server a través de Golang. He intentado syscall pero eso no funciona, syscall monta el archivo pero como lectura-escritura he intentado dar un argumento ro en los datos pero aún así se está montando como lectura-escritura. Aquí está mi código de acceso:
syscall.Mount(src, dst, "auto", syscall.MS_BIND, "ro")Puede ver que he dado un argumento ro en los datos, también he intentado dar solo r y solo lectura y también solo lectura, pero ninguno de ellos funciona, cuando compilo el archivo go y lo ejecuto y luego cuando verifico /etc/ mtab entonces obtengo este resultado:
cat /etc/mtab | grep "firewall" /dev/vda1 /root/firewall.txt ext4 rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=quota.user 0 0Aquí puede ver que firewall.txt está montado como rw significa lectura-escritura
Quiero montarlo como de solo lectura, ¿alguien puede ayudarme? ¿Cómo puedo hacer eso en Golang?
Me he enfrentado a un problema similar, se solucionó configurando fstype como bind y flags como MS_REMOUNT MS_RDONLY y MS_BIND . Puedes usar estos códigos:
syscall.Mount(source, destination, "bind", syscall.MS_REMOUNT|syscall.MS_RDONLY|syscall.MS_BIND, "")El modo de solo lectura se define mediante el indicador MS_RDONLY , que también se define en el paquete syscall . Entonces la llamada debería ser:
syscall.Mount(src, dst, "auto", syscall.MS_BIND | syscall.MS_RDONLY, "")