저는 ProtectSystem=full
기본적으로 rsyncd 3.2와 함께 Debian 11을 실행하고 있습니다.
커버하고 싶어서 systemctl edit
자주 하는 편이에요. 오버레이에 추가하고 싶은 내용은 다음과 같습니다.
### Editing /etc/systemd/system/rsync.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file
[Service]
ProtectSystem=off
### Lines below this comment will be discarded
로그에는 구문 분석 오류가 보고되지 않으며 장치(제 생각에는)가 새 구성으로 다시 로드됩니다.
/etc
그러나 예를 들어 특정 경로로 rsync를 시도할 때 여전히 "읽기 전용 파일 시스템" 오류가 발생합니다.
이 한도를 초과할 수 없습니다. 무슨 일인가요? 아니면 이 제한이 문제가 되지 않나요? 이 구성은 Debian 11로 업그레이드하기 전에 Debian 10에서 제대로 작동했기 때문에 이것이 ProtectSystem
문제의 원인이라고 생각합니다 .
/etc/rsyncd.conf
편집: 이것은 내가 사용하는 구성입니다.
[nameOfMount]
path = /etc/postfix
auth users = sysadmin
secrets file = /etc/rsyncd.secrets
hosts allow = xxx.xxx.xxx.xxx
read only = false
uid = root
pre-xfer exec = /usr/local/bin/scriptA.sh
post-xfer exec = /usr/local/bin/scriptB.sh
pro/post exec 스크립트는 전송되는 파일의 백업 복사본을 만들고 postfix 데몬을 다시 로드합니다. 이러한 오류의 예는 다음과 같습니다.
rsync error: requested action not supported (code 4) at clientserver.c(1098) [Receiver=3.2.3]
/bin/cp: cannot create regular file '/etc/postfix/fileName.yyyymmddd': Read-only file system
답변1
상태 확인부터 시작해 보겠습니다.
systemctl show rsync | grep -E 'ProtectSystem|NoNewPrivileges'
수정되지 않은 시스템에서는 다음이 반환됩니다.
ProtectSystem=full
NoNewPrivileges=yes
NoNewPrivileges
이 설정을 사용하면 rsyncd
UID가 변경되는 것을 방지할 수 있기 때문에 이런 현상이 나타났습니다 .
이제 데몬이 언제 다시 시작되었는지 확인 rsync
하고 기록해 두겠습니다(제 경우에는 22:53이었습니다).
ps -ef | grep '[r]sync --daemon'
root 22600 1 0 22:53 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
오버레이에 두 줄을 추가하면
systemctl edit rsync
[Service]
ProtectSystem=off
그러면 나는 이것을 얻습니다
systemctl show rsync | grep -E 'ProtectSystem|NoNewPrivileges'
ProtectSystem=no
NoNewPrivileges=yes
그러나 rsync
데몬은 다시 시작되지 않습니다.
ps -ef | grep '[r]sync --daemon'
root 22600 1 0 22:53 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
사실 저는 이 작업을 수동으로 수행해야 한다는 것을 알았습니다.
systemctl restart rsync
ps -ef | grep '[r]sync --daemon'
root 22770 1 1 22:56 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
그러나 파일 시스템은 여전히 읽기 전용 모드입니다. 추가 줄이 필요합니다.
systemctl edit rsync
[Service]
ProtectSystem=off
NoNewPrivileges=no
그런 다음 다시 시작하세요.
systemctl restart rsync
최종 상태 확인,
systemctl show rsync | grep -E 'ProtectSystem|NoNewPrivileges'
내 시스템에서는 원하는 최종 게임이 반환되어 다음 파일과 디렉터리에 쓸 수 있습니다 /etc
.
ProtectSystem=no
NoNewPrivileges=no