루트가 아닌 폴더에 있는 모든 루트 소유 파일 나열

루트가 아닌 폴더에 있는 모든 루트 소유 파일 나열

서버의 루트 권한 제거와 관련하여 감사를 수행해야 합니다. 무언가가 깨지거나 도도의 길로 가는 위험을 최소화하기 위해 루트 소유가 아닌 폴더 내에서 루트 소유의 모든 파일/폴더를 검색하고 싶습니다.

다음과 같은 파일을 찾아 나열하는 방법이 있습니까?

> ls -la
drwxr-xr-x. 24 admin users     4096 Sep 27 12:53 .      [non root folder]
dr-xr-xr-x. 28 root root       4096 Mar 15  2017 ..
drwxrwxr-x.  2 admin users     4096 Sep 27 13:00 bin
drwxr-xr-x.  6 root  root      4096 Feb  9  2017 monit  [root file/folder]

~처럼

/bin/opt/monit
...

감사합니다.

답변1

1

find /starting/path -type d ! -user root -exec find {} -maxdepth 1 -user root \;

루트가 소유하지 않은 모든 디렉터리에 대해 루트가 소유한 직계 하위 항목을 나열하는 별도의 디렉터리가 find실행됩니다.

2

find /starting/path -user root -execdir sh -c 'test `stat -c %U ./` != root' \; -print

루트가 소유한 모든 파일에 대해 상위 디렉터리가 루트의 소유가 아닌지 테스트하는 별도의 셸이 실행됩니다.


두 명령의 성능이 다릅니다. 첫 번째는 루트가 소유하지 않은 모든 디렉터리에 대해 하위 프로세스를 만듭니다. 두 번째 명령은 루트가 소유한 모든 파일에 대해 두 개의 프로세스를 생성합니다. 그러한 디렉토리가 상대적으로 적고 파일이 많을 것으로 예상되면 (1)을 사용하십시오. 그러한 디렉토리는 많고 파일은 거의 없을 것으로 예상된다면 (2)를 사용하십시오.

일반적으로 디렉터리보다 파일이 더 많기 때문에 (1)을 선호해야 합니다.

관련 정보