Ответов: 11 Просмотров: 0
|
Основные биты доступа (чтение/запись/выполнение)
Есть у пользователей БОЛЬШАЯ ПУТАНИЦА при определении доступности к файлам, особенно МНОГИЕ ПУТАЮТ (считают идентичными) ПРАВА ДЛЯ ФАЙЛОВ и ПРАВА ДЛЯ ДИРЕКТОРИЙ, поэтому подробнее - что представляют собой "права доступа"?
При распечатке содержимого директории (например, командой ls) каждая строчка имеет вид
CODE: -rw-r--r-- 1 pascal users 4297 13 мар 21:45 files1
причем нас интересует в данном случае только первая колонка.
Она состоит из десяти знаков. Однако, самый первый знак не имеет отношения к permissions, а обозначает "тип этого объекта". Поскольку, в директории кроме файлов могут находится поддиректории и, кроме того, в Юниксе, кроме обычных файлов существуют другие объекты ("линки", "очереди", "сокеты" и т.п.), которые также находятся в директориях и имеют атрибуты как и у обычных файлов. Так вот, первый символ как раз и показывает - что за объект мы видим, обычный файл (значок "-"), поддиректорию (значок "d") или еще какой-нибудь специфический Юниксовый объект ("l", "s", "p"...).
Остальные девять знаков на самом деле представляют собой три группы по три символа. Каждая такая группа определяет права для какой-либо из трех категорий юзеров
первая группа - права "хозяина"
вторая группа - права "группы особо допущенных"
третья группа - права для "всех остальных"
Смысл отдельных битов в каждой такой группы "прав" одинаков для всех трех категорий пользователей, поэтому можно подробнее рассматривать любую такую группу, не уточняя - для какой категории пользователей она предназначена.
Однако, ДЛЯ ФАЙЛОВ И ДИРЕКТОРИЙ СМЫСЛ ЭТИХ БИТОВ НЕМНОГО ОТЛИЧАЕТСЯ, поэтому их стоит рассмотреть отдельно.
Для файлов
Первый бит, обозначается буквой "r" (read), и означает, что пользователю, подпадающему под соответствующую категорию, разрешается читать содержимое этого файла.
То есть он может посмотреть содержимое файла, а также скопировать этот файл. Кстати, это не означает, что пользователь сможет запустить его на выполнение (если это программа).
Второй бит, обозначается буквой "w" (write) и разрешает писать в файл. То есть пользователь сможет изменить содержимое файла (например, каким-нибудь редактором), дописать что-нибудь в конец или стереть все содержимое.
Обратите внимание, этот бит еще не дает право удалить сам файл из директории или изменить ему название (это определяется правами на саму директорию), но дает возможность сделать этот файл пустым (нулевой длины) или скопировать в него содержимое другого файла (и тем самым "подменить" его).
И, наконец, третий бит, обозначается буквой "x" (eXecute), позволяет запустить на выполнение этот файл, если он представляет собой программу или командный файл.
Обратите внимание, что это также основной признак, по которому система догадывается о "запускаемости" этого файла. Часто начинающие пользователи составив какой-нибудь командный файл, забываю установить на него бит "исполнения" хотя бы для себя - владельца этого файла. В результате, при попытке запустить его, система сообщает, что "вы не имеете права" (выполнять этот файл). Естественно, что в данном случае причина не в том, что "злобный" администратор существенно "урезал" права этого пользователя, а в том, что он сам забыл "наделить себя правом" (вполне законным).
Для директорий
Первый бит ("r") разрешает читать оглавление этой директории, то есть список файлов и поддиректорий, находящихся в ней. Однако, этот бит еще не дает возможность зайти в эту директорию (командой cd) или получить доступ к содержимому, то есть читать/запускать/изменять файлы, даже если "права доступа" установленные на самих файлах это позволяют.
Поэтому, само по себе "право чтения" директории практически бесполезно и этот бит, как правило ставиться только вместе с битом "x".
Немного забегая вперед, рассмотрим сразу третий бит - "x". Для директорий он как раз означает, что пользователь может получит доступ к "компонентам", то есть отдельным файлам и поддиректориям. Только при наличии это бита, система разрешит войти в эту директорию и выполнить какое-нибудь действие с файлом, если сами файлы ("права доступа" на них) это позволят.
Кстати, обратите внимание, что если даже внутренние поддиректории имеют "нормальные" права для какой-то категории пользователей, а вышестоящая директория - нет (отсутствует бит "x"), то этим ПОЛЬЗОВАТЕЛЯМ НЕ УДАСТСЯ ЗАЙТИ В ПОДДИРЕКТОРИИ, минуя вышестоящую. Система проверяет полный "путь" до конечной директории или файла (например, /usr/share/misc/fonts) и, если ХОТЯ БЫ ОДИН из компонентов этого пути не имеет соответствующего бита, то пользователю будет ОТКАЗАНО В ДОСТУПЕ.
Наконец, бит "w", установленный на директории, позволяет изменять оглавление директории. То есть, разрешает создавать новые файлы (или копировать другие файлы в эту директорию), менять названия файлов и удалять файлы.
Обратите внимание на "разделение полномочий" между теми permissions, которые стоят на файле и теми, которые на директории.
Как уже говорилось, если права на директорию не позволяют пользователю удалить файл, находящийся в ней (нет бита "w") это не означает, что пользователь не сможет "удалить содержимое" файла (например, "вытерев" все в нем редактором).
С другой стороны, если пользователь имеет право менять содержимое директории, он сможет удалить или переименовать любой, находящийся в ней файл, даже если права на самом файле не позволяют ему не то что писать в файл, но и читать его.
И еще на что следует обратить внимание. Никакие из перечисленных здесь прав не имеют отношения к изменениям самих "атрибутов доступа", то есть - владельца файла, группы и permissions. Их изменение подчиняется другим законам.
И последнее замечание. Все эти биты не имеют никакого эффекта для пользователя root (и программ, которые во время выполнения поменяли свой "эффективный userID" на "рутовский"). То есть, он может делать с файлом или директорией все что хочет.
Правда, и здесь есть одно исключение. Поскольку бит "x" на файле является основным признаком "исполняемости" этого файла, даже root не сможет убедить систему, что файл является программой и его можно выполнять, пока не поставит в атрибутах этот бит. |