Как липкий бит работает?

awk '{print NR" "$0}' | sort -nr
151
14.06.2013, 15:40
3 ответа

Это - вероятно, одна из моего большинства надоедливых вещей, которые люди портят все время. SUID/GUID укусил, и липко-разрядными являются 2 совершенно других вещи.

Если Вы делаете a man chmod можно читать о SUID и Stickybits. Страница справочника доступна здесь также.

фон

выборка

Буквы rwxXst выбирают биты режима файла для нужных пользователей: читайте (r), запишите (w), выполнитесь (или ищите каталоги) (x), выполняйтесь/ищите, только если файл является каталогом или уже имеет, выполняют разрешение для некоторого пользователя (X), пользователя аппарата или идентификатора группы на выполнении (выполнении), ограниченном флаге удаления или липком бите (т).

SUID/GUID

То, что вышеупомянутая страница справочника пытается сказать, - то, что позиция, которую x бит занимает в rwxrwxrwx для восьмеричного пользователя (1-я группа rwx) и восьмеричная группа (2-я группа rwx) может взять дополнительное состояние, где x становится s. Когда это происходит этот файл при выполнении (если это - программа, и не только сценарий оболочки) будет работать с полномочиями владельца или группой файла.

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

выборка

SETUID И БИТЫ SETGID

chmod очищает бит идентификатора группы набора регулярного файла, если идентификатор группы файла не соответствует эффективному идентификатору группы пользователя или одному из дополнительных идентификаторов группы пользователя, если у пользователя нет соответствующих полномочий. Дополнительные ограничения могут заставить идентификатор пользователя набора и биты идентификатора группы набора РЕЖИМА или RFILE быть проигнорированным. Это поведение зависит от политики и функциональности базового chmod системного вызова. Когда в сомнении, проверьте базовое поведение системы.

chmod сохраняет идентификатор пользователя набора каталога и биты идентификатора группы набора, если Вы явно не указываете иначе. Можно установить или очистить биты с символьными режимами как u+s и g-s, и можно установить (но не ясные) биты с числовым режимом.

Примеры SUID/GUID

никакие suid/guid - просто биты rwxr-xr-x не установлены.

$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan  9 01:01 b.pl

suid и исполняемый бит пользователя включили (нижний регистр s) - биты rwsr-x-r-x установлены.

$ chmod u+s b.pl 
$ ls -lt b.pl 
-rwsr-xr-x 1 root root 179 Jan  9 01:01 b.pl

suid включил и исполняемый отключенный бит (верхний регистр S) - биты rwSr-xr-x установлены.

$ chmod u-x b.pl
$ ls -lt b.pl 
-rwSr-xr-x 1 root root 179 Jan  9 01:01 b.pl

гуид и исполняемый бит группы включили (нижний регистр s) - биты rwxr-sr-x установлены.

$ chmod g+s b.pl
$  ls -lt b.pl 
-rwxr-sr-x 1 root root 179 Jan  9 01:01 b.pl

гуид включил и исполняемый отключенный бит (верхний регистр S) - биты rwxr-Sr-x установлены.

$ chmod g-x b.pl
$  ls -lt b.pl 
-rwxr-Sr-x 1 root root 179 Jan  9 01:01 b.pl

липкий бит

Липкий бит, с другой стороны, обозначен как t, такой как с /tmp каталог:

$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp

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

выборка

ОГРАНИЧЕННЫЙ ФЛАГ УДАЛЕНИЯ ИЛИ ЛИПКИЙ БИТ

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

195
27.01.2020, 19:28
  • 1
    На самом деле липко-разрядное могло ранее быть применено к исполняемым файлам, которые заставили их оставаться в подкачке после того, как они сначала были загружены. Это могло сохранить много ненужного диска/сети (NFS) и использование ЦП для программ, которые очень использовались. Однако ни Linux, ни большинство (все?) Системы Unix поддерживают это больше (это было удалено из ядра). Это "липко", потому что исполняемый файл всунул подкачку. Кроме того, это использовалось для каталогов, как Вы описываете. –  Baard Kopperud 14.06.2013, 16:38
  • 2
    На самом деле "очень используемый или очень большой" было бы лучшее описание. Помните, что мой колледж имел веб-браузер Netscape как "липкий" на их компьютере HP-UX назад в 1995. Таким образом, небольшие программы, которые очень часто использовались (например, системные команды часто работал кроном) и большие программы (например, Netscape) были главными кандидатами, чтобы быть сделанными "липкими". В обоих случаях постоянно перезагрузка их от диска/NFS была бы расточительна. спасибо –  Baard Kopperud 14.06.2013, 17:48
  • 3
    Липко-разрядные программы были предназначены для пребывания резидентного объекта в RAM, не в подкачке (загружающий изображение из файла подкачки не то, что намного быстрее, чем загрузка его от диска файловой системы). Это было предназначено для существенных команд уровня ОС как ls. Очевидно, только суперпользователь мог установить липкий бит на файле. Это стало менее важным после виртуальной памяти и совместно использовало библиотеки, были представлены, и тем более, что пейджеры стали более умными и могут динамично решить который страницы сохранить резидентный объект. –  alexis 14.06.2013, 21:04
  • 4
    И так как липкое свойство не имело никакого смысла для каталога, тот же бит маски полномочий был позже интерпретирован для изменения традиционной семантики создания файла для каталогов. –  alexis 14.06.2013, 21:07
  • 5
    @alexis: Первоначально, липкие битные программы были сохранены в области подкачки. Это было намного быстрее, чем чтение из файловой системы, потому что изображения файла подкачки чтения были непрерывными секторами и так могли быть прочитаны главным образом асинхронно. С ранними файловыми системами не было никакого сектора "выполненные длины", и самые ранние драйверы файловой системы читают один сектор за один раз, даже если секторы, оказалось, были последовательны. Результатом на PDP-40 были липкие программы, казалось, загружался немедленно, в то время как нелипкие программы заняли обычную секунду или два. Я думаю, что мы имели только ed липкий. –  wallyk 22.09.2015, 21:05

"Липкий бит относился к исполняемым программам, отмечающим система для хранения изображения программы в памяти после того, как программа закончила работать".

Я думаю, что это - довольно устаревшая информация, сегодня самые современные Unixes игнорируют это. В Linux липкий бит только важен для каталогов. Посмотрите здесь и довольно информативная статья Wikipedia.

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

8
27.01.2020, 19:28

Что такое клейкие биты ?

Клейкий бит - это бит разрешения, который устанавливается в каталоге, позволяющий удалять или переименовывать файл только владельцу файла в этом каталоге или пользователю root. Ни один другой пользователь не имеет необходимых привилегий для удаления файла, созданного другим пользователем.

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

3
27.01.2020, 19:28

Теги

Похожие вопросы