从 NFS 启动 Linux 没有 su 命令的权限

从 NFS 启动 Linux 没有 su 命令的权限

我已经从NFSAndroid 系统启动了 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

这种情况有三种可能。

  1. 服务器上的可执行文件su不是 setuid(在ls -l $(type -p su)服务器上检查)
  2. 客户端上的 NFS 挂载不包括(或明确排除)setuid 位。确保您没有nosuid命令mount,如果有疑问,请添加suid为显式选项
  3. 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 一样访问文件,因此可以读取受保护的文件。

相关内容