Intereting Posts
как грамматика оболочки POSIX принимает FOO = bar foobar Как проверить, установлен ли Apache SNI на Debian 8 Поиск / установка USB-устройства в Mac OS X 10.8 `du -b` показывает разный размер, чем` ls` Несколько разделов tmpfs Как выдать с помощью MAKE и только -silent вывод на экран, но получить полный вывод в файл журнала Создайте man-страницу с несколькими исполняемыми файлами Почему я не могу скопировать директиву с * nix на установленный smbfs-ресурс в Windows 7? Прочитайте и обработайте строку, char по char, но разрешите пользователю простую строку редактировать ввод OOM Killer: Процессы имеют счет более 1000 Читайте только в корне установленного раздела Как выполнить поиск максимальной глубины в ack и grep? Какое обоснование оболочки bash не предупреждает вас об арифметическом переполнении и т. Д.? Уведомление Gnome 3 не отображается. Пока vlc запущен Справка по установке в Arch Linux

SUID-бит не работает для исполняемых файлов в каталоге / tmp

Печать значения getuid () и geteuid () из исполняемого файла с включенным SUID-битом (chmod + s), по-видимому, приводит к исходному идентификатору вызывающего абонента вместо идентификатора владельца, если исполняемый файл находится в каталоге / tmp ,

При компиляции одного и того же кода в домашний каталог (и выполнение chmod + s), похоже, работает так, как ожидалось.

Я много искал и не мог найти ссылки на такое поведение.

Кто-нибудь знает, почему это происходит?

этот источник прост:

#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(){ printf("%d\n%d\n", getuid(), geteuid()); return 0; } 

Исполняемые файлы Setuid могут быть отключены в настройках монтирования файловой системы, этот параметр называется nosuid . Это всегда делается для файловых систем, которые могут быть установлены ненадежными пользователями (опция mount user в /etc/fstab автоматически подразумевает nosuid ) или чей контент может быть модифицирован произвольно ненадежными пользователями, например, на сменных носителях или по сети с компьютеров, которые не полностью доверяют. Иногда это делается и для других файловых систем.

Многие системы используют tmpfs для /tmp : файловая система, содержимое которой остается в памяти и не сохраняется при перезагрузке. (Файловая система tmpfs может быть быстрее, чем полагаться на кеш диска, потому что ей не нужно заботиться о согласованности данных.) Некоторые настройки монтируют ее с помощью параметра nosuid , потому что обычно нет никакого вызова временных файлов setuid, и это может иногда являются частью вектора атаки (файлы setuid в /tmp не представляют собой риск безопасности как таковой, но их отключение может ограничить ущерб, вызванный несколькими уязвимостями).

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

 df /tmp/somefile 

Затем найдите точку монтирования на выходе с mount или на Linux в /proc/mounts .

 mount | awk '$3 == "/tmp"'