У некоторые исполняемых файлов в правах доступа пользователя вместо символа x указан символ s. Это говорит о том, что исполняемый файл является файлом setuid — при его выполнении он запускается так, словно владельцем файла является пользователь с указанным идентификатором, а не вы. Многие команды используют бит setuid, чтобы получить корневые права доступа, необходимые для изменения системных файлов. В качестве примера можно привести команду passwd, которой необходимо изменять файл /etc/passwd.
2.17.1. Изменение прав доступа
Чтобы изменить права доступа, используйте команду chmod. Сначала укажите набор прав, который вы желаете изменить, а затем укажите бит, подлежащий изменению. Например, чтобы добавить права доступа на чтение файла для группы (g) и всех пользователей (o, по первой букве слова other — «остальные»), нужно запустить следующие две команды:
$ chmod g+r
$ chmod o+r
Можно также объединить их таким образом:
$ chmod go+r
Чтобы удалить эти права доступа, используйте go-r вместо go+r.
примечание
Довольно очевидно, что не следует предоставлять всем пользователям права доступа на запись файла, поскольку каждый получит возможность изменить системные файлы. Но сможет ли при этом кто-либо, подключившись через Интернет, изменить ваши файлы? Вероятно, не сможет, если только в вашей системе нет уязвимости в сетевой защите. Если же она уязвима, то права доступа к файлам ничем вам не помогут.
Иногда пользователи меняют права доступа, указывая числа, например, так:
$ chmod 644
Такой способ называется
Вам не обязательно знать, как составить абсолютные значения режимов, запомните те из них, которыми вы будете пользоваться чаще всего. В табл. 2.6 перечислены наиболее распространенные варианты.
Таблица 2.6. Абсолютные режимы прав доступа
Режим
Значение
Применение
644
пользователь: чтение/запись;
группа, другие: чтение
Файлы
600
пользователь: чтение/запись;
группа, другие: нет
Файлы
755
пользователь: чтение/запись/исполнение;
группа, другие: чтение/исполнение
Каталоги, команды
700
пользователь: чтение/запись/исполнение;
группа, другие: нет
Каталоги, команды
711
пользователь: чтение/запись/исполнение;
группа, другие: исполнение
Каталоги
Каталогам также можно назначить права доступа. Вы можете вывести список содержимого каталога, если он доступен для чтения, но доступ к файлу в этом каталоге можно получить лишь в том случае, если каталогу назначено право доступа на исполнение. Часто при указании прав доступа к каталогам пользователи совершают ошибку, ненароком удаляя разрешение на исполнение при применении абсолютных значений режимов.
Наконец, вы можете указать набор прав доступа по умолчанию с помощью команды оболочки umask, которая применяет заранее определенный набор прав доступа к любому создаваемому новому файлу. В общем, применяйте команду umask 022, если вы желаете, чтобы каждый мог видеть все создаваемые вами файлы и каталоги, или команду umask 077 в противном случае. Вам необходимо поместить команду umask с указанием желаемого режима в один из файлов запуска системы, чтобы новые права доступа по умолчанию применялись в следующих сеансах работы (см. главу 13).
2.17.2. Символические ссылки
В длинном списке каталогов символические ссылки будут выглядеть примерно так (обратите внимание на символ l, указанный в режиме файла в качестве типа файла):
lrwxrwxrwx 1 ruser users 11 Feb 27 13:52 somedir — > /home/origdir
Если вы попытаетесь получить доступ к каталогу somedir в данном каталоге, система выдаст вам вместо этого каталог /home/origdir. Символические ссылки являются лишь именами, указывающими на другие имена. Их названия, а также пути, на которые они указывают, не обязаны что-либо значить. Так, например, каталог /home/origdir может и вовсе отсутствовать.
В действительности, если каталог /home/origdir не существует, любая команда, которая обратится к каталогу somedir, сообщит о том, что его нет (кроме команды ls somedir, которая проинформирует вас лишь о том, что каталог somedir является каталогом somedir). Это может сбивать с толку, поскольку вы прямо перед собой видите нечто с именем somedir.