Повышение привилегий C (с паролем)

Мне нужно написать программу на C, которая позволит мне читать / записывать файлы, принадлежащие пользователю root. Однако я могу запустить код только под другим пользователем. У меня есть пароль пользователя root, но в системе нет команд "sudo" или "su", поэтому у меня нет способа получить доступ к учетной записи root (фактически, вообще нет никаких команд оболочки). Я не очень много знаю о разрешениях UNIX, поэтому я не знаю, возможно ли на самом деле сделать это без какой-либо эксплуатации системы или запуска программы, принадлежащей самому пользователю root (с +s или любым другим), Любой совет?

Спасибо!

PS Нет, в этом нет ничего страшного, это на iPhone.

3 ответа

Решение

В системе разрешений UNIX вам нужно запустить файл, принадлежащий самому root, который помечен как setuid-root (+s, как вы сказали) или взаимодействовать с каким-либо процессом, который уже выполняется как root.

Если такого файла нет, вам не повезло.

Вы можете сделать это с помощью установки suid bit для приложения, но если вы хотите от этого c application запустить какую-нибудь оболочку, это было запущено на локальном пользователе, если вы делаете это нормально, это система безопасности.

Однако вы можете read/write/execute файлы принадлежат пользователю root, но если ваш пользователь не входит в группу файлов, ваш целевой файл должен быть установлен read/write/execute на последних 3 битах или когда ваш пользователь находится в группе владельцев файлов, вы должны проверить / применить это к 3 битам в средней позиции. (3 первых бита устанавливают разрешение для владельца, но это не может быть полезной для вас информацией).

Если у вас нет доступа к root учетная запись. Затем, если права доступа группы и других пользователей не имеют доступа к функциям, как у вас, вы не можете ничего с этим поделать, кроме попытки получить привилегированного пользователя для доступа к этому файлу. В других случаях вы можете сделать некоторые исправления в разрешениях доступа к файлам, но не из этой системы, вы должны получить жесткий диск с этого устройства и подключиться к другому, чтобы изменить его, или загрузить на это устройство работающую систему, чтобы изменить это. Однако вы можете сделать это в привилегированной системе, а не в этой.

Больше информации о SUID bits Вы можете найти по адресу:

http://www.codecoffee.com/tipsforlinux/articles/028.html

http://www.everyjoe.com/newlinuxuser/explain-what-is-setuid-and-setgid/

IPhone SDK не позволяет этого. Ваше приложение находится в изолированной программной среде, и оно не может выходить за пределы этой изолированной программной среды, за исключением случаев, предусмотренных Apple. Единственный способ сделать это на iPhone - это сделать джейлбрейк.

Другие вопросы по тегам