하드 링크 생성 - 권한?

하드 링크 생성 - 권한?

하드 링크 생성에 영향을 미치는 권한은 무엇입니까? 파일 소유권 자체가 중요합니까?


사용자가 alice디렉토리의 파일에 대한 하드 링크를 생성하려고 한다고 가정합니다.target.txttarget-dir

  • alice에는 어떤 권한이 필요합니까 ?target.txttarget-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이나 최소한 권한이 필요합니다.alicetarget.txtread+write
  • 그렇다면 fs.protected_hardlinks = 0어떤 권한 세트라도 가능합니다.

비슷한 질문에 대한 답변입니다누락된 정보가 이 질문에 답할 수 있습니다.

~에서이 커밋 메시지(강조):

시스템 파일과 동일한 파티션에 사용자 쓰기 가능 디렉터리가 있는 시스템에서 오랫동안 지속된 보안 문제는 하드 링크 기반 확인 시간 사용 경쟁이며, 가장 일반적으로 /tmp와 같은 전역 쓰기 가능 디렉터리에서 발견됩니다. 이 결함을 악용하는 일반적인 방법은 주어진 하드 링크를 따라갈 때 권한 경계를 넘는 것입니다(즉, 루트 프로세스가 다른 사용자가 만든 하드 링크를 따라갑니다). 또한 사용자가 잠재적으로 취약한 setuid/setgid 파일을 "고정"하여 관리자가 실제로 시스템을 완전히 업그레이드하지 못하게 하는 문제가 있습니다.

해결책은 사용자가 이미 기존 파일의 소유자이거나 이미 기존 파일에 대한 읽기/쓰기 액세스 권한을 갖고 있는 경우에만 하드 링크 생성을 허용하는 것입니다..

답변2

alice필요적어도읽기 권한 target.txt및 쓰기+실행 권한 target-dir.

권한 구조는 이제 세 가지로 구분된 컬렉션으로 작동합니다.

  1. 사용자 권한: 적용 대상사용자노드를 소유하세요.
  2. 그룹 권한: 모든 사용자에게 적용됩니다.이 그룹에 속해 있습니다.노드를 소유하세요.
  3. 다른 사람에 대한 권한: 다음에 적용됩니다.다른 사용자/그룹노드를 소유하지 않습니다.

따라서 소유권 문제는 필요한 권한이 있는 권한 집합에만 영향을 미칩니다 alice. 즉:

  • alice소유자 사용자인 경우 필요한 권한이 사용자 섹션에 있어야 합니다 .
  • 해당 그룹을 소유한 그룹의 일부인 경우 alice필수 권한이 ​​"그룹" 섹션에 있어야 합니다.
  • alice소유하지 않고 이를 소유한 그룹에 속하지 않는 경우 필요한 권한이 "기타" 섹션에 있어야 합니다.

관련 정보