CHMOD. Настройка разрешений
понедельник, мая 07, 2007
Из книги Шредера "Linux. Сборник рецептов". Все нижесказанное проверено и работает.
Проблема
Требуется контролировать доступ к файлу. Допустим, вы хотите удержать секретный рецепт соуса подальше от посторонних, или у вас имеется конфиденциальная информация, нуждающаяся в защите. А может (что более вероятно), потребовалось разрешить исполнение некоторого файла. В любом случае потребуется задать разрешения для файлов, но сначала нужно разобраться, как вычисляются числовые коды разрешений.
Решение
Воспользуйтесь командой chmod (CHange MODe). Смена разрешений может выполняться только суперпользователем (root) и владельцем файла. Например, следующая команда предоставляет владельцу файла доступ для чтения и записи к файлу /archive/datafile. Ни один другой пользователь, кроме root, вообще не сможет обратиться к этому файлу:
$ chmod -v 600 /archive/datafile
mode of '/archive/datafile' changed to 0600 (rw-------)
В следующем примере владелец файла /shared/list разрешает его чтение всем желающим, но изменения в файл могут вноситься только владельцем файла и root:
$ chmod -v 644 /shared/list
mode of '/archive/datafile' changed to 0644 (rw-r--r--)
Чтобы сценарий можно было запустить, в атрибутах файла необходимо установить бит исполнения. Следующая команда разрешает редактирование сценария только пользователю, а чтение и исполнение - всем желающим:
$ chmod 755 /shared/somescript
У каталогов бит исполнения всегда должен быть установлен, иначе они не будут работать:
$ chmod 755 /shared
Назначение разрешений каталогу со всем содержимым, включая подкаталоги, производится с ключом -R. Ключ -v включает режим подробного вывода, чтобы вы видели, какие действия выполняет команда:
$ chmod -R -v 755 /shared
Комментарий
Файловые разрешения можно вычислить следующим образом. Просуммируйте нужные значения для каждого типа пользователей, а затем перечислите их в порядке следования: владелец, группа, прочие.
Чтение - 4
Запись - 2
Исполнение - 1
Например:
чтение + исполнение (4+1) = 5
Вот и подставляем эту цифру для нужного типа пользователя.
Проблема
Требуется контролировать доступ к файлу. Допустим, вы хотите удержать секретный рецепт соуса подальше от посторонних, или у вас имеется конфиденциальная информация, нуждающаяся в защите. А может (что более вероятно), потребовалось разрешить исполнение некоторого файла. В любом случае потребуется задать разрешения для файлов, но сначала нужно разобраться, как вычисляются числовые коды разрешений.
Решение
Воспользуйтесь командой chmod (CHange MODe). Смена разрешений может выполняться только суперпользователем (root) и владельцем файла. Например, следующая команда предоставляет владельцу файла доступ для чтения и записи к файлу /archive/datafile. Ни один другой пользователь, кроме root, вообще не сможет обратиться к этому файлу:
$ chmod -v 600 /archive/datafile
mode of '/archive/datafile' changed to 0600 (rw-------)
В следующем примере владелец файла /shared/list разрешает его чтение всем желающим, но изменения в файл могут вноситься только владельцем файла и root:
$ chmod -v 644 /shared/list
mode of '/archive/datafile' changed to 0644 (rw-r--r--)
Чтобы сценарий можно было запустить, в атрибутах файла необходимо установить бит исполнения. Следующая команда разрешает редактирование сценария только пользователю, а чтение и исполнение - всем желающим:
$ chmod 755 /shared/somescript
У каталогов бит исполнения всегда должен быть установлен, иначе они не будут работать:
$ chmod 755 /shared
Назначение разрешений каталогу со всем содержимым, включая подкаталоги, производится с ключом -R. Ключ -v включает режим подробного вывода, чтобы вы видели, какие действия выполняет команда:
$ chmod -R -v 755 /shared
Комментарий
Файловые разрешения можно вычислить следующим образом. Просуммируйте нужные значения для каждого типа пользователей, а затем перечислите их в порядке следования: владелец, группа, прочие.
Чтение - 4
Запись - 2
Исполнение - 1
Например:
чтение + исполнение (4+1) = 5
Вот и подставляем эту цифру для нужного типа пользователя.
Ярлыки: Файловая система, linux