Вы правы, что os.access , как и базовый системный вызов access , проверяет конкретного пользователя (реальные, а не эффективные идентификаторы, чтобы помочь в ситуациях 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
может быть довольно дорогостоящим, поэтому обязательно извлекайте всю информацию, которая вас интересует, одним вызовом, а не повторяйте вызовы для каждого интересующего вас бита; -).