我已經從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 一樣存取文件,因此可以讀取受保護的文件。