파일 / 디렉토리의 권한을 누가 변경할 수 있습니까?


14

파일 / 디렉토리의 소유자와 루트 사용자가 파일 / 디렉토리의 권한을 변경할 수있는 유일한 사용자라고 생각합니다. 권한을 변경하도록 허용 된 다른 사용자가 있습니까?

답변:


19

소유자 및 root(수퍼 유저) 만 파일 또는 디렉토리의 권한을 변경할 수 있습니다. 이는 소유자와 수퍼 유저가 읽기 ( r), 쓰기 ( w) 및 실행 ( x) 권한을 설정할 수 있음을 의미합니다 . 그러나 명령 파일과 디렉토리의 소유권 (사용자 / 그룹)을 변경 chown/ chgrp에만 허용됩니다 root.


19
사용자가 새 그룹의 구성원 인 경우 파일 소유자가 해당 파일의 그룹 소유권을 변경할 수 있습니다.
— Kusalananda

7

정상적인 작동을 위해서는 루트와 소유자 만 가능 chmod합니다. 또한, 루트 수 chown와 chgrp, 또한 소유자 수 chgrp만큼 소유자 타겟 그룹의 멤버로.

보안을 위해 다른 경우가 있습니다. 파일이 포함 된 디렉토리에 대한 쓰기 권한이있는 사용자는 파일을 사본으로 대체하여 소유자가되어 권한 및 내용을 수정할 수 있습니다.

이렇게 :

14:14 mybox:~ mkdir mydir
14:14 mybox:~ cd mydir/
14:14 mybox:mydir echo foo | sudo tee yourfile
foo
14:14 mybox:mydir ls -ld . yourfile 
drwxr-xr-x  3 me    staff  102 Apr 11 14:14 .
-rw-r--r--  1 root  staff    4 Apr 11 14:14 yourfile

디렉토리를 작성하고 파일을 루트로 작성했습니다. root는 파일을 소유하고 있기 때문에 파일에 쓸 수 없으며 chmod 할 수도 없습니다.

14:15 mybox:mydir echo bar > yourfile 
-bash: yourfile: Permission denied
14:15 mybox:mydir chmod a+x yourfile
chmod: Unable to change file mode on yourfile: Operation not permitted

그러나 디렉토리에 대한 쓰기 권한이 있으므로 파일을 교체하여 소유권을 얻을 수 있습니다.

14:15 mybox:mydir mv yourfile yourfile2
14:15 mybox:mydir cp yourfile2 yourfile
14:15 mybox:mydir ls -ld . yourfile 
drwxr-xr-x  4 me   staff  136 Apr 11 14:15 .
-rw-r--r--  1 me   staff    4 Apr 11 14:15 yourfile

그리고 이제 우리는 소유자이므로 해당 파일로 원하는 것을 수행 할 수 있습니다.

14:15 mybox:mydir echo bar > yourfile 
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar

마찬가지로, 쓰기 권한을 가진 사용자 임의의 파일에 이르는 전체 경로에있는 디렉토리에 따라서 주어진 이름을 가진 파일의 소유권을 얻고, 그 시점에서 디렉토리 구조를 대체 할 수 있습니다. 실제 원본 파일 (우리가 "yourfile2"로 이름을 바))의 소유권 또는 권한은 물론 변경되지 않습니다.

14:17 mybox:mydir ls -l yourfile2
-rw-r--r--  1 root  staff  4 Apr 11 14:14 yourfile2

Linux 배포가 Windows와 같은 추가 보안 기능을 지원하는지 알고 있습니까? Windows에있는 경우 디렉토리가 허용되는 경우에도 삭제를 방지하기 위해 파일의 삭제 권한을 거부 할 수 있습니다.
— Kevin Li

현재 (많은) 현재 많은 Linux 버전 getfacl / setfacl은 "클래식"스타일 파일 권한보다 더 많은 유연성을 제공 하는 파일 레벨 액세스 제어 목록을 지원합니다 . * nix에서 파일 삭제는 디렉토리에서 파일에 대한 링크를 제거하여 작동하므로 파일 제거는 항상 디렉토리 권한에 의해 제어됩니다. 파일 권한 자체는 아무런 역할을하지 않습니다.
— Bass

"모든 것이 파일입니다"라는 유닉스 철학에 매우 맞습니다. 그래서 당신은 리눅스에서 그런 일을 할 수 없다고 말하고 있습니까?
— Kevin Li

3
@KevinLi이 답변은 실제로 완전하지 않습니다. 디렉토리에 고정 비트 를 설정하여 비 소유자가 파일을 삭제하거나 이름을 바꾸는 기능을 제한 할 수 있습니다. 이 질문과 그 답변을 참조하십시오 : unix.stackexchange.com/questions/79395/… ACL이나 다른 체계를 사용할 필요가 없습니다.
— Andrew Henle

@KevinLi * nix 파일 시스템은 Windows 시스템과 매우 다릅니다. 파일은 디렉토리 계층 구조와 별도로 존재하며 디렉토리에서 해당 파일을 가리키는 여러 개의 "하드 링크"를 가질 수 있습니다. 파일을 삭제한다는 것은 실제로 디렉토리에서 수행되는 하드 링크를 제거하는 것을 의미합니다. 파일은 하드 링크를 가리키는 링크 수를 추적하며, 하드 링크를 가리키는 하나 이상의 하드 링크가있는 한 실제 파일은 디스크에 남아 있습니다. 따라서, 삭제는 디렉토리 권한에 의해 제어 할 유일한 파일 소유자 및 루트 삭제를 할 수 있도록 앤드류 말한대로, 특별한 옵션이 있습니다.
— Bass

1

이 chmod명령은 동일한 이름의 시스템 호출을 직접 호출합니다. chmod(2)시스템 호출 매뉴얼 페이지 (Linux 4.10)에는 다음과 같은 내용이 있습니다.

호출 프로세스의 유효 UID는 파일 소유자와 일치해야하거나 프로세스에 특권이 있어야합니다 (Linux : CAP_FOWNER기능 이 있어야 함 ).

호출 프로세스에 권한이 부여되지 않고 (Linux : CAP_FSETID기능이 없음) 파일 그룹이 프로세스의 유효 그룹 ID 또는 보조 그룹 ID 중 하나와 일치하지 않으면 S_ISGID비트가 해제되지만 오류가 반환되지 않습니다.

따라서 루트 권한으로 실행되는 프로세스는 CAP_FOWNER기능을 삭제하지 않은 경우 모든 파일의 권한을 변경할 수 있습니다 .


또한 관심의 대상은 chown; 에 대한 매뉴얼 페이지는 chown(2)말합니다 :

권한있는 프로세스 (Linux : CAP_CHOWN기능 이있는 프로세스) 만 파일 소유자를 변경할 수 있습니다. 파일 소유자는 파일 그룹을 해당 소유자가 속한 그룹으로 변경할 수 있습니다. 권한있는 프로세스 (Linux : with CAP_CHOWN)는 그룹을 임의로 변경할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.