5

我在做什么:

  • 我已经在手机上构建了 GNU emacs 以供本机使用。
  • 我在手机上以守护程序模式运行 emacs,因此我随时使用 emacsclient 连接到它,以继续处理常规文件、运行进程等。
  • 从手机终端登录时,我目前是用户 10157,一切正常:

    $标识

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

  • 当我通过 ssh 从 PC 连接到手机时(我在手机上使用 DigiSSHd),它以普通用户 10282 的身份登录,一切正常:

    $标识

    uid=10282 gid=10282 组=1015(1015),1023(1023),1028(1028),3003(3003)

Emacs 运行良好等。但是,这样我无法通过 emacsclient 连接到在用户 10157 下运行的 emacs 进程。这是可取的,因为我不想启动两个 emacs 进程,因为我想继续使用我在用户 10157 下的 emacs 中打开。

所以: $ 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)

因此,除了其他组之外,我不再属于访问 Internet 所必需的组 3003。

为什么这个组信息会被删除,我该如何解决这个问题,所以当我在 ssh 下 su 作为这个用户时,我可以继续访问网络?

4

4 回答 4

4

当我运行命令时:

busybox --list

我没有在列表中看到 su 。

su --help

在帮助文本中显示 Superuser.apk。这意味着su由超级用户应用程序提供。

我按照您描述的步骤操作,我可以作为另一个用户使用,并且仍然拥有互联网权限,如下所示。

终端

在此处输入图像描述

我安装了以下应用程序。

  • BusyBox v1.18.5-Stericson
  • 超级用户 v3.0.7
  • 终端模拟器 v1.0.45
  • SSHDroid v1.9.6

建议:我认为问题出在您设备上的 su 上。你可以试试这个。 https://play.google.com/store/apps/details?id=com.noshufou.android.su

如果我只使用 adb shell 而不运行 SSHDroid,我仍然可以作为另一个具有 Internet 权限的用户。

在此处输入图像描述

注意:BusyBox id 命令并不总是显示组信息。

在此处输入图像描述

于 2013-04-07T19:30:28.037 回答
2

According to the standard man page for su (from a linux box)

When - is used, it must be specified as the last su option. The other forms (-l and --login) do not have this restriction.

Based on that, try

$ su 10157 -
于 2013-04-04T14:35:40.817 回答
0

我可能在这里遗漏了一些东西,因为这似乎太明显了,但为什么不只是 'sudo -u 10157' 你的 emacs 程序呢?

您仍然可以访问网络,并且您的 emacs 将正常工作。还是我错过了一些重要的事情?

于 2013-04-05T09:31:19.957 回答
0

权限不是可以通过继承的环境变量su -

此外,gid 是硬编码的,它们与每个 APP uid 的关联在安装后无法更改。

10157应该是DigiSSHd应用程序的 uid,因此您可以在更改AndroidManifest.xml以要求适当的权限后尝试重建它。

你可以在这里这里找到有用的东西。

BusyBox也应如此(参见此处)。

但是,您可以通过此类应用程序启用 NETWORK 访问来打开一些安全漏洞。

于 2013-04-09T16:04:38.730 回答