Ich habe Linux mit einem Android-System gebootet NFS
. Und jetzt muss ich den Befehl als Superuser ausführen minicom
. Aber das System erlaubt mir nicht, in den Superuser-Modus zu wechseln. Jedes Mal, wenn ich Folgendes eingebe:
shell@blaze_tablet:/ $ su
Ich verstehe:
su: permission denied
Ich habe einen Parameter bootargs
in u-boot hinzugefügt, androidboot.selinux=disabled
von dem ich dachte, er würde helfen. Aber das tut er nicht. Kann das Problem an der Berechtigung für einige Dateien liegen NFS
? Oder habe ich einen Parameter übersehen bootargs
?
Aktualisieren
Der Inhalt meiner /etc/exports
Datei
# /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)
Antwort1
Sie schrieben:
Ergebnis der Ausführung von
ls -l $(type -p su)
-rwxr-xr-x root root 157400 2016-04-21 19:11 su
Da liegt Ihr Problem. su
Es fehlt das Setuid-Root-Bit. Die Berechtigungen sollten so aussehen:
-rwsr-xr-x 1 root root 40040 Nov 12 2015 /bin/su
Für diese Situation gibt es drei Möglichkeiten.
- Die
su
ausführbare Datei auf dem Server ist nicht setuid (überprüfen Sie diesls -l $(type -p su)
auf dem Server). nosuid
Der NFS-Mount auf dem Client enthält das Setuid-Bit nicht oder schließt es explizit aus. Stellen Sie sicher, dass Ihr Befehl es nicht enthältmount
, und fügen Sie es im Zweifelsfallsuid
als explizite Option hinzu.- Die Android-Sicherheit ist völlig anders implementiert als die Unix/Linux-Sicherheit. Wenn das der Fall ist, kann ich Ihnen nicht weiterhelfen
Antwort2
Dies passiert normalerweise, wenn die NFS-Freigabe nicht ordnungsgemäß exportiert wird.
Standardmäßig root
ist der Benutzer zugeordnet nobody
. Das bedeutet, dass Sie beim Ausführen su
(was ein Suid-Root ist) versuchen, als Benutzer auf Dateien auf dem NFS-Server zuzugreifen nobody
... und dies lässt Sie nicht lesen /etc/shadow
und ähnliches.
no_root_squash
Sie haben nicht gesagt, welcher Ihr NFS-Server ist, aber wenn es der normale Linux-Server ist, müssen Sie ihn zum Export hinzufügen .
z.B
/directory client(rw,no_root_squash,async,insecure)
root
Jetzt greift der Benutzer auf die Dateien zu, als ob es sich um die UID 0 handeln würde, und kann so die geschützten Dateien lesen.