1. 통제권을 가져라

1. 통제권을 가져라

질문에서 알 수 있듯이.

NFSv4 ACL에 의해 액세스가 제어되는 약 1000만 개의 파일이 포함된 데이터풀이 있습니다. CLI, Samba, 때로는 데몬이나 rsync일부 디렉터리의 ftp/sftp를 통해 사용할 수 있으므로 시간이 지남에 따라 많은 부분이 엉망이 될 수 있습니다. 그것것 같다좋습니다. 하지만 풀의 크기를 육안으로 확인할 수 없어 과거에 ACL을 수정해야 했던 적이 있습니다. 따라서 ACL이 올바른 상태인지 확신할 수 없으며, 이번에는 보증과 모범 사례를 확인하기 위해 ACL을 확인하고 싶습니다("감사"가 아마도 더 나은 단어일 것입니다).

나중에 이 작업을 다시 수행하고 싶고 동시에 스크립트 파일을 작성하는 것은 느리기 때문에 특별히 이 목적을 위한 FreeBSD 유틸리티나 패키지가 있거나 적어도 더 빠른 방법이 있기를 바랍니다. 그것!

이상적인 출력은 상위 항목과 다른 ACL을 가진 모든 파일/디렉터리의 목록입니다(Windows는 까다롭지만 덜 중요하므로 ACL 순서 확인을 포함하는 것이 이상적입니다). 일부 잘 정의된 파일~해야 한다다양한 ACL이 있으므로 모든 것이 정상인지 확인하기 위해 결과에 표시할 파일을 찾고 있습니다.

그러한 목록을 생성하는 가장 효율적인 방법은 무엇입니까?

업데이트 - 추가 정보:

@Claus_Anderson이 언급했듯이 원래 Q는 구체적으로 충분히 작성되지 않았습니다.

나의 주요 관심사는 나 자신을 다시 확인하는 것입니다. 내가 설정한 ACL이 예상대로 작동하는지 확인하고 싶습니다. 이는 "극소수의 특정 파일을 제외한 모든 항목이 상속됩니다"입니다. 내 제한 사항은 매우 엄격하며 설정할 때 충분히 주의 깊게 확인하지 않는 것 외에도 주요 위험은 내 작업을 엉망으로 만들 위험이 있습니다. 잘못된 uid나 어리석은 것에서 파일이나 디렉터리에 액세스하거나 WSamba inherit매개 변수를 설정하는 것입니다. 제거하는 것을 잊어버리세요. 어리석은 일이지만 일어날 수 있습니다. 자신의 작업을 확인하는 것이 중요하며 기꺼이 수행하겠습니다 :)

이 풀은 NFSv4 ACL을 사용합니다(이를 명확히 하기 위해 Q가 업데이트되었습니다). 쉘에서 일부 스크립트를 쉽게 작성하고, 실행하고 find, 파일 시스템 트리를 탐색하고, 각 "일반" 파일+디렉토리에 대해 해당 객체의 ACL과 해당 상위 ACL을 가져와 동일한지 확인하고 예외를 덤프할 수 있습니다. 목록(개체에 대한 경로가 동일하지 않음)을 텍스트 파일에 추가합니다. 파일에 경로가 많으면 분명히 시스템 오류가 있을 것이므로 이를 수정하고 다시 확인할 수 있습니다. 경로가 적다면 눈으로 확인할 수 있습니다. 예상되는 예외가 발생하면 매주 스크립트를 실행하고 cron이메일을 통해 목록에 추가/제거/합계된 파일 수를 얻을 수 있습니다.

이에 대한 나의 우려는 이것이 매우 비효율적이라는 것입니다. 권한 API/보관 시스템과 직접 상호 작용하고, structs스크립트에서 반복할 필요 없이 일괄적으로 ACL을 가져오고, 항목당 2개의 파일 시스템 호출을 생성하고, 텍스트 형식으로 변환한 다음, 텍스트 비교를 수행하는 전용 유틸리티입니다. .낮은 효율성. 유닉스 방식은 도구를 갖고 전문적인 작업(또는 밀접하게 관련된 작업)을 수행하는 것입니다. 스크립트가 이 작업을 수행할 수 있지만 우아함/효율성 관점에서 볼 때 ACL 처리 측면이 더 잘 수행되지 않는 한 정말 끔찍합니다(어쨌든 저에게는 그렇습니다!). 그래서 더 나은 방법이 있는지 궁금합니다. setfacl/getfacl/otheracl프로세스를 더욱 효율적으로 만들어주는 표준 유틸리티, 옵션 또는 포팅 패키지를 의미합니까?

권한을 재설정하는 것도 좋은 접근 방식이겠지만, 문제를 해결하고 모르고 있기보다는 실수를 했는지 확인하고 싶습니다. 또는 몇 가지 알려진 예외를 제외한 모든 예외가 다음과 같아야 하기 때문입니다.유전학사용 권한, 발견된 모든 파일 + 디렉터리 탐색 및 나열분명히ACL은 두 번째 조회를 방지하므로 깔끔한 솔루션이기도 합니다.

답변1

질문에 너무 많은 가정을 하셨습니다. 제가 귀하의 제목에 대해서만 답한다면 "대본"이라고 답하겠습니다. 나는 일반적으로 수행하는 작업이 아니기 때문에 범용 도구에 대해 모릅니다.

표준 유닉스가 있습니다권한 모델그리고액세스 제어 목록. 첫째는 사용 chmod하고 관리하는 것이고 chflags, 둘째는 사용 setfacl하고 관리하는 것입니다 getfacl.

ACL을 한 번 보시는 것은 전혀 문제가 되지 않는다고 생각합니다. 이것이 Unix의 작업 방식입니다. 그러면 아름다운 파이프라인을 구축할 수 있습니다. 파일에 상위 파일과 다른 ACL이 있는지 확인하려면 그에 따라 파이프라인을 빌드하세요.

귀하의 질문에 따르면 사물을 모니터링하고 제자리에 유지하는 방법이 분명하다고 생각하는 것 같습니다. 그런데 넌 아무것도 안 줘특정한예. 당신에게 분명한 것은 나머지 우리에게는 분명하지 않습니다.

그래서! 특정 문제를 해결하기 위한 편리한 스크립트가 있습니까? 아니요. "awk" 태그하셔도 글은 안쓰겠습니다 :-)

하지만 몇 가지 일반적인 패턴이 있습니다.

1. 통제권을 가져라

ACL은 놀라울 정도로 강력하며, 세부 사항에 세심한 주의를 기울여 모든 것을 설정함으로써 권한이 예상대로 유지되도록 할 수 있습니다. 이는 당연히 책임을 요구합니다. 적절한 ACL을 사용하면 단순한 사용자/그룹보다 훨씬 더 많은 권한을 갖게 됩니다. 내가 통제권을 위임했다면 나는 내가 원하는 대로 상황이 설정되도록 하기 위해 엄청난 노력을 기울였을 것입니다. 그렇다면 주어진 상황에서 너무 관대해지는 것을 피하는 방법에 대해 논의해야 합니다. 사용자가 권한을 설정하지 않을 경우 그에 따라 권한을 설정해야 합니다. 상속은 어려울 수 있지만 해결될 수 있습니다.

2. 통제권을 가져라

또 다른 일반적이고 간단한 방법은 권한을 재설정하는 것입니다. 더 많은 사람에게 관리 액세스 권한이 있는 경우 이는 유용할 수 있습니다. 그러니 거기에 의존하기보다는것 같다좋아요, 그런 다음 초크 포인트를 정의하고 권한을 재설정하세요. 파일에 상위 파일과 동일한 권한을 부여하려면 상위 파일을 반복하고 하위 파일을 재설정하세요. 불행하게도 잘못된 권한이 설정된 관리자는 시스템의 "도움"을 받게 됩니다. 이 경우 스크립트는 chmod/chflags/setfacls/setuid의 간단한 목록이 됩니다.

3. 클리너

매우 복잡하고 보안 수준이 낮은 시스템이 있고 관리자 역할을 하며 (단순히 제어권을 갖는 것이 아니라) 신중한 방식으로 시스템을 정리해야 하는 경우 경우에 따라 침입 탐지 시스템(IDS)을 살펴보는 것이 의미가 있습니다. . 그러한 잘 알려진 시스템 중 하나는 다음과 같습니다.인계철선. 이는 시스템을 모니터링하는 데 도움이 되며 예기치 않은 변경 사항이 발생할 때 알려줍니다. Tripwire 정책을 구체적으로 검토해야 합니다.이중 정책그리고 재산p - Permission & filemode bits

심사당신에게도 관심이 있을 수 있습니다.

관련 정보