태그 보관물: linux

linux

하드 링크 생성-권한? 영향을 줍니까? 파일 소유권

어떤 권한이 하드 링크 생성에 영향을 줍니까? 파일 소유권 자체가 중요합니까?


사용자 alicetarget.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 중으로 구분 된 세트로 작동합니다.

  1. 사용자 권한 : 노드를 소유 한 사용자 에게 적용됩니다 .
  2. 그룹 권한 : 노드를 소유 한 그룹에 속한 모든 사용자에게 적용됩니다 .
  3. 다른 사람의 권한 : 노드를 소유하지 않은 다른 사용자 / 그룹에 적용됩니다 .

따라서 소유권 질문은 필요한 권한에 대한 권한 집합에만 영향을 미칩니다 alice.

  • 경우 alice소유자 사용자입니다, 필요한 권한은 “사용자”부분에 있어야합니다.
  • alice그룹을 소유 한 그룹의 일부인 경우 필요한 권한이 “그룹”파트에 있어야합니다.
  • 경우 alice그것을 소유하지 그것을 소유하는 그룹의 일부가 아닌 않으며, 필요한 권한은 ‘기타’부분에 있어야합니다.

답변