RHEL - 모든 하위 폴더 및 파일을 영구적으로 차단 해제

RHEL - 모든 하위 폴더 및 파일을 영구적으로 차단 해제

저는 RHEL을 처음 사용하는데 디렉터리 컬렉션을 노출하는 데 문제가 있습니다.

Python 스크립트에서 내용이 생성되는 폴더가 있습니다. 하위 폴더는 한동안 존재한 후 삭제됩니다. 이 폴더는 원래 한 명의 사용자가 읽고 쓸 수 있도록 차단되었지만 최근에는 누구나 이 폴더에 액세스할 수 있도록 허용해야 했습니다. -R(재귀 옵션)을 사용하여 폴더에서 unmask 명령을 실행하여 모든 하위 폴더와 파일의 마스크를 해제합니다. 새 콘텐츠가 생성되고 BAM에 동일한 문제가 발생하여 폴더와 파일이 차단될 때까지 작동하는 것 같습니다.

폴더의 모든 하위 폴더와 파일을 영구적으로 차단 해제하는 방법은 무엇입니까? 생성/읽기/쓰기 액세스 권한이 있는 모든 사람이 이 파일에 액세스할 수 있도록 해야 합니다.

답변1

파일을 만드는 과정이 문제입니다. 프로세스/프로그램은 umask파일을 생성할 때 새로 생성된 파일이 특정 파일을 사용하도록 지정된 파일을 사용하여 실행됩니다 umask. 기본적으로 3가지 옵션이 있습니다.

  1. 프로세스의 umask 수정

    프로세스(웹서버)에 따라 이는 원하는 작업이 아닐 수도 있습니다.

  2. 그룹 추가

    웹 서버와 관련하여 모든 사람이 액세스해야 하는 경우 Unix 그룹(웹 데이터)을 만드는 것이 더 친숙한 접근 방식입니다. 그런 다음 네트워크 데이터 그룹의 구성원이 해당 디렉토리를 소유/액세스할 수 있도록 관련 디렉토리의 최상위 그룹을 변경합니다.

    그런 다음 이와 유사한 명령을 실행하여 디렉터리의 그룹 웹 데이터를 생성하고 생성된 모든 새 파일/폴더가 이 그룹을 기본 그룹으로 사용하도록 그룹을 고정 상태로 유지합니다.

    $ chgrp web-data /path/to/dir
    $ find /path/to/dir -type d -exec chmod g+xs {} +
    

    마지막으로 웹 서버 사용자(apache)와 디렉터리에 액세스해야 하는 다른 사용자를 이 그룹에 추가합니다.

  3. ACL(액세스 제어 목록) 사용

    이러한 도구를 사용하여 특정 디렉터리나 파일의 ACL을 조작 setfacl할 수 있습니다.getfacl

    루트 사용자로서:

    $ mkdir somedir
    $ getfacl somedir
    # file: somedir
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    

    이제 sam디렉토리에 사용자 액세스를 추가하십시오.

    $ setfacl -Rm u:sam:r-x,d:sam:r-x somedir
    getfacl somedir/
    # file: somedir
    # owner: root
    # group: root
    user::rwx
    user:sam:r-x
    group::r-x
    mask::r-x
    other::r-x
    default:user::rwx
    default:user:sam:r-x
    default:group::r-x
    default:mask::r-x
    default:other::r-x
    

    sam지금 생성된 모든 후속 디렉터리 및/또는 파일에는 사용자가 액세스할 수 있도록 해당 디렉터리가 설정됩니다 .

    $ mkdir anotherdir
    $ echo "hello world" > anotherfile
    

    권한 확인:

    $ getfacl another*
    # file: anotherdir
    # owner: root
    # group: root
    user::rwx
    user:sam:r-x
    group::r-x
    mask::r-x
    other::r-x
    default:user::rwx
    default:user:sam:r-x
    default:group::r-x
    default:mask::r-x
    default:other::r-x
    
    # file: anotherfile
    # owner: root
    # group: root
    user::rw-
    user:sam:r-x            #effective:r--
    group::r-x          #effective:r--
    mask::r--
    other::r--
    

    이제 사용자로 sam:

    $ more anotherfile 
    hello world
    

    다른 사용자에게 유사한 액세스 권한이 필요한 경우 setfacl대신 해당 사용자의 사용자 이름을 사용하여 명령을 다시 실행하면 됩니다 sam.

    위의 방법을 수정하여 단일 사용자가 아닌 사용자 그룹에 액세스 권한을 부여할 수 있습니다.

인용하다

관련 정보