기본적으로 디렉토리의 모든 파일을 실행 가능하게 만드시겠습니까?

기본적으로 디렉토리의 모든 파일을 실행 가능하게 만드시겠습니까?

chmod u+x [file]나는 모든 쉘 스크립트를 저장하는 디렉토리를 가지고 있으며, 매번 거기로 갈 필요가 없도록 기본적으로 새 파일을 실행할 수 있기를 원합니다 . 이런 일이 발생하도록 하는 방법이 있나요? 노력했지만 chmod -R u+x [directory]그게 전부가 됐어기존의실행 파일이 내가 추가한 파일이 아닙니다.~ 후에. 이를 달성하기 위해 쉘 명령이나 쉘 스크립트를 사용하도록 제안할 수 있습니까? 감사해요.

답변1

새 파일에 권한을 적용하려면 ACL(액세스 제어 목록)이 필요합니다. 이를 수행하는 주요 도구는 다음과 같습니다.setfacl.

디렉터리에 생성된 새 파일이 항상 누구나 쓸 수 있거나 특정 그룹이 소유하도록 디렉터리에 ACL을 설정할 수 있습니다. 특히 새 파일을 실행 가능하게 만드는 데 관심이 있습니다.

이 작업은 다음을 통해 수행됩니다.

sudo setfactl -Rm d:u::rwx dir

이는 "새 파일에 대한 기본 사용자 권한을 rwx로 반복적으로 설정"한다는 의미입니다. 실험을 하면 다음과 같은 결과를 얻습니다.

$ mkdir dir
$ getfacl dir
user::rwx
group::r-x
other::r-x
$ setfacl -Rm d:u::rwx dir
$ getfacl dir
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

default:좋습니다. 이제 이 디렉터리의 새 파일에 이러한 특정 권한이 적용된다는 내용의 몇 줄을 추가했습니다 . 하지만 touch새 파일을 열면 다음과 같은 내용이 표시됩니다.

touch dir/file
ls -l dir
-rw-r--r-- 1 usr grp 0 Aug 19 10:57 file

사용자 실행 파일이 아닙니다! 이것매뉴얼 페이지설명하다:

perms 필드는 읽기(r), 쓰기(w), 실행(x) 권한을 나타내는 문자의 조합입니다. 권한 필드의 대시 문자(-)는 무시됩니다. 수치X는 파일이 디렉터리이거나 이미 사용자의 실행 권한을 가지고 있는 경우 실행 권한을 나타냅니다.. 또는 perms 필드는 읽기(4), 쓰기(2) 및 실행(1)의 비트 조합으로 권한을 숫자로 정의할 수 있습니다. 권한 필드가 없거나 대시로만 구성된 권한 필드는 권한이 없음을 의미합니다.

관련 부분을 다 해봤습니다용감한. 새 파일을 실행 가능하게 만들기 위해 ACL을 설정할 수 있지만 x이는 파일에 이미 일부 사용자에 대한 실행 권한이 있는 경우에만 작동합니다.

이건 한계야. 나는 이것이 보안 제한이라고 생각하므로 악성 응용 프로그램은 원하는 파일을 디렉터리에 붙여넣고 자동으로 실행 가능하게 만든 다음 실행할 수 없습니다.

ACL을 사용하여 유사한 작업을 수행하는 방법을 보여주기 위해 또 다른 예를 보여 드리겠습니다.

setfacl -Rm d:g::rw dir
touch dir/file1
ls -l dir/file1
-rw-rw-r-- 1 usr grp 0 Aug 19 11:00 dir/file1

새 파일을 쓰기 가능하게 만들기 위해 기본 규칙을 추가하도록 ACL에 지시한 것을 볼 수 있습니다. 새 파일을 생성할 때 그룹 쓰기가 가능한지 확인합니다(반면 새 파일은 일반적으로 그룹 읽기만 가능함).

관련 정보