Python 스크립트에는 777 권한과 소유자 루트가 있지만 여전히 거부된 파일이 생성됩니다.

Python 스크립트에는 777 권한과 소유자 루트가 있지만 여전히 거부된 파일이 생성됩니다.

여러 Java 애플리케이션을 시작하기 위해 Python 스크립트를 작성했습니다. 나는 그들의 PID를 /var/run/coma.777화권한은 먼저 테스트용으로만 제공됩니다.

-rwxrwxrwx  1 root   root    3575 Feb 12 18:20 coma-startup.py

이 스크립트를 시작할 때다른 사용자언급된 디렉터리에 파일을 생성하는 코드를 실행합니다. 다음을 받습니다.

PermissionError: [Errno 13] Permission denied: '/var/run/coma/coma-system.pid'

나는 이것을 이해하지 못한다? 이 스크립트는 루트 권한으로 실행해야 한다고 생각합니다. 여기서 내가 이해하지 못하는 것은 무엇입니까?

답변1

권한 문제는 스크립트와 관련이 없지만 스크립트가 작동하는 파일과 관련이 있습니다.

/var/run/coma/coma-system.pid

노력하다chmod 777 /var/run/coma/coma-system.pid

답변2

스크립트의 소유자 및 그룹을 로 설정한다고 해서 사용자가 실행 파일을 실행할 때 UID() 비트가 활성화되지 않은 한 root실행 컨텍스트 권한을 정의하는 데 사용되는 UID는 입니다 . 활성화된 실행 파일은 파일 소유자의 UID를 사용하여 실행됩니다.rootjoejoesuidsuid

suid root그러나 실행 파일에는 보안 위험이 있으므로 접근 방식을 매우 신중하게 고려해야 한다고 생각합니다 . 악의적인 사용자는 이를 악용하여 권한을 상승시키려고 시도할 수 있습니다. 이것이 처리해야 할 유일한 파일인 경우 대신 해당 권한을 처리하거나 사용자에게 실행 파일을 사용하도록 요구해야 합니다 sudo. suid root매우 특별한 경우에는 실행 파일을 최후의 수단으로 사용해야 합니다.

노트:@psusi가 댓글에 언급했듯이 suid스크립트에서는 작동하지 않습니다. 이것답변스크립트 문제 suid와 스크립트가 커널 3.x에서 작동하지 않는 이유에 대한 좋은 설명입니다. 따라서 특정 경우에는 처리해야 하는 파일/폴더의 권한을 변경하거나 사용하는 옵션만 있습니다 sudo(첫 번째 옵션이 더 권장됨).

관련 정보