하드 링크, 심볼릭 링크 및 ACL 폴더 권한은 어떻게 상호 작용합니까?

하드 링크, 심볼릭 링크 및 ACL 폴더 권한은 어떻게 상호 작용합니까?

이것은 제가 깨닫기 조금 어렵지만 다음과 같은 매우 이상한 행동에 직면했습니다.ACL 확장 파일 권한및 하드/심볼릭 링크. 질문을 짧고 간결하게 하려고 노력하겠습니다. 하지만 먼저 현재 상황에 대한 예를 보여 드리고 싶습니다. 무슨 일이 일어나고 있는지, 이름이 무엇인지 전혀 알 수 없기 때문입니다.


두 명의 사용자가 있는 시스템이 있다고 가정해 보겠습니다. 사용자를 호출 alice하면 다음 권한을 bob가진 폴더를 공유합니다 .stuff

bob@server:~$ getfacl /home/stuff getfacl: 
Removing leading '/' from absolute path names
# file: home/stuff
# owner: alice
# group: bob 
user::rwx
group::-wx
other::---
default:user::rwx
default:user:bob:rwx
default:group::-wx
default:mask::rwx
default:other::---

보시다시피, 폴더의 소유자는 alicebob이 폴더에 콘텐츠를 작성하고 alice(+x 플래그)에서 실행될 수 있도록 실행 가능하게 만들 수 있습니다. 그러나 ACL로 인해 파일이 bob 에 작성/복사될 때마다 stuff파일에 대한 권한이 변경되어 이렇게 됩니다. 홈 디렉토리에 파일을 생성 bob하고 이를 stuff.

bob@server:~$ touch myfile
bob@server:~$ chmod 777 myfile
bob@server:~$ ls -la myfile
-rwxrwxrwx 1 bob bob 0 myfile

bob@server:~$ mv myfile /home/stuff/myfile
bob@server:~$ ls -la /home/stuff/myfile
-rwxrwx---+ 1 bob bob 0 /home/stuff/myfile

보시다시피 폴더에 있어도 액세스 myfile할 수 없습니다. 파일이 속해 있기 때문에 위 명령에 따라 마지막 권한 인 "기타" 파일 권한을 사용하여 액세스해야 합니다 . 그럼에도 불구하고 그녀는 폴더의 소유자이기 때문에 해당 폴더를 삭제할 수 있습니다(비록 보호된다는 경고가 표시되지만).stuffalicebob:bobalice---lsalicemyfile

이제 재미가 있습니다. 이동/복사하지 않으면 myfile어떻게 되는지 관찰 하고 이에 대한 하드 링크를 만듭니다.

bob@server:~$ ln myfile /home/stuff/myfile
bob@server:~$ ls -la /home/stuff/myfile
-rwxrwxrwx 2 bob bob 0 /home/stuff/myfile

당연히 alice읽고 사용하는 것이 가능합니다. 실제로 내 시스템에서 테스트해 보면 그렇습니다. 그래도 심볼릭 링크가 전혀 작동하지 않는 것 같습니다.

bob@server:~$ ln -s myfile /home/stuff/myfile
bob@server:~$ ls -la /home/stuff/myfile
lrwxrwxrwx 1 bob bob 4 /home/stuff/myfile -> /home/bob/myfile

이번에는 링크에도 모든 권한이 설정되어 있지만 lrwxrwxrwx(정확하게는 링크이기 때문에 누구나 따라갈 수 있어야 권한을 얻을 수 있음) alice실행할 방법은 없고 삭제만 가능합니다.


내 질문:

  • 애초에 하드 링크를 통해 ACS 권한을 "건너뛰기"할 수 있는 이유는 무엇입니까?
  • 왜 동일한 트릭이 심볼릭 링크에 적용되지 않습니까?
  • 이는 의도적인 것입니까, 아니면 보안 위반입니까?

답변1

aliceAlice 는 디렉터리에 대한 쓰기 권한을 갖고 있으므로 소유자 stuff/가 아니더라도 파일의 내용을 수정할 수 있습니다.

Linux ACL을 사용하는 경우 아래 설명과 같이 파일이 생성될 때(또는 복사본이 대상에 새 파일을 생성하므로 복사할 때) 권한이 적용됩니다.man acl. 파일 이동mv 예비 권한파일을 복사하지 않고 이동할 수 있는 경우. mvACL myfile이 .

하드 링크를 만드는 것은 완전히 다릅니다. 하드 링크를 생성하면 다음을 가리키는 디렉터리 항목(대상 디렉터리에)이 생성됩니다.동일한 인덱스 노드원본 파일과 동일합니다. 즉, 동일한 파일이 여러 디렉터리에 존재합니다. 파일 권한(ACL 및 기존 UNIX 권한)은 inode에 저장됩니다. 및 둘 다 동일한 inode를 /home/stuff/myfile가리키 므로 /home/bob/myfile둘 중 하나에 대한 모든 변경 사항은 다른 항목에도 반영됩니다. 이것이 바로 alice하드 링크에 액세스할 수 있는 이유입니다. (777)의 권한은 의 /home/bob/myfile권한과 동일합니다 /home/stuff/myfile.

대신 심볼릭 링크는 대상 경로를 가리킵니다. 심볼릭 링크가 가리키는 파일에 접근하려면 대상 파일에 접근할 때와 동일한 권한이 필요합니다. 홈 디렉터리에 대한 검색(실행 비트) 접근이 alice불가능하여 접근이 실패할 수 있습니다.bob

관련 정보