Email or username:

Password:

Forgot your password?
sattellite

TIL про очень интересные фичи прав в #unix системах.

1. Есть sticky бит, который используется для ускорения запуска программ и защиты директорий. Если установлен на исполняемый файл, то после завершения работы программа не выгружается из памяти, чтобы быстрее запуститься в следующий раз. Если установлен на директорию, то пользователь может управлять только своими файлами в этой директории(например /tmp). Устанавливается с помощью chmod 1XXX <path>

2. SUID, GUID это "эффективный пользователь", то есть от чьего имени будет исполняться программа. Запустить может любой Вася(если прав хватает), но работать будет от имени/группы владельца файла. Может установить только root. Устанавливается с помощью chmod 2XXX для группы и chmod 4XXX для пользователя.

14 comments
sattellite

"Программа с установленным битом setuid является потенциально опасной, и неиспользуемые программы с установленным битом SUID лучше убрать из установленной операционной системы. Злоумышленник, проникнув в систему, старается получить максимально возможные права доступа, и, например, сумев из-за ошибки владельца системы установить бит SUID на интерпретатор команд bash, он получит права суперпользвоателя даже залогинившись гостевой учётной записью."

kurator88

@sattellite есть такие фичи про которые читал и хочется попробовать но негде.

В linux это как раз suid а в java мягкие ссылки.

Вот снова прочитал, снова восхитился, снова не знаю зачем мне это надо и надо ли вообще.

sattellite

@kurator88 ну вот я начал читать одну хак-статью, а там "...ставим s-бит..." и я не понял что это. Полез читать и выжимку записал. Использование этих битов скорее в области администрирования систем. Но и как программисту про это надо знать, чтобы правильно проверять права, например.
Это однозначно не для широкого использования.

КМБ-4

@kurator88 @sattellite
suid вроде на ping и traceroute стоит много где, потому что обоим нужны RAW-сокеты

КМБ-4

@kurator88 @sattellite
Проверил на арче
На ping нет suid, на traceroute тоже. В т.ч. traceroute в ICMP-режиме нормально работает без рутца.
А вот на RPM-дистрибутивах такое видал, но давно это было, может уже вынесли для ICMP какие-то сокеты, чтобы в RAW не лезть

mittorn

@coaxial @kurator88 @sattellite для этих целей в linux давно не suid используется, а cap

iliazeus

@sattellite на файлах он, кажется, сейчас почти ни на одной системе не работает. (upd: или работает? текст не очень понятно написан)

en.wikipedia.org/wiki/Sticky_b

> Subsequently, this behavior became operative only in HP-UX and UnixWare. Solaris appears to have abandoned this in 2005.[citation needed] The 4.4-Lite release of BSD retained the old sticky bit behavior, but it has been subsequently dropped from OpenBSD (as of release 3.7) and FreeBSD (as of release 2.2.1). No version of Linux has ever supported this traditional behavior; Linux performs caching of executable files in the same way as all files, so re-executing the program to flush the cache is not necessary.

@sattellite на файлах он, кажется, сейчас почти ни на одной системе не работает. (upd: или работает? текст не очень понятно написан)

en.wikipedia.org/wiki/Sticky_b

&gt; Subsequently, this behavior became operative only in HP-UX and UnixWare. Solaris appears to have abandoned this in 2005.[citation needed] The 4.4-Lite release of BSD retained the old sticky bit behavior, but it has been subsequently dropped from OpenBSD (as of release 3.7) and FreeBSD (as of release 2.2.1). No version...

sattellite

@iliazeus хорошее замечание, забыл про это написать сразу. Спасибо

iliazeus

@sattellite хм, или это не ко всему поведению относится, а только к тому, что программу раньше надо было перезапустить после того, как этот бит убираешь...

не совсем понял из вики, если честно. так что, возможно, фигню сказал

iliazeus

@sattellite интернет говорит, что на линуксах, по крайней мере, sticky bit для файлов не работает; про остальные *nix я не знаю

КМБ-4

@sattellite
Про стики на исполняемые не знал про такое поведение

sattellite

@coaxial в соседней ветке выяснили, что sticky на файлы в линуксе не работает

mastodon.ml/@iliazeus@lor.sh/1

Go Up