setfacl을 사용하여 rsync를 통해 Apache에 대한 재귀 권한 생성

setfacl을 사용하여 rsync를 통해 Apache에 대한 재귀 권한 생성

나는 Dokuwiki를 로컬에 설치했고 정기적으로 rsync를 사용하여 내 서버와 동기화합니다. 나는 또한 내 친구에게 SSH 계정을 제공하고 그의 공개 Dokuwiki 설치를 호스팅할 것입니다. 그러나 액세스 권한 문제에 부딪혔습니다. 이미지가 읽기 전용임에도 불구하고 Dokuwiki는 캐싱 등을 위해 데이터 디렉토리에 대한 쓰기 액세스가 여전히 필요합니다. Apache 서버는 www-data 사용자로 실행 중이며 rsync를 수행할 때마다 권한이 재설정됩니다.

이 사이트의 다른 답변을 바탕으로 setfacl을 사용하여 기본 권한을 설정하려고 시도했지만 작동하지 않는 것 같습니다. getfacl은 권한이 있지만 Dokuwiki가 실행되지 않는다는 것을 나타내고 사용자 www로 파일을 쓰려고 하면- 데이터도 작동하지 않습니다. 내가 무엇을 놓치고 있나요?

wiki/data$ sudo su www-data
$ pwd
/var/www/wiki/data
$ whoami
www-data
$ touch hi
touch: cannot touch `hi': Permission denied
$ getfacl /var/www/wiki/data
getfacl: Removing leading '/' from absolute path names
# file: var/www/wiki/data
# owner: stian
# group: admin
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:www-data:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

다음은 권한을 설정하는 데 사용하는 명령입니다.

setfacl -R -d -m u:www-data:7 /var/www/*

답변1

문제 #1: Rsync가 ACL을 제거하고 있습니다.

ACL 권한을 적용한 후에는 또는 스위치를 rsync사용하게 된다는 점에 유의해야 합니다 . 이 명령을 사용 하면 동기화 시 이러한 내용이 보존됩니다.-A--aclsrsync

rsync 매뉴얼 페이지에서

    -A, --acls                  preserve ACLs (implies -p)

문제 #2: ACL 권한 없음

귀하의 예를 보면 아래와 같은 권한이 포함되어 있습니다.

전통 파마

# owner: stian
# group: admin
user::rwx
group::r-x
other::r-x

ACL

default:user::rwx
default:user:www-data:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

그러나 이러한 ACL은 새 객체를 생성하기 위한 것이며 생각한 대로 정확하게 작동하지 않습니다. www-data기본 ACL 권한 외에도 사용자에 대한 항목을 생성해야 합니다.

$ pwd
/tmp/somedir

$ mkdir data
$ setfacl -R -d -m u:gopher:7 data

$ getfacl data
# file: data
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:gopher:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

실험

data이제 사용자로 디렉토리에 파일을 작성해 보겠습니다 gopher.

$ sudo -u gopher touch /tmp/somedir/data/afile
touch: cannot touch `/tmp/somedir/data/afile': Permission denied

낯익어 보이나요?

추가 ACL 권한 추가

이는 사용자에 대한 ACL을 추가해야 www-data하고 기본 규칙은 액세스용이 아니라 새 파일/디렉터리 생성을 위한 것이기 때문입니다.

$ setfacl -R -m u:gopher:7 data

이제 data디렉토리를 다시 확인하십시오.

$ getfacl data
# file: data
# owner: root
# group: root
user::rwx
user:gopher:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:gopher:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

유일한 차이점은 이제 사용자에게 액세스 권한이 gopher있음 을 나타내는 ACL이 있다는 것입니다 rwx.

user:gopher:rwx

실험 반복

디렉터리에 다시 쓰기를 시도해 보세요.

$ sudo -u gopher touch /tmp/somedir/data/afile
$

효율적인! ! ! 생성된 파일을 다시 확인하세요.

$ ls -l /tmp/somedir/data/afile
-rw-rw-r--+ 1 gopher gopher 0 Oct  7 21:36 /tmp/somedir/data/afile

관련 정보