Как запретить доступ к файлу для одного пользователя?

Я пытаюсь отключить пользователя от открытия файла. Цель состоит в том, что когда пользователь попытается открыть конкретный файл, он не сможет.

Кроме того, я хочу иметь возможность вернуть разрешения и позволить пользователю открыть файл.

Я только нашел способы включить рассылки: os.chmod(path, 0444) , но я не могу понять, как отключить разрешения.

One Solution collect form web for “Как запретить доступ к файлу для одного пользователя?”

Правый праймер Unix:

У каждого файла есть user . Это пользователь в системе. У каждого файла также есть group . Это группа в системе. user может находиться в одной или нескольких group . Файл имеет ровно один user и одну group которые «владеют» файлом. 1

Так что же такое число, как 0444 ?

Первое число используется для некоторых специальных флагов, таких как sticky , setuid , setgid . Нам не нужно беспокоиться об этом прямо сейчас. Просто не забудьте установить его на 0

Следующие три номера указывают три разрешения: один для user , group и other (всех, кто не является user или group ), в этом порядке.

Чтобы установить разрешения, мы используем число от нуля до семи ( восьмеричное число). На самом деле это битовая маска . 1 для execute , 2 для write , 4 – для read .

В таблице это выглядит так: 2

 N Description ls output 0 No read, no write, no execute --- 1 No read, no write, execute --x 2 No read, write, no execute -w- 3 No read, write, execute -wx 4 Read, no write, no execute r-- 5 Read, no write, execute rx 6 Read, write, no execute rw- 7 Read, write, execute rwx 

read и write должны быть понятными. execute означает, что вы можете запустить файл с ./ls (это не мера безопасности, и к этому можно обойти). Обратите внимание, что каталоги также являются файлами в Unix-системах, таких как Linux. В каталоге должен быть установлен бит execute если вы хотите иметь возможность cd его в него.

Номер, который вы будете использовать чаще всего:

  • 7, для полного доступа
  • 6, для полного доступа, кроме выполнения
  • 4, только для чтения.

Итак, если вы посмотрите на команду os.chmod(path, 0444) мы увидим, что вы установили доступ только для чтения для всех пользователей. Это не то, что вы хотите.

Правильные разрешения зависят от того, какой user и group владеют файлом. Если файл не принадлежит пользователю, которому вы хотите запретить доступ, и не находится в группе, к которой принадлежит файл, вы можете использовать:

 os.chmod(path, 0440) 

Если мы посмотрим на таблицу выше, мы увидим, что это означает:

  • Чтение, запись, не выполнение для user .
  • Чтение, запись, отсутствие выполнения для group .
  • НЕТ разрешений для other .

Если файл не принадлежит пользователю, которому вы хотите запретить доступ, и находится в группе, к которой принадлежит файл, вы можете использовать:

 os.chmod(path, 0400) 

Это сделает его доступным для чтения только для user . Обратите внимание, что это может иметь побочные эффекты, так как теперь все остальные в группе не могут читать его.

Однако, если файл принадлежит пользователю, вам необходимо изменить user файла. Это можно сделать с помощью функции os.chown() . например:

 os.chown(path, 'martin') os.chmod(path, 0400) 

1 : Вы можете использовать списки управления доступом, если вы хотите назначить больше пользователей или групп для файла, но в> 95% нет необходимости, и это только добавляет сложности, которые могут быть трудными для управления. По умолчанию он отключен.

2 : Стол снят из справочника FreeBSD

  • Можно ли просто передать конкретное сообщение в моей собственной сети на python?
  • Питон в цикле
  • Повторяющиеся столкновения идентификаторов на объектах python
  • Печатать список в обратном порядке с диапазоном ()?
  • перестановки двух списков в python
  • Как подсчитать номер конкретного символа в конце строки, игнорируя дубликаты?
  • Как получить FileInfo / gcs имя_файла для файлов, загруженных через BlobstoreUploadHandler?
  • Какой самый питонический метод для указания файла конфигурации?
  • Python - лучший язык программирования в мире.