수정된 마스크/유효성은 ssh/sshfs를 통해 파일을 생성할 때와 머신 자체(동일 사용자)에서 파일을 생성할 때 적용되지 않습니다.

수정된 마스크/유효성은 ssh/sshfs를 통해 파일을 생성할 때와 머신 자체(동일 사용자)에서 파일을 생성할 때 적용되지 않습니다.

비슷한 마스크를 설정했는데 setfacl -R -d -m m::rw .로컬 컴퓨터에서 제대로 작동합니다(이제 SSH를 통해 연결했는데 헤드가 없습니다). 두 명의 사용자가 디렉토리를 수정하고 읽도록 할 수 있습니다. 그러나 sshfs를 사용하여 사용자 수정 디렉터리 중 하나에 액세스하면 유효 설정은 rw-가 아니라 r--로 설정됩니다. 수동으로 시스템에 SSH를 연결하고 사용자로 sudo를 사용하여 파일을 생성하면 이런 일이 발생하지 않습니다. 그러나 sshfs를 사용하여 디렉토리를 생성할 수 있으며 작동합니다.

답변1

나는 당분간 inotify를 사용하여 다소 해킹적인 솔루션을 생각해 냈습니다.

inotifywaitfrom을 사용하여 파일이 생성될 때까지 기다리는 쉘 스크립트를 작성했습니다 inotify-tools. 그런 다음 파일이 생성되면 명령을 실행하여 setfacl공유 디렉터리를 설정한 다음 공유 디렉터리의 모든 하위 디렉터리를 찾아 실행 가능으로 표시합니다. 디렉토리가 실행 가능하기를 바랍니다. 필요한 경우 해당 부분을 제외할 수 있습니다.

스크립트는 다음과 같습니다.

#!/bin/sh
while inotifywait -qqre create /share; do
    setfacl -R -m u:user2:rw /share
    for dir in $(tree /share); do
        setfacl -m u:user2rwx ${dir}
        setfacl -m u:user1:rwx ${dir}
    done
done

user2사용자가 sshfs를 통해 공유에 액세스하고 있습니까?

Need inotify-tools및 . 대신에 뭔가를 할 tree수도 있겠지만 , 내 생각엔 그게 더 쉬울 것 같아요.findtreetree

파일에 외부 명령에 대한 지원을 추가 할 수 있고 chmod +x(다른 사용자처럼 파일을 실행 가능으로 표시할 수 없음) 실행 가능으로 표시하려는 파일을 기록하고 실행 가능 비트를 다시 추가할 수 있습니다.

아직 프로덕션 환경에서 철저하게 테스트하지는 않았지만(파일 사용 권한/사용 권한이 변경된 경우 프로그램이 열리지 않으면 프로그램이 어떻게 작동하는지 확인하기 위해) 제가 본 바로는 꽤 잘 작동합니다.

문제는 현재 시스템에서 마스킹 규칙을 가져오는 것일 수도 있지만 100% 확신할 수는 없습니다. 원격 시스템에서 루트 또는 일반 사용자로 sshfs 디렉터리의 acl을 변경할 수 없으므로 원격 시스템에서 마스크 권한을 변경할 수 없습니다.

관련 정보