표준 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_symlinks
가 1
설정된 경우와 같습니다. 일시적으로 비활성화되었습니다.권장되지 않음, 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와 팔로어가 일치하는 경우, 또는 디렉터리 소유자가 심볼릭 링크의 소유자와 일치하는 경우에만 심볼릭 링크를 따라갈 수 있도록 허용하는 것입니다.