Бит исполнения линукс что это

Бит исполнения линукс что это

Основные биты доступа (чтение/запись/выполнение)

Еще раз вернемся к примеру. При распечатке содержимого директории (например, командой ls) каждая строчка имеет вид причем нас интересует в данном случае только первая колонка.

Она состоит из десяти знаков. Однако, самый первый знак не имеет отношения к permissions, а обозначает «тип этого объекта». Поскольку, в директории кроме файлов могут находится поддиректории и, кроме того, в Юниксе, кроме обычных файлов существуют другие объекты («линки», «очереди», «сокеты» и т.п.), которые также находятся в директориях и имеют атрибуты как и у обычных файлов. Так вот, первый символ как раз и показывает — что за объект мы видим, обычный файл (значок «-«), поддиректорию (значок «d») или еще какой-нибудь специфический Юниксовый объект («l», «s», «p». ).

Остальные девять знаков на самом деле представляют собой три группы по три символа. Каждая такая группа определяет права для какой-либо из трех категорий юзеров

  • первая группа — права «хозяина»
  • вторая группа — права «группы особо допущенных»
  • третья группа — права для «всех остальных»

Смысл отдельных битов в каждой такой группы «прав» одинаков для всех трех категорий пользователей, поэтому можно подробнее рассматривать любую такую группу, не уточняя — для какой категории юзеров она предназначена.

Однако, для файлов и директорий смысл этих битов немного отличается, поэтому их стоит рассмотреть отдельно.

  • Для файлов.
  • Для директорий.

Обратите внимание на «разделение полномочий» между теми permissions, которые стоят на файле и теми, которые на директории.

Как уже говорилось, если права на директорию не позволяют юзеру удалить файл, находящийся в ней (нет бита «w») это не означает, что юзер не сможет «удалить содержимое» файла (например, «вытерев» все в нем редактором).

С другой стороны, если юзер имеет право менять содержимое директории, он сможет удалить или переименовать любой, находящийся в ней файл, даже если права на самом файле не позволяют ему не то что писать в файл, но и читать его.
(Правда, тут есть некоторые нюансы, смортри «Флаги»)

И еще на что следует обратить внимание. Никакие из перечисленных здесь прав не имеют отношения к изменениям самих «атрибутов доступа», то есть — владельца файла, группы и permissions. Их изменение подчиняется другим законам, о которых будет сказано ниже (смотри «Как поменять. «).

И последнее замечание. Все эти биты не имеют никакого эффекта для юзера root (и программ, которые во время выполнения поменяли свой «эффективный userID» на «рутовский»). То есть, он может делать с файлом или директорией все что хочет.

Правда, и здесь есть одно исключение. Поскольку бит «x» на файле является основным признаком «исполняемости» этого файла, даже root не сможет убедить систему, что файл является программой и его можно выполнять, пока не поставит в атрибутах этот бит.

Источник

Рассматриваем вопрос прав доступа более подробно

Оригинал: Gettin’ Sticky with It
Автор: Shawn Powers
Дата публикации: 11 июня 2015 г.
Перевод: А.Панин
Дата перевода: 2 августа 2015 г.

Рассматриваем вопрос прав доступа более подробно

В номере журнала за прошлый месяц я рассказывал о механизме прав доступа к элементам файловой системы в Linux (Обратитесь к статье «It’s Better to Ask Forgiveness. » в разделе UpFront за май 2015 года, см. перевод на нашем сайте). Я мог бы рассказать о битах SUID, GUID и sticky в той же статье, но мне показалось, что в этом случае информации было бы слишком много для одного материала. Исходя из этого, в данной статье я буду описывать специальные типы прав доступа к элементам файловой системы в Linux. Ввиду того, что механизм стандартных прав доступа является интуитивно понятным, механизм специальных прав доступа может показаться на первый взгляд не имеющим особого смысла. Но после того, как вы узнаете о предназначении данного механизма, вы поймете, что он является не настолько запутанным, как кажется.

Но ведь больше нет места для дополнительных значений прав доступа!

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

Каждая из секций строки прав доступа к элементам файловой системы (для пользователя, группы пользователей и других пользователей) имеет дополнительные биты «специальных» прав доступа, значения которых устанавливаются по аналогии со значениями битов rwx. Указание на состояние этих битов выводится в рамках части строки, выделенной для вывода состояния битов исполнения. Например:

Если установлен бит SUID (Set User ID — установка идентификатора пользователя), при выводе бита исполнения в секции прав доступа пользователя будет использован символ s вместо x.

Если установлен бит GUID (Group User ID — установка идентификатора группы), при выводе бита исполнения в секции прав доступа группы пользователей будет использован символ s вместо x.

Если установлен бит sticky, при выводе бита исполнения в секции прав доступа других пользователей будет использован символ t вместо x.

Еще не запутались? Ниже приведено несколько примеров:

-rwsrw-rw- — Для файла установлен бит SUID.

drw-rwsrw- — Для директории установлен бит GUID.

drw-rw-r-t — Для директории установлен бит sticky.

-rwSr-r— — Для файла установлен бит sticky, при этом бит исполнения файла для пользователя не установлен.

Обратите внимание на то, что в последнем примере используется символ S в верхнем регистре. Это сделано для указания на тот факт, что необходимый бит исполнения не установлен. В том случае, если для указания на установку бита SUID используется символ в нижнем регистре, можно сделать вывод о том, что необходимый бит исполнения установлен. Если же используется символ в верхнем регистре, бит SUID установлен, но необходимый бит исполнения не установлен.

Для чего предназначены эти биты?

В отличие от стандартных прав доступа, специальные права доступа изменяют методы использования файлов и директорий, а не ограничивают доступ к ним. Также они используются по-разному в зависимости от того, устанавливаете ли вы их для файлов или директорий. Давайте рассмотрим их.

SUID: бит SUID устанавливается на исполняемые файлы. После установки данного бита программа исполняется с правами доступа и привилегиями пользователя, который владеет соответствующим бинарным файлом. Как вы можете представить, установка данного бита связана со значительным риском нарушения безопасности системы! В том случае, если владельцем бинарного файла является пользователь root, причем для файла установлен бит SUID, любой исполняющий данный файл пользователь будет иметь такие же права доступа, как и пользователь root. Как бы страшно это не звучало, существует несколько реальных вариантов использования данного механизма. Одним прекрасным примером его использования является утилита ping . Для получения доступа к сетевому аппаратному обеспечению, необходимому для отправки ping-пакетов узлу, пользователь должен обладать привилегиями пользователя root в рамках системы. Для того, чтобы все пользователи системы имели возможность использования утилиты ping , для соответствующего бинарного файла устанавливается бит SUID, после чего любой пользователь может исполнять его с теми же привилегиями, которыми обладает пользователь root в рамках системы. Проверьте специальные права доступа к бинарному файлу данной утилиты в вашей системе с помощью команды ls -l /bin/ping . Вы должны обнаружить установленный бит SUID.

Установка бита SUID для директорий не приводит к какому-либо эффекту.

GUID: при установке бита GUID для исполняемых файлов будет достигаться такой же эффект, как и в случае установки бита SUID, за тем исключением, что вместо прав доступа пользователя, владеющего файлом, в процессе исполнения файла устанавливаются права доступа группы пользователей, владеющей файлом. Данный бит не используется достаточно часто, но в некоторых многопользовательских окружениях его установка может оказаться желательной.

Бит GUID используется главным образом по отношению к директориям. В том случае, если для директории устанавливается бит GUID, создаваемые в директории файлы наследуют идентификатор группы пользователей, владеющей директорией. Данный механизм очень полезен в случае работы группы пользователей с файлами из одной и той же директории. В обычных условиях при создании файла используется основной идентификатор группы пользователя. В рамках директории с установленным битом GUID пользователь все так же будет являться владельцем файла, но принадлежность к группе пользователей устанавливается автоматически на уровне системы, следовательно, все другие пользователи из данной группы также будут иметь доступ к созданному файлу.

Бит sticky: в первую очередь я хотел бы сказать о том, что я даже не представляю, по какой причине бит sticky обозначается с помощью символа t, а не символа s. Я искал информацию об этом во многих источниках и спрашивал многих специалистов. Оказалось, что никто не знает об этом. Возможно, кто-то из читателей журнала Linux Journal знает ответ на данный вопрос и может просветить меня. (В том случае, если я получу сообщение с ответом на данный вопрос, я приведу его текст в рубрике «Письма редактору»). В любом случае, бит sticky является специальным битом доступа, который устанавливается для директорий. Фактически, он не оказывает какого-либо воздействия в случае установки для файла.

В директориях, для которых установлен бит sticky, активируется дополнительный слой защиты созданных файлов. В обычных условиях при доступе множества пользователей к содержимому директории каждый пользователь имеет возможность удаления файлов другого пользователя. (Это справедливо даже для того случая, когда пользователи не имеют прав на запись содержимого этих файлов!) В случае установки бита sticky для директории файлы могут удаляться лишь теми пользователями, которые владеют ими. Данный механизм контроля доступа к элементам файловой системы может показаться излишним, но если вы рассмотрите такую директорию файловой системы многопользовательской системы Linux, как /tmp, вы сможете представить, насколько важным может оказаться бит sticky! Фактически, в том случае, если бы бита sticky не существовало, директория /tmp вашей системы превратилась бы в дикий дикий запад и гнусные стрелки могли бы вольно или невольно удалять файлы других пользователей. Вы можете обнаружить бит sticky в рамках вашей файловой системы с помощью команды ls -l / | grep tmp .

Установка специальных прав доступа к элементам файловой системы

Установка специальных прав доступа для файла или директории осуществляется таким же образом, как и установка обычных прав доступа. Вы можете использовать утилиту chmod, к примеру, следующим образом:

chmod u+s file.txt — установка бита SUID для файла с именем file.txt.

chmod g-s file.txt — установка бита GUID для файла с именем file.txt.

chmod o+t folder — установка бита sticky для директории с именем «folder».

Специальные права доступа также могут устанавливаться вместе с обычными правами доступа, следовательно, аналогичные команды являются полностью корректными:

И как и в случае со стандартными правами доступа, имеется возможность (использование которой является предпочтительным) установки специальных прав доступа с использованием восьмеричной нотации. Для этого используется четвертое поле. При установке прав доступа аналогичным образом:

также присутствует четвертое поле, которое не используется и считается, что его значение равно нулю. Следовательно, данная команда полностью аналогична следующей команде:

Поле с нулевым значением, расположенное перед полями с значениями стандартных прав доступа, используется для установки специальных прав доступа. В том случае, если вы отбрасываете данное поле, его значение считается равным нулю и специальные права доступа не устанавливаются. Однако, в том случае, если вы знаете о его существовании, вам будет проще понять методику его использования. Если вы читали упомянутую статью о правах доступа к элементам файловой системы из выпуска журнала за предыдущий месяц, вы наверняка обратили внимание на раздел с описанием методики использования восьмеричной нотации, информацию из которого можно с легкостью применить и к специальным правам доступа. На Рисунке 1 показано распределение значений между битами специальных прав доступа.

Рисунок 1. Восьмеричная нотация

Таким образом, для установки прав доступа для чтения/записи содержимого директории пользователем вместе с битом GUID вы можете использовать следующую команду:

А результирующая строка описания прав доступа (которая выводится в результате исполнения команды ls -l ) будет выглядеть следующим образом (обратите внимание на символ s в нижнем регистре — помните, что он означает?):

Как и при установке стандартных прав доступа к элементам файловой системы, в случае необходимости установки нескольких битов специальных прав доступа, вы можете просто складывать соответствующие значения. К примеру, для установки битов SUID и sticky вы должны будете использовать значение 5 четвертого восьмеричного поля. Обычно для определенного файла или директории устанавливается лишь один бит специальных прав доступа, но благодаря возможности использования восьмеричной нотации вы можете устанавливать их в любом кажущемся вам подходящем сочетании.

Надеюсь, две данные статьи позволят развеять ваши заблуждения относительно механизма прав доступа к элементам файловых систем в Linux. Более сложные модели управления правами доступа к элементам файловых систем могут основываться на списках контроля доступа (Access Control Lists — ACLs), но для большинства случаев стандартные строки прав доступа — это все, что вам нужно для управления доступом к файлам и директориям вашей системы.

Источник

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

Категории пользователей по отношению к файлу

GNU/Linux как любая Unix-подобная операционная система является многопользовательской. Это значит, что в системе могут работать одновременно или по-очереди несколько или множество пользователей. У каждого из них должно быть собственное файловое пространство, доступ к которому других пользователей ограничен.

Отсюда вытекает, что у любого файла в Linux должны быть специальные атрибуты – права на доступ. Эти атрибуты должны сообщать, кто имеет право работать с файлом.

Выделяют три категории пользователей, которым могут предоставляться права на файл:

Сам владелец (u – user) объекта – конкретный пользователь, чье имя числится в атрибутах файла как имя владельца этого файла. Обычно если пользователь создает файл, то он автоматически записывается как его владелец.

Группа (g – group), к которой принадлежит владелец файла. Когда в Linux создается пользователь, то для него создается одноименная группа. Однако средствами администрирования системы можно объединять пользователей в различные группы. При этом конкретный пользователь может входить в состав нескольких групп. Группы позволяют предоставлять права доступа к ресурсам сразу нескольким людям, но при этом ограниченному кругу лиц.

Все остальные (o – other) – это все те, кто не является владельцем файла и не принадлежит к группе владельца файла. То есть любой посторонний пользователь.

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

Чтение, запись, выполнение

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

Право на чтение (r – read) означает, что файл можно просматривать. Например, открыть файл и, если он текстовый, прочитать содержащийся в нем текст. Если это файл изображения, то можно посмотреть изображение. Наличие права только на чтение не позволяет изменять файл. То есть нельзя будет исправить текст или подрисовать что-то к картинке.

Право на запись (w – write) позволяет изменять файл, то есть дописывать в него информацию или заменять ее другой.

Право на исполнение (x – execution) имеет смысл не для всех файлов, хотя может быть установлено для любого. Это право позволяет исполнять файл как программу, при этом в файле должны быть записаны инструкции для процессора, то есть файл должен быть исполняемой программой.

Буквенная запись прав доступа

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

Первые три записи – это права владельца , вторые три записи – права группы , последняя тройка – права на файл для всех остальных . Если обозначить каждое право соответствующей буквой, и все права всем предоставляются, то получится такая запись:

Мы уже видели нечто подобно в выводе команды ls -l . В первом столбце, после символа типа файла указываются права доступа к файлу в буквенной нотации.

Если какое-либо право не предоставляется той или иной категории, то вместо буквы ставится знак минус. Например, на скрине выше файл text.txt все могут читать, но изменять – только владелец.

Запись прав доступа с помощью чисел

Записывать права доступа можно не только с помощью букв. Если положительное значение права (когда доступ есть) обозначать единицей, а отрицательное (доступа нет) – нулем, то получим такую картину для файла, который могут все читать, но изменять только владелец:

Именно с помощью нулей и единиц хранятся данные в памяти компьютера, в том числе атрибуты доступа. Под права выделяются 9 бит в атрибутах файла, каждый бит хранит ноль или единицу.

Однако запись из девяти символов достаточно длинная. Чтобы ее сократить, используют преобразование двоичных чисел в восьмеричные. Триады нулей и единиц двоичной системы как раз составляют значения от 0 до 7 в восьмеричной системе счисления. Поэтому права доступа трех категорий (владельца, группы, остальных) можно выразить как три независимых друг от друга числа от 0 до 7-ми.

Не все числа имеют смысл. Трудно представить файл, который можно изменять, но нельзя прочитать. Часто используемые числа, которые полезно запомнить: 4 – только чтение, 5 – чтение и выполнение, 6 – чтение и запись, 7 – все права.

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

Каталог в Linux – это особый тип файла, смысловым содержанием которого является список других файлов.

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

Право на чтение в случае каталога означает лишь возможность узнавать список содержащихся в нем файлов. При этом что-то узнать о свойствах файлов (размере, датах, правах) не получится.

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

Однако право на выполнение для каталога не дает права изменять имена файлов в этом каталоге. Ведь таким образом мы меняли бы данные самого каталога, а для этого нужно право на изменение самого каталога.

Если для каталога установлено только право на исполнение, то его содержимое просматривать нельзя. Можно лишь выполнять поиск файлов и обращаться к известным файлам.

На скрине создается каталог и в нем файл. С помощью команды chmod (рассматривается в следующем уроке) у каталога убираются права на чтение и запись для всех. После этого мы не можем просматривать его содержимое с помощью команды ls. Однако можем обращаться к находящемуся в нем файлу. Также можно перейти в каталог, то есть сделать его текущим (на скрине не показано).

Если каталог можно изменять (право на запись), то можно изменять состав файлов в нем, то есть можно удалять, переименовывать файлы, создавать новые. Причем все это возможно даже с файлами, доступ к которым запрещен для данной категории. Это создает дополнительную опасность, которая «лечится» вводом для каталогов дополнительного t-бита. При его наличии пользователь может выполнять файловые операции только со своими файлами.

Отметим пару вытекающих из вышесказанного особенностей:

Доступ к конкретному файлу зависит от наличия доступа на исполнение к каталогам на протяжении всего пути.

Изменять существующие файлы можно, не имея доступа на запись в каталог, достаточно иметь доступ на запись самого файла.

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

Источник

Читайте также:  Долго грузит windows 10 при включении
Оцените статью