Повышение привилегий C (с паролем) - PullRequest
2 голосов
/ 31 мая 2010

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

Спасибо!

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

Ответы [ 3 ]

2 голосов
/ 31 мая 2010

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

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

1 голос
/ 31 мая 2010

Вы можете сделать это с помощью установки suid-бита для приложения, но если вы хотите из этого 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/

0 голосов
/ 31 мая 2010

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

...