나는 현재 겪고 있는 일이다성운 도전존재하다Utilize-exercises.com, 그리고과제 중 하나cron에 의존하는 스크립트.
crontab -u flag03
이 작업은 다른 사용자(flag03)에 의해 실행되고 있으며 내가 로그인한 사용자(level03)에게는 작업을 보기 위해 실행할 권한이 없습니다 .
프롬프트는 스크립트가 cron에 의해 실행된다는 것을 명확하게 나타냅니다. 또한 이는 디렉토리에 있는 유일한 스크립트이므로 /home/flag03
추가로 조사할 수도 있습니다.
그러나 이것이 현실 세계라면 이 스크립트가 cron에 의해 실행된다는 사실을 알 수 없었을 것입니다.
따라서 문제는 권한이 없는 사용자의 관점에서 작업이 실행 중인지 어떻게 감지할 수 있느냐는 것입니다.
나는 다음을 시도했습니다 :
while true; do ps au | grep <scriptname> | grep -v grep; done;
이를 통해 오랫동안 실행되는 프로세스를 볼 수 있지만 거의 즉시 종료되는 프로세스는 볼 수 없습니다. 또한 내가 스크립트의 이름을 알고 있다고 가정합니다.
구체적인 환경은 우분투입니다. apt-get을 사용할 수 없지만 gcc에는 액세스할 수 있습니다.
어떤 아이디어가 있나요?
답변1
어떤 버전의 우분투인가요? 를 사용하는 경우 에 의해 시작된 모든 프로세스는 직계 하위 프로세스가 되므로 내가 만든 cgroup을 systemd
사용할 수 있습니다 .cron
systemd
cron
이 정보를 얻는 한 가지 옵션은 ps 명령을 사용하는 것입니다. 예를 들면 다음과 같습니다.
ps -eo user,pid,cmd,unit | grep cron.service | grep flag03
답변2
당신은 할 수 없습니다. 가장 가까운 방법은 다음과 같습니다.
inotifywait -m /home/flag03/script
실행 내용은 표시되지 않지만 script
열리거나 액세스된 시간은 표시됩니다.
답변3
아마도 /proc/[0-9]+ 디렉토리에서 inotifywait를 사용하면 단기 실행 프로세스에 대한 더 나은 아이디어를 얻을 수 있을 것입니다.
답변4
이 특별한 경우에는 파일이 있으며 /var/spool/cron/crontabs/flag03
해당 계정을 사용하여 파일을 읽을 수 있습니다 nebula
.
하지만 level03
액세스할 수 있는 권한이 충분하지 않습니다.