사용자 변경 시 심볼릭 링크가 예상대로 작동하지 않습니다.

사용자 변경 시 심볼릭 링크가 예상대로 작동하지 않습니다.

표준 UBUNTU 16 LTS에서는 Symlink가 작동하지 않습니다. "Permission Denied"라고 표시됩니다. chown.

완전한 예:

sudo rm /tmp/file.txt  # if exist, remove

cd ~
sudo chmod 666 data/file.txt
ls -l data/file.txt    # "-rw-rw-rw-" as expected
more data/file.txt     # working fine
sudo ln -sf $PWD/data/file.txt /tmp/file.txt  # fine
ls -l /tmp/file.txt    # "lrwxrwxrwx",  /tmp/file.txt -> /home/thisUser/file.txt
more /tmp/file.txt     # fine

sudo chown -h postgres:postgres /tmp/file.txt

sudo more /tmp/file.txt   #  NOT WORK! but its is sudo! and 666!

답변1

이러한 작업을 수행하면 오류 메시지가 생성됩니다.허가가 거부되었습니다. 디렉터리에는 /tmp고정 비트를 포함한 권한이 있습니다. 이 오류는 커널 구성의 결과입니다 fs.protected_symlinks.

설정을 표시하려면 sysctl fs.protected_symlinks1설정된 경우와 같습니다. 일시적으로 비활성화되었습니다.권장되지 않음, sysctl fs.protected_symlinks=0.영구 폐쇄되었습니다. 이번에도 마찬가지입니다.권장되지 않음, sysctl -w fs.protected_symlinks=0.

바라보다patchwork.kernel.org더 많은 정보를 알고 싶습니다.

링크 끊어짐을 방지하기 위해 하이퍼링크의 심볼릭 링크에 대한 주요 요약 단락은 다음과 같습니다.

키스 쿡 - 2012년 7월 2일 오후 8시 17분

이는 Linux VFS에 기호 링크 및 하드 링크 제한을 추가합니다.

심볼릭 링크:

오랫동안 지속되어 온 보안 문제 중 하나는 심볼릭 링크 기반 검사 시간 사용 시간 경쟁으로, 이는 누구나 쓰기 가능한 디렉터리(예: /tmp)에서 가장 흔히 볼 수 있습니다. 이 결함을 악용하는 일반적인 방법은 주어진 기호 링크를 따를 때 권한 경계를 넘는 것입니다(즉, 루트 프로세스가 다른 사용자에게 속한 기호 링크를 따릅니다). 수년 동안 수백 개의 사례가 포함된 불완전할 수 있는 목록을 보려면 다음을 참조하세요. http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp

해결책은 누구나 쓸 수 있는 끈적한 디렉터리 외부에서, 또는 심볼릭 링크의 uid와 팔로어가 일치하는 경우, 또는 디렉터리 소유자가 심볼릭 링크의 소유자와 일치하는 경우에만 심볼릭 링크를 따라갈 수 있도록 허용하는 것입니다.

관련 정보