sudoers 파일에서 기존 실행 파일과 해당 상위 디렉터리 권한을 어떻게 찾을 수 있나요?

sudoers 파일에서 기존 실행 파일과 해당 상위 디렉터리 권한을 어떻게 찾을 수 있나요?

sudoers 파일에 나열된 실행 파일 목록을 구문 분석하고 실행 파일과 상위 디렉터리의 전역 쓰기 가능 권한을 확인하는 명령을 작성할 수 있습니까?

실행 파일 목록을 얻을 수 있습니다. 누구든지 실행 파일과 해당 상위 디렉터리의 권한을 찾는 데 도움을 줄 수 있습니다.

# for i in `cat /etc/passwd | cut -d: -f1`; do for j in `sudo -lU $i | grep '(root)' | awk '{print $3}'`; do if [ -e $j ]; then echo $j; fi; done; done
/usr/bin/tail
/usr/bin/tail
/usr/bin/tail
/usr/bin/php
/usr/local/nagiosxi/scripts/components/getprofile.sh
/usr/local/nagiosxi/scripts/repair_databases.sh
/usr/local/nagiosxi/scripts/manage_services.sh
/etc/init.d/npcd
/etc/init.d/npcd
/etc/init.d/npcd
/etc/init.d/npcd
/etc/init.d/npcd
/usr/bin/php
/usr/local/nagiosxi/scripts/components/getprofile.sh
/usr/local/nagiosxi/scripts/upgrade_to_latest.sh
/usr/local/nagiosxi/scripts/change_timezone.sh
/usr/local/nagiosxi/scripts/manage_services.sh
/usr/local/nagiosxi/scripts/reset_config_perms.sh
/usr/local/nagiosxi/scripts/manage_ssl_config.sh
/usr/local/nagiosxi/scripts/backup_xi.sh

답변1

먼저, 귀하의 스크립트가 내 컴퓨터에서 작동하지 않는다는 점을 지적하고 싶습니다. 하지만 귀하가 귀하의 컴퓨터에서 작동한다고 말씀하셨기 때문에 그 출력을 사용하여 스크립트를 테스트했습니다.

각 파일에 대한 권한을 나열하려면 다음을 통해 출력을 파이프하십시오.

| xargs ls -l

디렉토리의 권한을 나열하고 이 파이프를 추가합니다(이전 파이프 뒤가 아니라 루프 내부).

| sed 's|\(.*\)/.*|\1|' | xargs ls -ld

게으른 방법은 스크립트 결과를 임시 파일로 출력한 다음 cat을 사용하여 읽는 것입니다. (질문에 그렇게 제공했기 때문에 모두 한 줄에 썼습니다.

`for i in `cat /etc/passwd | cut -d: -f1`; do for j in `sudo -lU $i | grep '(root)' | awk '{print $3}'`; do if [ -e $j ]; then echo $j; fi; done; done` > /tmp/suexecs && echo `cat /tmp/suexecs | xargs ls -l` && echo `cat /tmp/suexecs | sed 's|\(.*\)/.*|\1|' | xargs ls -ld ` && rm /tmp/suexecs -f

쉘 스크립트로:

#!/bin/sh
for i in `cat /etc/passwd | cut -d: -f1`; do
    for j in `sudo -lU $i | grep '(root)' | awk '{print $3}'`; do
         if [ -e $j ]; then echo $j; fi; 
    done 
done > /tmp/suexecs
echo `cat /tmp/suexecs | xargs ls -l`
echo `cat /tmp/suexecs | sed 's|\(.*\)/.*|\1|' | xargs ls -ld`
rm /tmp/suexecs -f

답변2

애플리케이션이 시스템에 설치되어 있지 않지만 사용자에게 여전히 루트 액세스 권한이 할당되어 있음을 나타냅니다.

    for i in `cat /etc/passwd | cut -d: -f1`; do
        for j in `sudo -lU $i | grep '(root)' | awk '{print $3}'`; do
             if [ ! -e $j ]; then echo $j; fi;
        done
done

시스템에 설치된 애플리케이션을 표시하고 사용자에게 루트 액세스 권한이 할당됨

for i in `cat /etc/passwd | cut -d: -f1`; do
    for j in `sudo -lU $i | grep '(root)' | awk '{print $3}'`; do
         if [  -e $j ]; then echo $j; fi;
    done
done

시스템에 있는 애플리케이션에 대한 권한 나열

for i in `cat /etc/passwd | cut -d: -f1`; do
    for j in `sudo -lU $i | grep '(root)' | awk '{print $3}'`; do
         if [  -e $j ]; then echo $j; fi;
    done
done > /tmp/suexecs
echo `cat /tmp/suexecs | xargs ls -l`
rm /tmp/suexecs -f

시스템에 존재하는 애플리케이션 디렉터리를 나열할 수 있는 권한

for i in `cat /etc/passwd | cut -d: -f1`; do
    for j in `sudo -lU $i | grep '(root)' | awk '{print $3}'`; do
         if [  -e $j ]; then echo $j; fi;
    done
done > /tmp/suexecs
echo `cat /tmp/suexecs |awk  'BEGIN{OFS=FS="/"};{$NF="";print $0}'| xargs ls -ld`
rm /tmp/suexecs -f

관련 정보