Повышение привилегий 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 - это сделать джейлбрейк.