Unix разрешение праймер:
Каждый файл имеет user
. Это пользователь в системе. В каждом файле также есть group
. Это группа в системе. A user
может быть в одном или нескольких group
с. Файл имеет ровно один user
и один group
, который «владеет» файлом.
Так что же такое число 0444
означает?
Первое число используется для некоторых специальных флагов, таких как sticky
, setuid
, setgid
. Нам не нужно беспокоиться об этом прямо сейчас. Только не забудьте установить его на 0
Следующие три цифры обозначают три разрешения: один для user
, group
и other
(всем, что не user
или group
), в таком порядке.
Для установки разрешений мы используем число от нуля до семи (восьмеричное число). На самом деле это bitmask. 1
для execute
, 2
предназначенный для write
, 4
для read
.
В таблице это выглядит следующим образом:
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 r-x
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)
: Вы можете использовать списки контроля доступа, если вы хотите назначить большее количество пользователей или групп к файлу, но в> 95% нет необходимости, и это только добавляет сложность, может быть трудно справиться. По умолчанию он отключен.
: Таблица снят с FreeBSD handbook
Не могли бы вы показать нам, что вы пытались с 'os.chmod'? – L3viathan
Добро пожаловать в переполнение стека! Не могли бы вы прояснить, в чем проблема? «Это не работает» не очень полезно. Что именно вы пробовали? Что случилось? Вы получаете какие-либо ошибки? Пожалуйста, найдите минутку, чтобы прочитать [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask). – Carpetsmoker
Я только нашел способы, позволяющие отправлять сообщения: 'os.chmod (path, 0444)' – jonathan