Nextcloud external storages挂载本地硬盘权限(续)
接上篇文章《Nextcloud external storages挂载本地硬盘权限》提到,虽然解决了Nextcloud可以查看挂载硬盘的资料,但无权编辑,因为挂载硬盘的资料是从windows的共享文件是使用Lsyncd同步过来的。同步过来的资料的用户组均是root,而nextcloud的执行用户是www,所以www无权执行root的文件,虽然在上篇文章中开放了查看路径,但仍无权修改。
Windows共享资料同步到到NAS,使用的是Lsyncd软件,经再学习Lsyncd发现, Lsyncd2.2.1以上版本可以使用参考chown来更改uid和gid. 同时发现目前我的NAS系统是使用系统源安装的Lsyncd2.1.6版本。既然找到了问题和解决方法,下面就是实干了。
1,删除原来的lsyncd2.1.6版本
从源安装的Lsyncd2.1.6附带安装支持语言Lua5.1.5,而Lsyncd2.2.1需要Lua5.3以上版本方可支持。那就全部删除
apt-get remove lsyncd lua5.1
2,安装Lua5.3以上版本
apt-get install lua5.3 liblua lua-devel
另外要注意安装最新的cmake>=2.8版本
3,从源文件安装lsyncd2.2.3版本
可以使用以下命令直接下载最新的版本
git clone https://github.com/axkibe/lsyncd.git
cd lsyncd
cmake .
make
sudo make install
在从源文件安装的时候,这里出现了两个问题点
1),从源文件安装的与系统源安装的lsyncd位置不一样
从系统源安装的lsyncd位置/usr/local/lsyncd
而从源文件安装的lsyncd位置/usr/local/bin/lsyncd
所以如果你需要跟从系统源安装的位置一致,需要在编译时增加位置参数
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lsyncd
2),在安装时可能会有以下报错
/usr/local/bin/luac不存在
这是因为Lua5.3安装时,位置/usr/local/bin的文件名是luac5.3,只需要将luac5.3改名为luac即可;不过要记得备份。我是直接CP的
4,安装完成后,如果没有改变位置,留意要修改/etc/init.d/lsyncd命令文件中的lsyncd位置
/usr/local/bin/lsyncd
不过原来我可以直接lsyncd –version,但我没有改位置,这个命令也失效了,我还不知道怎么找回来。目前使用这个命令查看版本
/usr/local/bin/lsyncd --version
所有完成后记得重启刷新systemctl
systemctl daemon-reload
5, 在/etc/lsyncd.conf文件内增加chown参数
最后就是找到之前的lsyncd.conf的文件,在对应的同步文件块内增加chown命令,作用就是同步过来的文件使用chown更改uid和gid
chown = "www:www"
最后再启动lsyncd2.2.3,chown命令即可生效。
systemctl start lsyncd
Say Something!