NFS
Android 시스템에서 Linux를 부팅 했습니다 . 이제 에 들어가야 합니다 minicom
. 하지만 시스템에서 슈퍼유저 모드로 전환할 수 없습니다. 내가 입력할 때마다:
shell@blaze_tablet:/ $ su
이해합니다:
su: permission denied
bootargs
androidboot.selinux=disabled
도움이 될 것이라고 생각되는 매개변수를 u-boot에 추가했습니다 . 그러나 그것은 진실이 아니다. 일부 파일에 대한 권한에 문제가 있을 수 있습니까 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 루트) NFS 서버의 파일에 사용자로 액세스하려고 시도하게 됩니다 nobody
./etc/shadow
NFS 서버가 무엇인지는 밝히지 않았지만 일반 Linux 서버인 경우 이를 no_root_squash
내보내기에 추가해야 합니다.
예를 들어
/directory client(rw,no_root_squash,async,insecure)
이제 root
사용자는 uid 0으로 파일에 액세스하므로 보호된 파일을 읽을 수 있습니다.