Установка соответствующих разрешений на двоичный файл SU

Недавно я нашел способ поддерживать root-доступ на моем устройстве Android с помощью SSH-сервера dropbear, который я модифицировал для запуска при загрузке с правами root, используя init.d, маленькую магию сценариев и некоторые сценарии конфигурации, которые я сделал. Если хотите, можете проверить это здесь . В любом случае для эксперимента я удалил из системы бинарник su и Superuser.apk. Мне удалось скопировать их обратно в систему, но я не знаю соответствующих разрешений для двоичного файла su. Если я посмотрю в приложении Super User на другом телефоне с root-правами и перейду к обновлению, оно отобразится -rwsr -sr-xкак разрешения на двоичный файл. Как я могу установить эти же разрешения вручную и что они означают?

Ответы (1)

Для установки прав доступа к файлам вы можете использовать chmodкоманду. Показанные разрешения в основном разделены на 3 части, каждая из которых состоит из 3 символов: тройка для владельца, группы и «других». Обычно каждая тройка содержит определения для чтения, записи и выполнения файла; так что rwxозначает «может читать, писать и выполнять», в то время как r--сказал бы «может только читать».

Полученным 9 символам обычно предшествует еще один, дающий информацию о типе «файла»: (d) каталог и (l) чернила являются наиболее распространенными примерами. Опять же, если никакое «особое условие» не соответствует, начальный указатель -указывает на «обычный файл».

Исходя из этого, давайте примем ваш ввод: -rwsr-sr-xочевидно, описывает «обычный файл» (начинающийся с -), доступный для чтения ( r) владельцем, группой и другими, доступный для записи только владельцем и исполняемый «другими» — в то время как владелец и группа имеют sвместо этого xдля выполнения. Это означает «suid», повышает вызывающего до уровня владельца/группы файла.

Воспользовавшись тем, что разрешения могут быть установлены «побитно» ( x= 1, w= 2, r= 4, suid user = 4, group = 2), после моего долгого «разглагольствования», наконец, команда, которая должна сделать свое дело:

chmod 6774 su

Следует установить разрешения, которые показывает ваш вопрос. Если я «просчитался», у вас есть вся информация, чтобы пересчитать для себя сейчас :)


Дополнительные подсказки из комментариев:

Вместо вычисления «битовой маски» можно также использовать символические имена — как указал Дэн Халм и как объяснено, например, на справочной странице chmod :

  • определение кому предоставить: (u)ser / (g)roup / (o)thers / (a)ll
  • определение того, что предоставлять: (r)read / (w)rite / e(x)ecute / (s)uid
  • определение того, следует ли (+) предоставить или (-) отозвать

Таким образом, следующие две команды должны быть похожими, при условии, что ранее не было предоставлено ничего другого:

chmod 6774 su
chmod u+rws g+rs o+rx su

Разница становится очевидной, если, например, раньше «другие» также имели разрешение на запись: в то время как первая команда (с использованием битовой маски) явно устанавливает разрешение в соответствии с определенными «предоставлениями» (и, таким образом, удаляет это разрешение на запись), символическая команда " делает diff" (в примере он просто добавляет указанные разрешения к тому, что было раньше, так что разрешение на запись не будет удалено).

Вам не нужно считать числа самостоятельно chmod: chmod u+rws g+rs a+rx suвсе будет делаться правильно, и вам не нужно считать на пальцах.
Уверены, что это не так chmod u+rws g+rs o+rx su(не «все», а «другие», см. справочную страницу chmod )? Я всегда путаю это, думая, был ли это «владелец» или «другие», поэтому я предпочитаю использовать побитовые вещи, за исключением случаев, когда меняю вещи только для группы;)
@DanHulme снова проверит справочную страницу и a+rxустановит «rx» для «ugo» (пользователь, группа и другие). Я не уверен, что меня больше смущает: вычисление набора битов или интерпретация рекурсивных символов: P
Да, использование aсделало бы команду короче, но, как вы заметили, из-за этого немного сложнее понять, что происходит, поэтому я почти никогда не использую a.
@DanHulme Я даже не знал об этом aсимволе. Но спасибо, что заставили меня снова проверить справочную страницу :D aИногда переключатель может быть весьма полезен, например, для таких вещей, как chmod a+r public_info.txt.
Извините, я неправильно понял, что вы сказали. Да, когда я писал aв своем первом комментарии, я имел в виду oдругих. А я думал, зачем ты это поднял!
Спасибо за разъяснения, @DanHulme! С вашего разрешения (и упоминания) я включу его в свой ответ, поэтому никому не нужно следить за всеми комментариями для понимания.