NFSから起動したLinuxにはsuコマンドの権限がありません

NFSから起動したLinuxにはsuコマンドの権限がありません

Android システムから Linux を起動しましたNFS。そして、 でコマンドをスーパー ユーザーとして実行する必要がありますminicom。しかし、システムではスーパー ユーザー モードに切り替えることができません。次のように入力するたびに、

shell@blaze_tablet:/ $ su   

なるほど:

su: permission denied

bootargsu-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

問題はここにあります。setuidsuルート ビットがありません。権限は次のようになります。

-rwsr-xr-x 1 root root 40040 Nov 12  2015 /bin/su

この状況には3つの可能性があります。

  1. suサーバー上の実行可能ファイルが setuid ではありません (サーバー上で確認してくださいls -l $(type -p su))
  2. nosuidクライアントのNFSマウントにはsetuidビットが含まれていないか、明示的に除外されています。コマンドに含まれていないことを確認し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 であるかのようにファイルにアクセスし、保護されたファイルを読み取ることができるようになります。

関連情報