저는 서버에서 쓰기 가능한 모든 디렉터리를 검색하고 .php 및 .html 파일이 포함된 디렉터리를 표시하는 Linux 명령을 찾고 있습니다.
그것은 다음과 같습니다:
find -type d -writable -exec find {} -iname '*.php' -o -iname '*.html' \;
10번!
답변1
그냥 교체 -writable
하세요-perm
find -type d -perm -a=w -exec find {} -iname '*.php' -o -iname '*.html' \;
답변2
find
다음과 함께 uniq
사용 sudo
:
find / -type f -iname '*.php' -execdir sudo -u #UID -- bash -c 'test -w ./ && pwd' ';' |uniq
UID를 존재하지 않는 사용자 ID로 바꾸십시오. 그러면 test -w
다음에서만 true를 얻을 수 있습니다.모두쓰기 권한.
답변3
4.8.0보다 엄격하게 높은 GNU 버전 find
(2021년 11월 8일 현재 출시되지 않음)의 경우 다음을 수행할 수 있습니다.
find . -type d -perm -a=w -print0 |
LC_ALL=C find -file0-from - -mindepth 1 -maxdepth 1 \
'(' -iname '*.php' -o -iname '*.html' ')'
(현재 개발 버전에서는 find
첫 번째가 아무것도 반환하지 않으면 두 번째가 불평하는데 이는 이상적이지 않습니다. 릴리스 전에 수정되기를 바랍니다. 그렇지 않은 경우 moreutils를 사용하여 ifne
문제를 해결할 수 있습니다.)
-perm -a=w
w
모든 비트가 설정된 파일을 선택하십시오사용자,그룹그리고다른, 그러나 이러한 디렉토리를 쓰기 가능하게 만들려면 사용자는 여전히 해당 디렉토리에 도달할 수 있어야 하며 따라서 그곳으로 이어지는 모든 경로 구성 요소에 대한 검색 액세스 권한이 있어야 합니다. 또한 구성원이 없는 그룹에서 쓸 수 없는 디렉터리는 여전히 누구나 쓸 수 있는 것으로 간주될 수 있지만 여기서는 보고되지 않습니다.
-writable
사용자 호출 자체로 쓸 수 있는 파일을 선택합니다 find
( access()
시스템 호출을 사용하므로 파일 자체에 대한 권한만 고려되지 않음).
를 사용하면 zsh
다음을 수행할 수 있습니다.
set -o extendedglob # best in ~/.zshrc
for d (**/*(ND/Ff[a+w])) print -rC1 -- $d/*.(#i)(php|html)(ND)