폴더에 쓸 때 파일 권한을 자동으로 변경합니다.

폴더에 쓸 때 파일 권한을 자동으로 변경합니다.

디렉토리를 어떻게 만들 수 있나요?

/data
/data/user1
/data/user2

root그리고 기록할 때마다 기록된 디렉토리에 따라 다른 소유자가 설정되어 있는지 확인하십시오 .

예:

  1. 루트는 /data에 쓰기 -> 일반 파일 생성
  2. 루트는 /data/user1에 씁니다. -> 여기서 생성된 모든 파일은 자동으로 user1이 소유하고 다른 사람이 읽을 수 있습니다(user1이 디렉터리 자체에 쓰는 경우에도 동일하게 적용됩니다).

답변1

디렉토리의 SGID 비트를 사용하여 원하는 것에 가까워질 수 있습니다. 당신이 달리면

chmod g+s /data/user1

해당 디렉토리에 생성된 파일이나 디렉토리의 그룹 소유권은 디렉토리 자체와 동일한 그룹으로 설정됩니다. 원하는 것을 정확히 수행하지는 않지만 목표에 도달하는 데 도움이 될 수 있습니다.

또 다른 접근 방식은 POSIX acl을 사용하고 디렉터리에 기본 acl을 설정하는 것입니다. 기본 acl은 디렉터리에 생성된 파일에 상속됩니다. 소유권은 변경되지 않지만 표준 파일 ACL의 세 가지 기본 그룹 외부의 모든 그룹에 대한 읽기, 쓰기 또는 실행 액세스 권한을 제공하는 방법을 제공합니다.

답변2

아래 스크립트는 매우 위험할 수 있으며 에서 생성된 새 파일만 모니터링하고 ${DIR}생성된 모든 파일의 소유자는 으로 변경되며 ${OWNER}전역 읽기 권한이 추가됩니다.

자신의 책임하에 사용하십시오 ...

#!/bin/bash

DIR="$PWD/user1"
OWNER="user1"

inotifywait -m --format "%e %f" "$DIR" | awk '$1 ~ "CREATE" { print $2; fflush() }' | 
while read file
do
    FILE="${DIR}"/"${file}"
    echo "Changin permission for ${FILE}"
    chown user1 "${FILE}"
    chmod o+r "${FILE}"
done

fs 드라이버를 작성하여 마운트하면 더 안전합니다.

답변3

bindfs어쩌면 그게 당신에게 도움이 될 수도 있어요

cd /data
chown user1:user1 user1
bindfs --create-for-user=user1 --create-for-group=user1 --create-with-perms=go+rD user1 user1

bindfschown/chmod 전략 등에 대한 자세한 내용은 나머지 매뉴얼 페이지를 참조하십시오.

답변4

당신은 할 수 없습니다.

이 직업은 다음과 같습니다:

  1. 크로나와 크로나
  2. inotify 및 일부 스크립트가 필요합니다.

개인적으로 저는 inotify를 선택하겠습니다. 위의 스크립트는 좋은 출발점입니다.

관련 정보