Android システムから Linux を起動しましたNFS
。そして、 でコマンドをスーパー ユーザーとして実行する必要があります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
問題はここにあります。setuidsu
ルート ビットがありません。権限は次のようになります。
-rwsr-xr-x 1 root root 40040 Nov 12 2015 /bin/su
この状況には3つの可能性があります。
su
サーバー上の実行可能ファイルが setuid ではありません (サーバー上で確認してくださいls -l $(type -p su)
)nosuid
クライアントのNFSマウントにはsetuidビットが含まれていないか、明示的に除外されています。コマンドに含まれていないことを確認し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 であるかのようにファイルにアクセスし、保護されたファイルを読み取ることができるようになります。