어떤 권한이 하드 링크 생성에 영향을 줍니까? 파일 소유권 자체가 중요합니까?
사용자 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
하고 권한이 변경되지 않으면 하드 링크가 성공합니다. 내가 여기서 무엇을 놓치고 있습니까?
답변
하드 링크를 만들려면 모든 경우에 alice
대한 write+execute
권한 이 필요합니다 target-dir
. 필요한 권한 target.txt
은 다음과 같습니다.
- 경우
fs.protected_hardlinks = 1
다음alice
중 하나를 소유해야target.txt
또는 적어도read+write
그 권한을. - 그렇다면
fs.protected_hardlinks = 0
모든 권한 집합이 수행됩니다. 000도 괜찮습니다.
비슷한 질문 에 대한이 답변에는이 질문에 대한 답변이 누락되었습니다.
에서 http://kernel.opensuse.org/cgit/kernel/commit/?id=800179c9b8a1 [강조 광산]
하드 링크 :
시스템 파일과 동일한 파티션에 사용자 쓰기 가능 디렉토리가있는 시스템에서 오랜 보안 문제는 하드 링크 기반의 사용 시간 점검 시간 경쟁이며, 세계 기록 가능 디렉토리에서 가장 일반적으로 나타납니다 / tmp와 같은 이 결함을 악용하는 일반적인 방법은 주어진 하드 링크를 따라갈 때 권한 경계를 넘는 것입니다 (즉, 루트 프로세스는 다른 사용자가 만든 하드 링크를 따릅니다). 또한 사용자가 잠재적으로 취약한 setuid / setgid 파일을 “고정”하여 관리자가 실제로 시스템을 완전히 업그레이드하지 못하는 문제가 있습니다.
해결 방법은 사용자가 이미 기존 파일의 소유자이거나 기존 파일에 대한 읽기 / 쓰기 액세스 권한이있는 경우에만 하드 링크를 만들 수 있도록하는 것 입니다.
답변
alice
필요 최소한 읽기 대한 권한 target.txt
및 쓰기 + 실행 권한을 target-dir
.
이제 권한 구조는 3 중으로 구분 된 세트로 작동합니다.
- 사용자 권한 : 노드를 소유 한 사용자 에게 적용됩니다 .
- 그룹 권한 : 노드를 소유 한 그룹에 속한 모든 사용자에게 적용됩니다 .
- 다른 사람의 권한 : 노드를 소유하지 않은 다른 사용자 / 그룹에 적용됩니다 .
따라서 소유권 질문은 필요한 권한에 대한 권한 집합에만 영향을 미칩니다 alice
.
- 경우
alice
소유자 사용자입니다, 필요한 권한은 “사용자”부분에 있어야합니다. alice
그룹을 소유 한 그룹의 일부인 경우 필요한 권한이 “그룹”파트에 있어야합니다.- 경우
alice
그것을 소유하지 그것을 소유하는 그룹의 일부가 아닌 않으며, 필요한 권한은 ‘기타’부분에 있어야합니다.