Академический Документы
Профессиональный Документы
Культура Документы
Файлы:
• /etc/profile
• /etc/bashrc
• ~/.bashrc
• ~/.bash_profile
Стандартные UNIX-права
В Linux используется классическая UNIX-модель разграничения прав доступа.
В Linux все — файл. Даже директория — отдельный тип файла. Т.о., далее под файлом будет
пониматься и файл, и директория.
Если хотим дать доступ к директории только на чтение, то даем и read, и execute. Одного
read не достаточно.
Пример:
Для изменения прав на файл используется команда chmod. Два режима работы команды:
• символьные права
• числовые права
Символьные права:
• Кто — u,g,o,a (user, group, other, all)
• Что именно +, - , = (добавить, удалить, выставить равным)
• Какие привилегии — r, w, x (read, write, execute)
Примеры:
сhmod g+w my_directory – добавить права на запись для группы-владельца в директорию
my_directory
chmod a-x script.sh – забрать у всех пользователей права на выполнение файла script.sh
Числовые права
• 4 — read
• 2 — write
• 1 — execute
Формат: chmod ### some_file.txt, где # - результирующие привилегии, сумма числовых прав.
Первая цифра — для owner'а, вторая — для группы-владельца, третья — для всех остальных.
Примеры:
chmod 755 my_dir – выставить права на чтение и запись в директорию для владельца,
только на чтение — для группы и всех остальных
chmod 750 script.sh – выставить права rwx для владельца, rx для группы-владельца, не дать
никаких прав остальным пользователям
Для того, чтобы изменить права на директорию и все вложенные директории и файлы —
использовать chmod -R (-R означает реккурсивно).
Специальные разрешения
Существует три типа специальных разрешений: suid, sgid, sticky. Пример программы,
использующей специальные разрешения — passwd. Пользователь должен сменить свой
пароль, но не иметь доступа к /etc/shadow. Поэтому для бинарника /usr/bin/passwd стоит
специальное разрешение — suid-бит. Он дает возможность программе работать от имени
владельца бинарника, а не от имени юзера, который ее запустил. Однако для этого в
программе должен произойти специальный системный вызов.
Примеры:
Установка бита setgid для директории:
или
Доступ по умолчанию
При создании файла или диретории дефолтные разрешения выставляются процессом, их
создающим. Как правило, для файлов это 666, для директорий — 777. Для контроля
дефолтных разрешений существует umask (user file creation mode mask) – функция среды
POSIX, которая определяет какие биты доступа исключить при создании файла. По сути,
работает как фильтр, через котрый проходят дефолтные привилегии при создании файла.
Каждый процесс в системе имеет свой umask, который определяет какие биты разрешений
очистить у файлов, создаваемых процессом. Umask может задаваться в цифровом виде и в
символьном виде. Чаще всего используется в цифровом виде.
Например, umask 0077 очищает разрешения для группы и всех остальных. Поэтому, если
программа по умолчанию создает файл с привилегиями 664, то он будет создан с
привилегиями 600.
Таким образом, umask как бы вычитает из битов доступа к файлу собственные биты.
Дефолтный umask для всех пользователей задается в файлах /etc/profile и /etc/bashrc. Однако
может быть переопределен пользователем либо с помощью команды umask (это shell built-in),
либо в файлах ~/.basrc или ~/.bash_profile.
Для того, чтобы посмотреть текущий umask можно использовать команды umask или umask
-S (показать результирующие права в символьном представлении). Umask -S удобна тем, что
нам не надо рассчитывать результирующие права в уме — она делает это за нас и показывает
в символьном виде права, с которыми будет создан файл.
Пример: