понедельник, 29 июля 2013 г.

Права доступа в Linux

Эта шпаргалка (конспект) написана на основе книги "UNIX. Программное окружение" Б.Кернигана, Р. Пайка. Ее порекомендовал мне Дмитрий, сказав, что многое что там написано, актуально и до сих пор. И правда актуально, а еще актуально не только для Ubuntu, но и для терминала в Mac OS. Итак, сама шпаргалка.

В каждой системе существует специальный пользователь, называемый суперпользователем (super-user), который может читать и модифицировать любые файлы в системе. Права суперпользователя присвоены регистрационному имени root, под которым администраторы управляют системой. Существует команда su, предоставляющая статус суперпользователя каждому, кто знает пароль.

Пароли хранятся в файле /etc/passwd, там же находится вся регистрационная информация каждого из пользователей.

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

ls -l выводит информацию о правах доступа.

Чтение прав доступа файла и каталога: примеры

ls -l /etc/passwd
>> -rw-r--r-- 1 root root 1878 апр.   1 22:10 /etc/passwd

Тут написано, что этот файл принадлежит пользователю root bp из группы root, размер файл 1878 байт, приводится дата последнего изменения. Разберем строку -rw-r--r-- (тут находится информация о правах):

Первый - говорит о том, что это обычный файл. Если бы это был каталог, то в первой позиции находился бы символ d.
rw- - права владельца на чтение, запись и выполнение. Владелец может читать и писать, но не может выполнять. У исполняемых файлов вместо прочерка должен стоять символ x.

Следующие две тройки символов - разрешения для группы, которой принадлежит владелец и для всех остальных пользователей системы. Они могут только читать.

Любой пользователь может редактировать файл паролей, но только root может сохранять сделанные изменения. Как изменить свой пароль? На помощь приходит команда passwd.

ls -l /bin/passwd
>> -rwsr-xr-x
Команда доступна для выполнения всем, но только root может ее изменить. Символ s вместо x в поле прав на исполнение для владельца говорит о том, что команда во время выполнения приобретает права своего владельца, в данном случае root. А т.к. /bin/passwd получает при исполнении идентификатор пользователя root, любой пользователь с помощью этой команды может изменить файл паролей.

Теперь почитаем права каталога.
ls -ld .
>> drwxrwxrwx 2 root root 4096 июля  29 22:21

. - текущий каталог. r - каталог доступен для чтения и его содержимое может быть просмотрено с помощью команды ls. w - возможно создание и удаление файлов в этом каталоге.

При наличии права на запись в каталог можно удалить файлы даже в том случае, если они защищены от записи. Поле x в строке прав доступа к каталогу разрешает не исполнение, а поиск файла в каталоге.

Изменение прав доступа к файлу

Команда chmod (change mode) изменяет права доступа к файлу. Синтаксис: chmod права доступа имена файлов. Права доступа описываются в восьмеричном или символьном виде. Восьмеричные значения образуются путем суммирования: 4 для чтения, 2 для записи, 1 для исполнения. Например: chmod 666 junk.txt (т.е. всем можно читать и писать в этот файл теперь). Символьный вид: + включает право доступа, - его выключает. Например chmod +x command позволяет всем выполнять command, chmod -w file отменяет право на запись для всех, включая владельца.

Если каталог доступен для записи, пользователи могут удалять файлы независимо от прав доступа к этим файлам. Чтобы исключить возможность удаления файлов кем-либо, следует отменить разрешение на запись в каталог.
chmod -w .
(запретить запись в текущий каталог).
chmod 775 .
(восстановить права доступа)

Комментариев нет:

Отправить комментарий