Android常规用户登录在ssh会话中向其他用户发送su时会丢失组信息

Android常规用户登录在ssh会话中向其他用户发送su时会丢失组信息,android,ssh,su,Android,Ssh,Su,我在做什么: 我已经构建了GNU emacs,用于手机上的本机使用 我在手机上以守护程序模式运行emacs,因此我可以随时使用EmacClient连接到它,以继续处理常规文件、运行进程等 从手机终端登录时,我当前是用户10157,一切正常: $id uid=10157(10157)gid=10157(10157) 分组=10157(10157)、1015(1015)、1023(1023)、1028(1028)、3003(3003) 当我通过ssh从PC连接到手机时(我在手机上使用DigiSSH

我在做什么:

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

    $id

    uid=10157(10157)gid=10157(10157) 分组=10157(10157)、1015(1015)、1023(1023)、1028(1028)、3003(3003)

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

    $id

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

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

因此:
$su-10157

很好,我可以运行emacs等。但是,我无法访问web

$ 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下的此用户时可以继续访问web?

根据
su
的标准手册页(从linux框中)

使用-时,必须将其指定为最后一个su选项。其他表单(-l和--login)没有此限制

基于此,试试看

$ su 10157 -

我可能遗漏了一些东西,因为这看起来太明显了,但为什么不只是“sudo-u10157”你的emacs程序呢


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

当我运行命令时:

busybox --list
我在名单上没有看到苏

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

我遵循了您描述的步骤,我可以作为另一个用户使用su,并且仍然拥有internet权限,如下所示

我安装了以下应用程序

  • BusyBox v1.18.5-Stericson
  • 超级用户v3.0.7
  • 终端仿真器v1.0.45
  • SSHDroid v1.9.6
建议: 我认为问题在于你的设备上的su。你可以试试这个。

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

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


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

此外,gid和它们与每个应用程序uid的关联在安装后无法更改

10157应该是DigiSSHd应用程序的uid,因此您可以在更改后尝试重新生成它,以要求正确的

你可以找到一些有用的和有用的东西

这同样适用于BusyBox(请参阅)


但是,您可以通过这些应用程序启用网络访问,从而打开一些安全漏洞

#只是说这是一个巧合:“27ca8cd合并”ping:删除组检查“由Nick Kralevich编写-14天前”我很确定问题出在你的超级用户应用程序上。检查我的答案。@mcandre。在我的设置中,我甚至没有使用
su-
,我使用的是
susomeuser
。你需要使用
-
来“提供一个与用户直接登录时所期望的环境类似的环境。”BusyBox
su-l u0\u a41
将组放到我的手机上,与
su u0\u a41-
一样,我需要保留家长的组权限,否则我将无法访问SD卡。不幸的是,BusyBox
su
正在删除Android中的组权限。@mcandre我可以确认这一点。
su
二进制文件可以在
/system/bin/su
/system/xbin/su
中找到,并且不是BusyBox的一部分。你从哪里获得你的
su
-超级用户、超级用户或其他东西?@appsroxcom是的,我正在使用超级用户应用程序中的
su
。您能否提供一个使用用户名而不是ID的示例?@appsroxcom请再次查看您的屏幕截图。团体失踪。这样地。当我
su-
时,我会丢失这些组。@mcandre,没关系。但是,当你使用SD卡时,你能ping或读SD卡吗?我可以。@mcandre,BusyBox id命令在显示组信息时似乎有一些问题。看看这个。