/tmp를 가리키는 존재하는 모든 링크를 감지하시겠습니까?

/tmp를 가리키는 존재하는 모든 링크를 감지하시겠습니까?

/tmpUbuntu의 내 폴더를 가리키는 파일 링크가 존재하는지 확인하고 싶습니다 .

배경:
어떤 사고로 인해 내 폴더 권한이 755로 변경되는 문제가 있었습니다 /tmp. 루트가 아닌 사용자로서 시스템이 더 이상 올바르게 실행되지 않았습니다.

어쩌면 어딘가에 대한 링크 /tmp와 명령이 있을 수도 있습니다.

chmod 755 . -Rf 

해당 폴더에서 호출된 것이 기본 /tmp폴더에 영향을 미쳤습니다.

나는 그것을 수리해야했습니다 :

chmod 777 /tmp
chmod +t /tmp
sudo chown root:root /tmp

파일 시스템이 하나뿐이므로 문제가 없어야합니다.

답변1

이 시도:

find / -path /proc -prune -o \( -lname '*/tmp' -o -lname '*/tmp/' \) -exec ls -l {} \;

샘플 출력:

# find / -path /proc -prune -o -lname '*/tmp' -exec ls -l {} \;
lrwxrwxrwx. 1 sergey sergey 4 Sep 22 11:27 /home/sergey/xxx/tmp -> /tmp
lrwxrwxrwx. 1 root root 10 Jun 20 10:28 /usr/tmp -> ../var/tmp
find: `/run/user/sergey/gvfs': Permission denied

답변2

내가 아는 한, inode를 가리키는 모든 심볼릭 링크를 나열하는 쉬운 방법은 없습니다. 따라서 표준을 사용하는 것이 좋습니다찾다유틸리티-엘그리고-동일파일스위치:

  • -동일파일대상 파일의 inode를 기준으로 비교합니다.
  • -엘검색에 사용자가 찾고 있는 기호 링크가 포함됩니다.

다음은 /bin에 /bin/dash가 있는 예입니다.

$ find -L  /bin -samefile /bin/dash -exec ls -lhi {} \;
786515 lrwxrwxrwx 1 root root 4 Mar 29  2012 /bin/sh -> dash
786436 -rwxr-xr-x 1 root root 108K Mar 29  2012 /bin/dash

이 출력에서 ​​/bin/dash에 대한 심볼릭 링크에 있는 /bin/sh의 inode 번호(첫 번째 열)와 화살표(마지막 열)를 모두 볼 수 있습니다. 하드링크인 경우 inode 번호는 다른 파일에 대해 동일하며 마지막 열에는 화살표가 없습니다.

마지막으로, 전체 파일 시스템에서 이러한 링크를 찾아야 한다면 다음과 같은 일부 디렉터리를 제외하겠습니다./개발자,/proc그리고/sys검색에서. 이 작업은 다음과 같이 수행됩니다.-길그리고-치다스위치(원하는 만큼 추가할 수 있습니다.-영형의미 전환또는),2>/dev/널잠재적인 오류를 가리기 위해 여기에 있습니다.

$ sudo find -L  / \( -path /dev -o -path /proc -o -path /sys \) -prune -samefile /bin/dash -exec ls -lhi {} \; 2>/dev/null

전체 파일 시스템을 검색하는 데는 많은 시간이 걸릴 수 있으므로(주로 크기에 따라) 이 옵션을 최후의 수단으로 고려할 것입니다. 건초 더미에서 바늘을 찾는 것과 같습니다. 불가능하지는 않지만 많은 노력이 필요합니다...

답변3

이 질문 덕분에 답을 찾았습니다.Linux: 주어진 '원본' 파일의 모든 심볼릭 링크를 찾으시겠습니까? (역방향 '읽기 링크')

find / -exec ls -ald {} ';' 2>/dev/null | grep '\-> /tmp' |grep -v /proc/

관련 정보