bash 스크립트에서 실제로 실행중인 것을 확인하는 방법이 있습니까?
(예 : 당신의 bash는 스크립트가 여러 가지 명령을 호출 말 tar
, mail
, scp
, mysqldump
) 그리고 당신이 있는지 확인하고자하는 tar
실제, 실제 인 tar
바이 결정될 수있는 root
파일 및 상위 디렉토리 소유자 및 쓰기 권한을 가진 유일한 하나 인 사용자 가 아니라 일부 /tmp/surprise/tar
에 www-data
또는 apache2
소유자 인.
내가 아는 한 PATH
, 환경에 따라 실행중인 bash 스크립트에서 추가로 확인할 수 있는지 궁금 하다면 어떻게해야합니까?
예 : (의사 코드)
tarfile=$(which tar)
isroot=$(ls -l "$tarfile") | grep "root root"
#and so on...
which
올바르게 tar
수행 할 말이 아니라 ls
파일에 대한 잘못된 정보가 있으면 해킹 당할 수 있습니다. 또한 grep
잘못된 정보를 반환하도록 해킹 될 수 있습니다. 대신 쉘 일치를 사용하면 피할 수 있지만 쉘은 해킹 될 수 있습니다. 그리고 쉘은 type
처음 부터 잘못된 결과를 내기 위해 해킹 당 하거나 쉘의 교체 가능성이 50 세의 OS에 비해 유닉스의 중요한 혁신이기 때문에 완전히 대체 될 수 있습니다 . Ken Thompson의 1984 Turing 주소를 참조하십시오. 거북은 끝이야
TE
서명이있는 데이터베이스 (예 : MD5 체크섬보다 광범위한 데이터베이스) 가있는 Linux (Trusted Execution ( ) 라는 구성 요소가있는 AIX 만 해당)에 대해서는 응답 할 수 없습니다 . TE가 활성 상태이고 파일이 데이터베이스에 있으면 데이터베이스를 선택할 수 있습니다 프로그램의 실행 여부-데이터베이스와 일치하지 않는다는 경고 만 표시 TEP
(Trusted execution PATH) 및 TLP
(Trusted LIBrary PATH) TEP의 프로그램 만 실행될 수 있으며 라이브러리는 디렉토리에는 TLP에 포함되어 있습니다. 리눅스에는 'AppArmor'라고 불리는 것이 있습니다