Development Tip

Python으로 Linux에서 파일 권한 확인

yourdevel 2020. 11. 30. 20:07
반응형

Python으로 Linux에서 파일 권한 확인


사용자 디렉터리에있는 파일의 권한을 확인하는 스크립트를 작성 중이며 허용되지 않는 경우 경고 메시지를 표시하지만 로그인 한 사용자뿐만 아니라 그룹 및 다른 사용자의 권한도 확인하고 싶습니다. 어떻게 할 수 있습니까? os.access()Python에서는 스크립트를 실행하는 사용자의 권한 만 확인할 수있는 것 같습니다 .


당신이 바로 있다는 것 os.access은 , 기본처럼 액세스 콜, 특정 사용자에 대한 확인 (실제보다는 효과적인 ID를, SUID 상황을 도와).

os.stat 는 사용자, 그룹 및 기타 권한을 포함하여 파일에 대한 더 일반적인 정보를 얻는 올바른 방법입니다. 반환 st_mode되는 개체 속성 os.stat에는 파일에 대한 권한 비트가 있습니다.

이러한 비트를 해석하는 데 도움이되도록 stat 모듈 을 사용할 수 있습니다 . 특히, 여기정의 된 비트 마스크를 원하고 &연산자 (bit-and)를 사용하여 해당 st_mode속성 의 관련 비트를 마스킹합니다. 예를 들어 True / False 확인 만 필요한 경우 특정 파일이 그룹으로 읽을 수 있는지 여부에 관계없이 한 가지 방법은 다음과 같습니다.

import os
import stat

def isgroupreadable(filepath):
  st = os.stat(filepath)
  return bool(st.st_mode & stat.S_IRGRP)

주의하세요 : os.stat통화 비용이 다소 비쌀 수 있으므로 관심있는 각 비트에 대해 계속 통화를 반복하는 대신 한 번의 통화로 관심있는 모든 정보를 추출해야합니다 .-).


결과 해석 os.stat(path)을 위해 stat모듈 과 함께 파일 권한을 확인할 수 있습니다 .


사용 os.access()플래그 os.R_OK, os.W_OKos.X_OK.

편집 : Windows에서 디렉토리 권한을 테스트 하는 경우이 관련 질문을 확인하십시오 .


조금 다른 것을 위해 여기에 온 나와 같은 다른 사람들을 돕기 위해 :

import os
import stat

st = os.stat(yourfile)
oct_perm = oct(st.st_mode)
print(oct_perm)
>>> 0o100664 //the last 3 or 4 digits is probably what you want.

자세한 내용은 https://stackoverflow.com/a/5337329/1814774 를 참조하십시오.


os.stat모드에 대한 관련 비트 마스크 .


import os
os.access('my_file', os.R_OK) # Check for read access
os.access('my_file', os.W_OK) # Check for write access
os.access('my_file', os.X_OK) # Check for execution access
os.access('my_file', os.F_OK) # Check for existence of file

참고 URL : https://stackoverflow.com/questions/1861836/checking-file-permissions-in-linux-with-python

반응형