Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Курс молодого бойца. Основы управления доступом к файлам.

Операционная система Linux - это многопользовательская система, которая дает огромные возможности манипулирования доступом к данным для каждого пользователя отдельно. Это позволяет гибко регулировать отношения между пользователями, объединяя их в группы, что позволит защитить данные одного пользователя от нежелательного вмешательства других.

Бессмысленно считать, что файловая система это не самая важная часть операционной системы, поскольку все данные пользователей хранятся именно в файлах.

В UNIX-подобных системах файлы также обеспечивают доступ к периферийным устройствам, дисковым накопителям, принтерам и т.п.

UID, GID

Каждый пользователь в системе имеет свой уникальный идентификационный номер (user-ID, или UID). Также пользователи могут объединяться в группы, которые в свою очередь имеют group-ID, или GID. Чтобы узнать свой UID и GID, т.е. уникальный номер пользователя и номер группы, к которой Вы принадлежите, необходимо ввести команду id:

[dmitry@localhost dmitry]$id
uid=502 (dmitry) gid=503(users) groups=503(users)

Права доступа к файлам

В свою очередь файлы имеют двух владельцев: пользователя (user owner) и группу пользователей (group owner). Для каждого файла есть индивидуальные права доступа, которые разбиты на три группы:

  1. Доступ для пользователя-владельца файла (owner).
  2. Доступ для группы-владельца файла (group).
  3. Доступ для остальных пользователей (others).

Для каждой категории устанавливаются три вида доступа: (x) - право на запуск файла, (r) - право на чтение файла, (w) - право на изменение (редактирование) файла.

Для того, чтобы увидеть права доступа к файлам необходимо ввести команду ls с ключом -l:

[dmitry@localhost dmitry]$ls -l /home/file.tmp
-rwxr-xr-- 1 dmitry users 33 Dec 1 00:38 file.tmp

Для данного примера мы видим, что владелец имеет права на чтение, запись, и выполнение (первые три буквы rwx), группа пользователей может лишь читать и выполнять этот файл (следующие три r-x), ну а остальные пользователи могут только читать данный файл (последние символы r--).

Изменение прав доступа

Права пользователя могут быть изменены только владельцем файла или пользователем с правами администратора системы. Для изменения прав используется команда

chmod [ u | g | o | a ] [+ | - | = ] [r | w | x ] name1 [name2 ...].

В качестве аргументов команда принимает указание классов доступа ('u' - владелец-пользователь, 'g' - владелец-группа, 'o' - остальные пользователи, 'a' - все вышеперечисленные группы вместе), права доступа ('r' - чтение, 'w' - запись, 'x' - выполнение) и операцию, которую необходимо произвести ('+' - добавить, '-' -убрать, '=' - присвоить).

Таким образом, чтобы разрешить выполнение файла prog.pl всем пользователем необходимо выполнить команду:

[dmitry@localhost dmitry]$ chmod a+x prog.pl

Далее, чтобы оставить права записи только для владельца файла необходимо выполнить:

[dmitry@localhost dmitry]$ chmod go-w prog.pl

Рассмотрим еще несколько примеров:
$ chmod go=w prog.pl установить право на запись для всех пользователей кроме владельца
$ chmod a+x prog.pl предоставить право на запись для всех пользователей
$ chmod g+x-w prog.pl Добавить для группы право на выполнения файла, но снять право на запись

Права доступа можно представить в виде битовой строки, в которой каждые 3 бита определяют права доступа для соответствующей категории пользователей, как представлено в таблице:
rwxrwxrwx
421421421
usergroupothers
владелецгруппаостальные

Таким образом, для команды chmod 666 prog.pl имеем:

[dmitry@localhost dmitry]$ chmod 666 prog.pl
[dmitry@localhost dmitry]$ ls -l prog.pl
-rw-rw-rw- 1 dmitry users 78 Nov 20 prog.pl

Команда chmod 644 somefile устанавливает "обычные" права доступа, т.е. владелец может читать и записывать в файл, а все остальные пользователи - только читать.

Особенности прав доступа для каталогов

Права доступа для каталогов не столь очевидны. Это в первую очередь связано с тем, что система трактует операции чтения и записи для каталогов отлично от остальных файлов. Право чтения каталога позволяет Вам получить имена (и только имена) файлов, находящихся в данном каталоге. Чтобы получить дополнительную информацию о файлах каталога (например, подробный листинг команды ls -l), системы придется "заглянуть" в метаданные файлов, что требует права на выполнения для каталога. Право на выполнение также потребуется для каталога, в который Вы захотите перейти (т.е. сделать его текущим) с помощью команды cd.

T-бит, SUID и SGID

Наиболее внимательные пользователи быстро замечают, что помимо стандартных "rwx" значений существуют еще и буквы "s" и "t". В действительности, битовая маска прав доступа к файлам содержит 4 группы по 3 бита в каждой. Таким образом, команда chmod 755 это всего лишь краткая запись полной формы команды: chmod 0755.

t-бит обычно используется с каталогами.

Обычно, когда t-бит для каталога не установлен, файл в данном каталоге может удалить любой пользователь, имеющий доступ на запись к данному файлу. Устанавливая t-бит на каталог мы меняем это правило таким образом, что удалить файл из каталога может только владелец этого каталога или файла.

Установить t-бит можно при помощи команд chmod a+tw somefile или chmod 1777 somefile.

Атрибуты SUID и SGID позволяют изменить права пользователя при запуске на выполнения файла, имеющего эти атрибуты.

Запускаемая программа получает права доступа к системным ресурсам на основе прав доступа пользователя, запустившего программу. Установка же флагов SUID и SGID изменяет это правило таким образом, что назначает права доступа к системным ресурсам исходя из прав доступа владельца файла. Т.е. запущенный исполняемый файл, которым владеет суперпользователь, получает права доступа к системным ресурсам на уровне суперпользователя (фактически неограниченные). При этом установка SUID приведет к наследованию прав владельца-пользователя файла, а установка SGID -владельца-группы.

В завершении хочется отметить, что пользоваться такими мощными атрибутами как SUID и SGID нужно с крайней осторожностью, особенно подвергать пристальному вниманию программы и скрипты, владельцем которых является root (суперпользователь), т.к. это потенциальная угроза безопасности системы.

Литература.

  1. Гвидо Сочер. Файлы - управление доступом.
  2. А. Робачевский. Операционная система Unix.

В начало
К оглавлению раздела
На главную страницу

Автор статьи
Lomash Dmitry
1.12.00


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP