Я загрузил Linux NFS
с Android system. И теперь мне нужно выполнить команду как super use в 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 root. Права доступа должны выглядеть так:
-rwsr-xr-x 1 root root 40040 Nov 12 2015 /bin/su
В этой ситуации возможны три варианта.
- Исполняемый файл
su
на сервере не имеет setuid (проверьте наls -l $(type -p su)
сервере) nosuid
NFS-монтирование на клиенте не включает - или явно исключает - бит setuid. Убедитесь, что в вашей команде нетmount
, и если сомневаетесь, добавьтеsuid
как явную опцию- Безопасность 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
пользователь будет иметь доступ к файлам, как если бы его идентификатор был равен 0, и, таким образом, сможет читать защищенные файлы.