/tmp
Ubuntu의 내 폴더를 가리키는 파일 링크가 존재하는지 확인하고 싶습니다 .
배경:
어떤 사고로 인해 내 폴더 권한이 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/