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

相關內容