suid-корень не имеет эффекта

Для речевых вызовов можно попробовать YATE. Это было первоначально предназначено для серверной стороны работы, но со Спокойно-интерфейсной и в большой степени модульной архитектурой, это работает отлично как SIP, XMPP и клиент H.323. Это также предварительно компилируется для Windows (если у Вас есть какие-либо коллеги, которые используют их), и хорошо работает из поля. На Linux можно попробовать последнюю версию мерзавца, но компиляция для h323 может быть немного хитрой. AFAIK, существует также deb и доступные RPM-пакеты.

Существуют многие, намного больше вещей, которые можно сделать с YATE, можно найти больше информации в их Wiki и списке рассылки. Кроме того, не стесняйтесь просить что-либо на #yate канале на Freenode.

6
14.09.2017, 03:54
1 ответ

Заключение в кавычки access() страница справочника:

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

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

Можно использовать setreuid() для изменения и эффективного UID и реального UID процесса или можно использовать open() определить полномочия. Я рекомендую второе решение тем более, что Вы уже звоните open() так или иначе. Можно проверить ли errno равно EPERM узнать, были ли недостаточные полномочия причиной open() неудавшийся.

Вызов к open() сбои в Вашем коде, потому что Вы используете возвращаемое значение от open() как, если условие. Я предполагаю, что вызов на самом деле следует и возвращает Вас допустимое, ненулевое (нуль, уже взятый stdin) дескриптор файла, заставляющий управление входить в ответвление обработки ошибок. Ответвление обработки ошибок, если дисплеи EPERM сообщение об ошибке, так как это - последняя ошибка, которая произошла из-за access() звонить. Условие ввести ответвление обработки ошибок должно проверить ли open() возвращенный-1.

7
27.01.2020, 20:27
  • 1
    @AdamZalcman благодарность you.i изменила вопрос, я просто, хочет спросить открытый error.sorry –  sinners 07.01.2012, 20:12
  • 2
    @sinners, я добавил объяснение второго сообщения об ошибке (последний абзац). –  Adam Zalcman 07.01.2012, 20:17
  • 3
    @AdamZalcman i understand.thank Вы. я неправ, книга была правильной. –  sinners 07.01.2012, 20:21

Теги

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