NFS에서 부팅됨 Linux에는 su 명령에 대한 권한이 없습니다.

NFS에서 부팅됨 Linux에는 su 명령에 대한 권한이 없습니다.

NFSAndroid 시스템 에서 Linux를 부팅했습니다 . 이제 .NET에서 슈퍼 사용으로 명령을 실행해야 합니다 minicom. 하지만 시스템에서는 슈퍼 유저 모드로 전환하는 것을 허용하지 않습니다. 내가 입력할 때마다:

shell@blaze_tablet:/ $ su   

알겠어요:

su: permission denied

bootargsu-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

문제가 있습니다. susetuid 루트 비트가 누락되었습니다. 권한은 다음과 같아야 합니다.

-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. 즉, susuid root인 실행을 시도하면 NFS 서버의 파일에 사용자로 액세스하려고 시도하게 되며 이로 인해 읽기 및 유사한 작업 nobody이 허용되지 않습니다 ./etc/shadow

NFS 서버가 무엇인지 말하지 않았지만 일반 Linux 서버인 경우 no_root_squash내보내기에 추가해야 합니다.

예를 들어

/directory client(rw,no_root_squash,async,insecure)

이제 root사용자는 uid 0인 것처럼 파일에 액세스하므로 보호된 파일을 읽을 수 있습니다.

관련 정보