서버의 루트 권한 제거와 관련하여 감사를 수행해야 합니다. 무언가가 깨지거나 도도의 길로 가는 위험을 최소화하기 위해 루트 소유가 아닌 폴더 내에서 루트 소유의 모든 파일/폴더를 검색하고 싶습니다.
다음과 같은 파일을 찾아 나열하는 방법이 있습니까?
> 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)을 선호해야 합니다.