하드 링크 생성에 영향을 미치는 권한은 무엇입니까? 파일 소유권 자체가 중요합니까?
사용자가 alice
디렉토리의 파일에 대한 하드 링크를 생성하려고 한다고 가정합니다.target.txt
target-dir
- 및
alice
에는 어떤 권한이 필요합니까 ?target.txt
target-dir
target.txt
사용자가 소유bill
하고target-dir
사용자가 소유한 경우chad
이것이 변경됩니까 ?
ext4
파일 시스템에 다음 폴더/파일 구조를 생성하여 이 상황을 시뮬레이션하려고 했습니다 .
#> ls -lh . *
.:
drwxr-xr-x 2 bill bill 60 Oct 1 11:29 source-dir
drwxrwxrwx 2 chad chad 60 Oct 1 11:40 target-dir
source-dir:
-r--r--r-- 1 bill bill 0 Oct 1 11:29 target.txt
target-dir:
-rw-rw-r-- 1 alice alice 0 Oct 1 11:40 dummy
alice
에 대한 소프트 링크는 만들 수 있지만 하드 target.txt
링크는 만들 수 없습니다.
#> ln source-dir/target.txt target-dir/
ln: failed to create hard link ‘target-dir/target.txt’ => ‘source-dir/target.txt’: Operation not permitted
alice
변경 권한이 있거나 없는 경우 target.txt
하드 링크가 성공합니다. 내가 여기서 무엇을 놓치고 있는 걸까요?
답변1
하드 링크를 생성하려면 alice
모든 경우에 권한이 필요합니다 write+execute
. target-dir
필요한 권한은 target.txt
다양합니다.
- 그렇다면 소유권
fs.protected_hardlinks = 1
이나 최소한 권한이 필요합니다.alice
target.txt
read+write
- 그렇다면
fs.protected_hardlinks = 0
어떤 권한 세트라도 가능합니다.
비슷한 질문에 대한 답변입니다누락된 정보가 이 질문에 답할 수 있습니다.
~에서이 커밋 메시지(강조):
시스템 파일과 동일한 파티션에 사용자 쓰기 가능 디렉터리가 있는 시스템에서 오랫동안 지속된 보안 문제는 하드 링크 기반 확인 시간 사용 경쟁이며, 가장 일반적으로 /tmp와 같은 전역 쓰기 가능 디렉터리에서 발견됩니다. 이 결함을 악용하는 일반적인 방법은 주어진 하드 링크를 따라갈 때 권한 경계를 넘는 것입니다(즉, 루트 프로세스가 다른 사용자가 만든 하드 링크를 따라갑니다). 또한 사용자가 잠재적으로 취약한 setuid/setgid 파일을 "고정"하여 관리자가 실제로 시스템을 완전히 업그레이드하지 못하게 하는 문제가 있습니다.
해결책은 사용자가 이미 기존 파일의 소유자이거나 이미 기존 파일에 대한 읽기/쓰기 액세스 권한을 갖고 있는 경우에만 하드 링크 생성을 허용하는 것입니다..
답변2
alice
필요적어도읽기 권한 target.txt
및 쓰기+실행 권한 target-dir
.
권한 구조는 이제 세 가지로 구분된 컬렉션으로 작동합니다.
- 사용자 권한: 적용 대상사용자노드를 소유하세요.
- 그룹 권한: 모든 사용자에게 적용됩니다.이 그룹에 속해 있습니다.노드를 소유하세요.
- 다른 사람에 대한 권한: 다음에 적용됩니다.다른 사용자/그룹노드를 소유하지 않습니다.
따라서 소유권 문제는 필요한 권한이 있는 권한 집합에만 영향을 미칩니다 alice
. 즉:
alice
소유자 사용자인 경우 필요한 권한이 사용자 섹션에 있어야 합니다 .- 해당 그룹을 소유한 그룹의 일부인 경우
alice
필수 권한이 "그룹" 섹션에 있어야 합니다. alice
소유하지 않고 이를 소유한 그룹에 속하지 않는 경우 필요한 권한이 "기타" 섹션에 있어야 합니다.