디렉터리 구조에서 균일하지 않은 파일/디렉터리 권한을 어떻게 찾을 수 있나요? 다음과 유사한 find 명령을 사용해 보았습니다.
find /bin ! \( -perm 777 -o -perm 776 -o -perm 775 -o -perm 774 -o -perm 773 -o -perm 772 -o -perm 771 -o -perm 770 -o -perm 760 -o -perm 750 -o -perm 740 -o -perm 730 -o -perm 720 -o -perm 710 -o -perm 700 -o -perm 600 -o -perm 500 -o -perm 400
하지만 나머지 순열을 완료하기 전에-exec ls -lL {} \;
나는 또한 비슷한 일을 수동으로 해왔습니다.
ls -lL /bin | grep -v ^-rwxr-xr-x | grep -v ^-rwx--x--x | grep -v ^-rwsr-xr-x | grep -v ^-r-xr-xr-x | grep -v ^-rwxr-xr-t
그러나 이번에도 나머지 순열을 완료하기 전에 명령줄이 부족해졌습니다.
두 방법 모두 매우 어색해 보입니다. 더 좋고, 더 빠르고, 더 쉬운 방법이 있나요? 제가 사용하고 있는 쉘(sh)과 플랫폼(Irix 6.5.22)에는 제한이 있습니다.
답변1
실행 파일을 찾고 계십니까?
find . -type f -perm /+x
어쨌든, / 패턴은 아마도 당신의 친구일 것입니다... 맨 페이지는 다음과 같습니다:
-perm /mode
Any of the permission bits mode are set for the file. Symbolic modes are accepted in this form. You must specify `u', `g' or `o' if you use a symbolic mode. See the
EXAMPLES section for some illustrative examples. If no permission bits in mode are set, this test matches any file (the idea here is to be consistent with the behaviour
of -perm -000).
업데이트: 그렇군요. 이상한 (실행 가능한) 것을 찾고 계시군요...
이것은 작동합니다(여전히 find에서 세 번째 perm 매개변수를 사용하고 있습니다).
견본:
$ ls
000 001 002 003 004 005 006 007 010 020 030 040 050 060 070 100 200 300 400 500 600 700
찾기 명령:
$ find . -type f \( -perm /u-x,g+x -o -perm /u-w,g+w -o -perm /u-r,g+r -o -perm /g-x,o+x -o -perm /g-w,o+w -o -perm /g-r,o+r -o -perm /u-x,o+x -o -perm /u-w,o+w -o -perm /u-r,o+r \) | sort
./001
./002
./003
./004
./005
./006
./007
./010
./020
./030
./040
./050
./060
./070
기본적으로 그룹에는 권한이 있지만 소유자에게는 없는 파일, 전 세계에는 권한이 있지만 그룹에는 없는 파일, 전 세계에는 권한이 있지만 소유자에게는 없는 파일을 나에게 주라는 뜻입니다. 주인은 그렇지 않습니다.
참고: find에는 3개의 perm 매개변수가 있습니다.
- 파마 모드
- 파마 모드
- 파마/모드
p.s. 그 가치는 잘 모르겠습니다...