- Бит SUID не работает
- ВНЕЗАПНО слетел SUID-бит
- unixforum.org
- Решено: Suid Bit не работает
- Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- Re: Решено: Suid Bit не работает
- SUID bit
- Почему у скриптов не работает Suid?
Бит SUID не работает
Программа read выполняет команду cat tech.txt:
mount |grep nosuid
Так там же нет прав на выполнение от mintol, только от techmint и от его группы.
Сделай chmod 6755 read
Я правильно понимаю, что если директории /home в списке нет, то дело не в этом?
Разве бит SUID не должен расширять права пользователя до прав владельца файла? Какой тогда смысл в бите, если я просто могу указать chmod 757 read
suid:
1. Позволяет бинарнику выполнять операцию setuid, тем самым повышая привелегии
2. Запрещает другим процессам (пускай даже от этого же пользователя) вмешиваться в память, чтобы они не могли повлиять на действия с повышенными привелегиями
Например, su/sudo. Он имеет флаг suid. запускается от текущего пользователя, запрашивает пароль, поднимает привелегии, читает хэш пароля, проверяет его и выставляет привелегии при правильном пароле, после чего запускает дочерний процесс. Защита от ваимодействия как раз чтобы другие процессы не могли к примеру повлиять на проверку пароля.
При выполнении команды от имени mintol
Другие пользователи не имеют прав на этот файл, поэтому бит SUID бесполезен.
Когда ты запускаешь процесс, он выполняется с правами пользователя, который этот процесс запустил. К каждому файлу у пользователей есть определённые права, и для каждого файла пользователь попадает в одну из трёх категорий: владелец файла, члены группы, все остальные. Для каждой категории могут быть установлены свои права, разумеется.
Теперь про SUID/SGID. Его роль заключается в том, чтобы при запуске файла подставить UID/GID не пользователя, а файла, то есть файл как бы запускался владельцем или группой. Заметь, речь идёт о запуске, значит, права на запуск должны быть.
В чём разница между SUID/SGID и chmod XX7? При chmod XX7 ты разрешаешь всем остальным делать что угодно с файлом, и только с ним. При использовании SUID/SGID меняются соответствующие ID при запуске, что даёт права пользователя на всю систему (при этом к файлу доступа по-прежнему может и не быть, например chmod 005)
К сожалению man по suid в моей системе нет. То есть для того, чтобы обратиться к файлу, мне нужно либо состоять в одной группе с владельцем файла (и установить chmod 2070 read), либо, если я простой пользователь, то права на файл должны быть установлены так: chmod 4707 read, что даст мне обратиться к файлу (последняя семерка) и даст мне права владельца (4 и первая 7).
1. Позволяет бинарнику выполнять операцию setuid, тем самым повышая привелегии
Нет, бинарник сразу запускается с правами владельца файла (то есть с повышенными привилегиями в случае рута), а за возможность выполнять setuid(2) отвечает CAP_SETUID.
А касательно делающего setuid процесса sudo:
Вызов setuid при euid=0 выставляет ещё и ruid=0.
system() вызывает bash, а bash при запуске сбрасывает последствия setuid.
Источник
ВНЕЗАПНО слетел SUID-бит
Месяцами ничего не трогали, и тут ЕГГОГы.
Думали, runfs отвалились — на месте.
Проверяем — а SUID пропал.
Но от этого не легче. Схрена оно вообще слетело, куда копать? Злобный поцтерингоантивирус, что ли, завёлся, который орёт «SUID — фу!», бьёт по рукам и принудительно сбрасывает? ;D
chown случайно не делал? Он сбрасывает бит SUID.
Надо было ctime посмотреть перед тем, как восстанавливать. Тогда бы было понятно, когда он слетел.
Написали ж — вообще не трогали несколько месяцев.
Тогда бы было понятно, когда он слетел.
Да и так понятно: прямтолькочто. Эта программа каждую секунду вызывается и выхлоп выводится на самом видном месте. Сразу заметили, как ЕГГОГы попёрли.
У меня та же фигня на VPS несколько раз приключалась, в чём дело я так и не понял.
Написали ж — вообще не трогали несколько месяцев.
Не все знают, что в Linux при смене владельца сбрасывается SUID-бит. В Солярке, например, это не так.
Насчет «не трогали» — так все говорят.
Сейчас вот обнаружили, что это приключилось, когда в той же директории обновляли компилятор typescript. Видимо, npm так хулиганит.
кто-то из вас его снёс и забыл сказать остальным
Почему бы не похулиганить от рута, попутно скачивая половину сомнительного интернета?
Источник
unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
Решено: Suid Bit не работает
Модератор: SLEDopit
Решено: Suid Bit не работает
Сообщение sisqo » 18.04.2007 12:14
С правами непривелигорованного пользователя:
Знаю что suid бит не работает для скриптов , но ‘sh’ — полноценный ELF-ник.
В порядке эксперемента под root-ом:
Без suid-ного бита не работает , возвращаю суйдный бит chmod u+s /tmp/ping , и работает из под юзерских прав т.е. в данном случае suid-ный бит действует , но почему не работает для ‘sh’ , закралось подозрение что сам ‘sh’ обладает правами root-а ,но процессы порожденые им не наследуют эти права. Если это так можно-ли решить эту проблему ?
Re: Решено: Suid Bit не работает
Сообщение keir » 18.04.2007 12:43
Re: Решено: Suid Bit не работает
Сообщение sisqo » 18.04.2007 12:50
Re: Решено: Suid Bit не работает
Сообщение sisqo » 18.04.2007 12:57
Сори за совсем ламерский запрос , конечно можно всё работает.
Тем неменее если у кого-то есть мысли почему не работал пример с suid-ним битом , было бы очень интересно послушать
Re: Решено: Suid Bit не работает
Сообщение sash-kan » 18.04.2007 20:39
Re: Решено: Suid Bit не работает
Сообщение аудиоман » 19.04.2007 08:12
Re: Решено: Suid Bit не работает
Сообщение sisqo » 20.04.2007 15:46
Нет , ‘/tmp’ вообще не монтируется отдельно она находится на корневом разделе ‘/’
Re: Решено: Suid Bit не работает
Сообщение serzh-z » 20.04.2007 15:53
Re: Решено: Suid Bit не работает
Две идеи:
Первая, сделай вот так
/tmp/sh -p
(запусти интерпретатор)
и напечатай там
whoami
Re: Решено: Suid Bit не работает
$ ln -s /bin/bash /tmp/sh
olden@gremlin:
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 625228 2004-12-19 18:53 /bin/bash
olden@gremlin:
$ ls -l /tmp/sh
lrwxrwxrwx 1 olden olden 9 2007-04-21 19:49 /tmp/sh -> /bin/bash
olden@gremlin:
$ sudo chmod uu+s /tmp/sh
olden@gremlin:
$ /tmp/sh -c ‘touch /tmp/test’
olden@gremlin:
$ ls -l /tmp/test
-rw-r—r— 1 root olden 0 2007-04-21 19:54 /tmp/test
olden@gremlin:
$ /tmp/sh -c ‘touch /usr/test’
olden@gremlin:
$ ls -l /usr/test
-rw-r—r— 1 root olden 0 2007-04-21 19:54 /usr/test
olden@gremlin:
$ rm /usr/test
rm: удалить защищенный от записи пустой обычный файл `/usr/test’? y
rm: невозможно удалить `/usr/test’: Permission denied
olden@gremlin:
$ sudo rm /usr/test
вопросы?
Re: Решено: Suid Bit не работает
Re: Решено: Suid Bit не работает
Re: Решено: Suid Bit не работает
уважаемый, я хотел сказать, что установка SUID бита символической ссылки на bash — глупая от природы затея.
все дело в том, что автору оригинального вопроса было бы неплохо вникнуть в саму суть, что такое символические ссылки и с чем их едят.
устанавливая SUID бит символической ссылки на bash мы тем самым устанавливаем этот бит самому bash’у (ссілка-то на него указівает). ну а рутовій суид у баша может повлечь за собой массу непредсказуеміх «глюков», например, как то невозможность запуска KDE в иксах.
ладно. имхо тему надо бы закрыть
Источник
SUID bit
Почему «mount: только root может сделать это»? Вроде же SUID для того, что хочу, существует или я неправильно понимаю его назначение?
SUID действует только на бинарные файлы, для скриптов он не работает.
А что делают, если хотят пустить скрипт из-под рута без участия пользователя?
> А что делают, если хотят пустить скрипт из-под рута без участия пользователя?
Я имел в виду — из-под пользователя, где скрипт использует привелегии рута.
Или выставьте suid на /bin/mount.
>Или выставьте suid на /bin/mount.
И на /sbin/losetup
А чё мелочиться — посоветуй ТС’у просто под рутом всегда работать:)
даже не зная Си, написать такую программу — плевое дело. вот это и делают.
$ls -l `which mount`
-rws—x—x 1 root root 56152 Jul 20 06:28 /bin/mount
suid бит там является обычным, mount сам проверяет права пользователя через getuid() , поэтому и способен работать если в fstab указать опцию user,
а вот ТС наверное не подойдет статическая запись в fstab,
посоветовать ему можно 2 варианта
1) sudo mount (уже предложили)
2) монтировать через fuseiso
Источник
Почему у скриптов не работает Suid?
Интересует почему было принято соглашение, по которому setuid и setgid работают только для бинарников.
Как запустить скрипт от другого пользователя я знаю, интересуют именно причины такого соглашения.
«the truth is actually that the setuid bit is disabled on a lot of *nix implementations due the massive security holes it incurs»
Это я видел. Интересует какие именно могут возникнуть проблемы. Встречал утверждение, что в таком случае возможна гонка. Не могу понять каким образом.
какие именно могут возникнуть проблемы.
Неужели надо объяснять какие могут быть проблемы из-за security holes?
И вообще гугл в помощь.
Если мы создаём симлинк на SUID-скрипт, то ядро запускает интерпретатор с SUID правами, и даёт ему имя этого скрипта. Если в этот момент заменить этот симлинк другим. Да, можно что-нибудь придумать, но зачем? Проще запретить.
И второй момент, интерпретатор команд, в общем случае, не расчитан на то, что он может быть запущен SUID, в отличии от простой программы, например, ping, интерпретатор может вести себя по разному от переменных среды или файла конфигурации. То есть ещё одна потенциальная дыра.
Неужели надо объяснять какие могут быть проблемы из-за security holes?
Чего ты взъелся? Человек хочет знать, в чём эти security holes конкретно заключаются, потому что объяснение «умные люди так сказали» его не удовлетворяет.
Если мы создаём симлинк на SUID-скрипт, то ядро запускает интерпретатор с SUID правами, и даёт ему имя этого скрипта. Если в этот момент заменить этот симлинк другим. Да, можно что-нибудь придумать, но зачем?
Возможно я что то не понимаю, то же самое можно провернуть и с бинарником
интерпретатор команд, в общем случае, не расчитан на то, что он может быть запущен SUID, в отличии от простой программы
Это понятно. этому правилу х.з. сколько лет. Интересны причины почему оно появилось
то же самое можно провернуть и с бинарником
Нет, ядро получает имя бинарника, открывает его (файл), смотрит атрибуты, читает, запускает. Ему безралично, что в какой-то момент симлинк начнёт показывать куда-то в другое место, suid’ны будет запущен именно тот файл, куда показывал симлинк изначально. А если файл открывает suid’ный интерпретатор, то между тем моментом времени, когда на файл «смотрело» ядро и тем моментом времени, когда содержимое файла (символической ссылки) будет читать интерпретатор, можно провести подмену.
Интересны причины почему оно появилось
Наверное, тех архивов не сохранилось. Линукс, если я не путаю, просто взял это правило, а где оно впервые появилось, отдельный вопрос.
Нет, ядро получает имя бинарника, открывает его (файл), смотрит атрибуты, читает, запускает. Ему безралично, что в какой-то момент симлинк начнёт показывать куда-то в другое место, suid’ны будет запущен именно тот файл, куда показывал симлинк изначально.
Здесь ещё есть правила на счет подгружаемых либ, но дело не в этом. Суидному интерпретатору точно так же можно передавать файл после разрешения всех симлинков.
Наверное, тех архивов не сохранилось. Линукс, если я не путаю, просто взял это правило, а где оно впервые появилось, отдельный вопрос.
Не нашел в сети когда это появилось. Почему и был задан вопрос.
P.S. в данном случае возможны проблемы со средой. То есть environment но это отдельный вопрос
И было бы интересно существуют ли другие решения в nix-подобных системах. qnx и т.д.
Интерпретатору предаётся не файл, а имя файла. Можно городить огород с /dev/fd/3 и тогда у скрипта могут возникнуть проблемы с самоиднетификацией (со своим именем), их можно решать, но зачем весь этот огород?
С таким же успехом ведь можно сделать интерпретатор, понимающий suid-файлы. ЕМНИП, perl, если он сам suid и ему на выполнение дали suid-файл, то он не будет сбрасывать привилегии и выполнит файл с правами суперпользователя.
Про историю немного говорится здесь: http://www.in-ulm.de/
mascheck/various/shebang/ , приводится выжимка из kern_exec.c, то-ли от 4.3BSD-Tahoe, то-ли от 4.4BSD. Вроде как сейчас их исходники доступны бесплатно (но с регистрацией) скачайте, посмотрите.
Интерпретатору предаётся не файл, а имя файла.
Эту возможность я не учел. Спасибо! То есть, насколько понимаю, могут возникнуть проблемы со скриптами, которые написаны без учета возможности выполняться в суидном режиме.
К сожалению, чтение исходников дает понимание как это работает, но не почему так сделано. Мне интересны в основном причины.
С таким же успехом ведь можно сделать интерпретатор, понимающий suid-файлы.
Источник