NFS에서 Linux를 부팅하면 su 명령 권한이 없습니다.

NFS에서 Linux를 부팅하면 su 명령 권한이 없습니다.

NFSAndroid 시스템에서 Linux를 부팅 했습니다 . 이제 에 들어가야 합니다 minicom. 하지만 시스템에서 슈퍼유저 모드로 전환할 수 없습니다. 내가 입력할 때마다:

shell@blaze_tablet:/ $ su   

이해합니다:

su: permission denied

bootargsandroidboot.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

그게 당신의 문제입니다. susetuid 루트 비트가 누락되었습니다. 권한은 다음과 같아야 합니다.

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

이 상황에는 세 가지 가능성이 있습니다.

  1. 서버의 실행 파일이 susetuid가 아닙니다( ls -l $(type -p su)서버에서 확인).
  2. 클라이언트의 NFS 마운트는 setuid 비트를 포함하거나 명시적으로 제외하지 않습니다. nosuid명령이 없는지 확인하십시오 . 의심스러운 경우 명시적인 옵션으로 mount추가하십시오.suid
  3. 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으로 파일에 액세스하므로 보호된 파일을 읽을 수 있습니다.

관련 정보