Обычный вход пользователя Android теряет информацию о группе, когда su другому пользователю в сеансе ssh

Что я делаю:

  • Я создал GNU emacs для собственного использования на телефоне.
  • Я запускаю emacs в режиме демона на телефоне, поэтому я подключаюсь к нему в любое время с помощью emacsclient, чтобы продолжить работу с обычными файлами, запустить процессы и т. д.
  • При входе с терминала на телефоне я сейчас пользователь 10157, все работает:

    $ id

    uid=10157(10157) gid=10157(10157) groups=10157(10157),1015(1015),1023(1023),1028(1028),3003(3003)

  • При подключении по ssh к телефону с ПК (использую DigiSSHd на телефоне) логинится как обычный пользователь 10282, все работает:

    $ id

    uid=10282 gid=10282 группы=1015(1015),1023(1023),1028(1028),3003(3003)

Emacs работает нормально и т.д. Однако таким образом я не могу подключиться через emacsclient к процессу emacs, работающему под пользователем 10157. Это желательно, так как я не хочу запускать два процесса emacs, так как я хочу продолжать работать с файлами, которые У меня открыто в emacs под пользователем 10157.

Поэтому: $ su - 10157

Хорошо, я могу запустить emacs и т. д. Однако я не могу получить доступ к сети.

$ ping -c1 google.com
You must have internet permissions to use ping.  Aborting.
$ id

uid=10157(10157) gid=10157(10157) groups=10157(10157)

Таким образом, я больше не вхожу в группу 3003, необходимую для доступа в Интернет, кроме других групп.

Почему информация об этой группе удаляется и как я могу исправить это, чтобы я мог продолжать получать доступ к Интернету, когда su от имени этого пользователя по ssh?


person 白い熊    schedule 17.01.2013    source источник
comment
#justsaying Какое совпадение: 27ca8cd Merge ping: remove group check by Nick Kralevich - 14 дней назад android. googlesource.com/platform/external/ping   -  person Sherif elKhatib    schedule 04.04.2013
comment
Я почти уверен, что проблема связана с вашим приложением Superuser. Проверьте мой ответ.   -  person appsroxcom    schedule 08.04.2013
comment
@mcandre Вместо этого я почти уверен, что это проблема в AndroidManifest.   -  person Giacomo Tesio    schedule 10.04.2013


Ответы (4)


Когда я запускаю команду:

busybox --list

Я не вижу Су в списке.

su --help

показывает Superuser.apk в тексте справки. Это означает, что su предоставляется приложением Superuser.

Я выполнил шаги, описанные вами, и я мог su как другой пользователь и все еще иметь доступ в Интернет, как показано ниже.

терминал

введите здесь описание изображения

У меня установлены следующие приложения.

  • BusyBox v1.18.5-Стериксон
  • Суперпользователь v3.0.7
  • Эмулятор терминала v1.0.45
  • SSHDroid v1.9.6

Предложение. Думаю, проблема связана с su на вашем устройстве. Вы можете попробовать этот. https://play.google.com/store/apps/details?id=com.noshufou.android.su

Если я просто использую оболочку adb без запуска SSHDroid, я все равно могу использовать su как другой пользователь с доступом в Интернет.

введите здесь описание изображения

Примечание. Команда BusyBox id не всегда показывает информацию о группах.

введите здесь описание изображения

person appsroxcom    schedule 07.04.2013
comment
@mcandre Я могу это подтвердить. Двоичный файл su можно найти либо в /system/bin/su, либо в /system/xbin/su, и он не является частью BusyBox. Откуда у вас su - Superuser, SuperSu или что-то еще? - person Shade; 09.04.2013
comment
@appsroxcom Да, я использую su из приложения Superuser. Не могли бы вы привести пример с использованием имени пользователя, а не идентификатора? - person mcandre; 09.04.2013
comment
@appsroxcom Посмотрите еще раз на свой скриншот. Группы отсутствуют. Как это. i.imgur.com/9hSXwQe.png Когда я su - <sameuser>, я теряю эти группы. - person mcandre; 09.04.2013
comment
@mcandre, все в порядке. Но можете ли вы пинговать или читать SD-карту, когда вы su - ‹sameuser›? Я могу. - person appsroxcom; 09.04.2013
comment
@mcandre, команда BusyBox id, похоже, имеет некоторые проблемы с отображением информации о группе. Проверь это. i.imgur.com/sKzHieu.png - person appsroxcom; 09.04.2013

Согласно стандартной справочной странице для su (из коробки Linux)

Когда - используется, он должен быть указан как последний параметр su. Другие формы (-l и --login) не имеют этого ограничения.

Исходя из этого, попробуйте

$ su 10157 -
person drone.ah    schedule 04.04.2013
comment
В моей настройке я даже не использую su -, я использую su someuser. - person mcandre; 04.04.2013
comment
вам нужно использовать -, чтобы обеспечить среду, аналогичную той, которую пользователь ожидал бы, если бы пользователь вошел в систему напрямую. - person drone.ah; 04.04.2013
comment
BusyBox su -l u0_a41 удаляет группы на моем телефоне, как и su u0_a41 -. - person mcandre; 04.04.2013

Я, вероятно, что-то упускаю здесь, потому что это кажется слишком очевидным, но почему бы просто не использовать «sudo -u 10157» в вашей программе emacs?

у вас по-прежнему будет доступ к сети, и ваш emacs будет работать. или я пропустил что-то важное?

person Bryan Devaney    schedule 05.04.2013
comment
Мне нужно сохранить разрешения родительской группы, иначе я потеряю доступ к SD-карте. И, к сожалению, BusyBox su сбрасывает групповые разрешения в Android. - person mcandre; 06.04.2013

Разрешения не являются переменными среды, которые можно наследовать через su -.

Кроме того, gid жестко запрограммирован и их ассоциации с каждым uid приложения не могут быть изменены после установки.

10157 должен быть uid приложения DigiSSHd, поэтому вы можете попытаться пересобрать его после изменения AndroidManifest.xml для запроса правильного разрешение.

Вы можете найти что-нибудь полезное здесь и здесь.

То же самое должно работать для BusyBox (см. здесь).

Однако вы можете открыть некоторую дыру в безопасности, разрешив доступ к СЕТИ через такие приложения.

person Giacomo Tesio    schedule 09.04.2013