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에 지시한 것을 볼 수 있습니다. 새 파일을 생성할 때 그룹 쓰기가 가능한지 확인합니다(반면 새 파일은 일반적으로 그룹 읽기만 가능함).