我已经从NFS
Android 系统启动了 Linux。现在我必须在minicom
.但系统不允许我切换到超级用户模式。每次当我输入:
shell@blaze_tablet:/ $ su
我懂了:
su: permission denied
bootargs
我在 u-boot 中添加了 一个参数androidboot.selinux=disabled
,我认为这会有所帮助。但事实并非如此。问题可能出在某些文件的权限上吗NFS
?或者我错过了任何参数bootargs
?
更新
/etc/exports
我的文件的内容
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
/export/rfs *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
答案1
你写了:
执行结果
ls -l $(type -p su)
-rwxr-xr-x root root 157400 2016-04-21 19:11 su
这就是你的问题。su
缺少 setuid 根位。权限应该如下所示:
-rwsr-xr-x 1 root root 40040 Nov 12 2015 /bin/su
这种情况有三种可能。
- 服务器上的可执行文件
su
不是 setuid(在ls -l $(type -p su)
服务器上检查) - 客户端上的 NFS 挂载不包括(或明确排除)setuid 位。确保您没有
nosuid
命令mount
,如果有疑问,请添加suid
为显式选项 - Android 安全性的实现方式与 Unix/Linux 安全性完全不同。如果是这种情况,我无法进一步帮助您
答案2
通常,如果 NFS 共享未正确导出,就会发生这种情况。
默认情况下,root
用户映射到nobody
.这意味着当您尝试运行su
(即 suid root)时,您将尝试以用户身份访问 NFS 服务器上的文件nobody
...这不会让您阅读/etc/shadow
和类似的内容。
你没有说你的 NFS 服务器是什么,但如果它是普通的 Linux 服务器,那么你需要添加no_root_squash
到导出中。
例如
/directory client(rw,no_root_squash,async,insecure)
现在root
用户将像 uid 0 一样访问文件,因此可以读取受保护的文件。