使用rsync在两部服务器之间复制/usr/local/src/app文件的时候,遇到一个错误:
[3219] rsync: [generator] chgrp "/." (in uploads) failed: Read-only file system (30)
[3219] rsync: [generator] recv_generator: mkdir "/test10" (in uploads) failed: Read-only file system (30)
提示目标文件系统只读,这是因为被systemd的配置限制了服务对系统文件的访问权限
更改文件/lib/systemd/system/rsync.service配置
[Service]
ProtectSystem=none
#默认是full
参数解释:
- ProtectSystem=none:没有特别的保护,服务可以自由地访问系统文件。
- ProtectSystem=full:会使/usr、/boot和/etc目录对服务来说是只读的,从而提供一定程度的保护。
- ProtectSystem=strict:除了full提供的保护外,这个设置还会将整个文件系统(包括/home、/root和运行时目录)都设置为只读。
然后重新载入配置即可
systemctl daemon-reload
systemctl restart rsync
还有一个选择,那就是用ReadWritePaths参数开放指定某个目录的权限,这样更符合安全守则
[Service]
#ProtectSystem保持默认配置
ProtectSystem=full
ReadWritePaths=/usr/local/src/app/