Кроме того, asciinema является очень хорошим терминальным устройством записи (только текст), что можно использовать с tmux (или любой терминал), если Вы хотите совместно использовать онлайн. Это загружает на asciinema сайт и дает короткую ссылку (который можно открыть с функцией "URL" в tmux).
Это очень хорошо для обучения, потому что новички могут следовать за вводом в реальном времени более легко, чем огромная расшифровка стенограммы.
Это находится на GitHub: sickill/asciinema.
Кто, черт возьми, блокирует меня от chroot?
Это был не SELinux - это была охота на диких гусей ( getenforce
возврат «Permissive» означает, что SELinux действительно больше не используется).
Виновником - после добавления большого количества printk
в исходный код ядра для отслеживания сбоев как chroot
, так и mount
- оказался возможности . В частности, «набор ограничений возможностей» Android - вы можете прочитать все о них через man
( man 7 features
), и, признаюсь, я никогда раньше не утруждал себя изучением их - моя повседневная Задачи UNIX зависят от них, и я понятия не имел ... попробуйте это в своем Linux-окне, чтобы убедиться в этом:
$ getfattr -d -m - /sbin/ping
getfattr: Removing leading '/' from absolute path names
# file: sbin/ping
security.capability=0s......
Видите? Ping больше не является корнем SUID - он использует информацию , хранящуюся в расширенных атрибутах файловой системы , чтобы знать, что у него есть доступ к уровню необработанных сокетов (чтобы он мог выполнять свои функции ICMP - то есть на уровне IP).
В любом случае, я отвлекся - момент операции в моем ядре, где я остановил «сбросить набор моих возможностей» - возможно, отвратительным способом «пусть они все идут своим чередом» - это ( security / commoncap.c
):
static long cap_prctl_drop(struct cred *new, unsigned long cap)
{
if (!capable(CAP_SETPCAP))
return -EPERM;
if (!cap_valid(cap))
return -EINVAL;
// ttsiodras: come in, everyone, the water's fine!
//cap_lower(new->cap_bset, cap);
return 0;
}
Это означает, что возможности НИКОГДА не упускаются - действительно, очень безопасная конфигурация: -)
$ adb shell
shell@K01E_2:/ $ su
root@K01E_2:/ # chroot /data/debian/ /bin/bash
root@localhost:/# export PATH=/bin:/sbin:/usr/bin:/usr/sbin:\
/usr/local/bin:$PATH
root@localhost:/# cat /etc/issue
Debian GNU/Linux 8 \n \l
Привет, мой милый Debian: -)
О, и "Root checker" тоже работает - Я вырезал "su.c", чтобы все пользователи моего планшета могли получить root-права:
int main(int argc, char **argv)
{
struct passwd *pw;
uid_t uid, myuid;
gid_t gid, gids[50];
/* Until we have something better, only root and shell can use su. */
myuid = getuid();
//
// ttsiodras - Oh no, you don't :-)
//
//if (myuid != AID_ROOT && myuid != AID_SHELL) {
// fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
// return 1;
//}
Теперь, когда он работает, я должен заставить его работать правильно - т.е. разрешить только мои termux
и Terminal Emulator
пользователей, чтобы они вызывали su
и chroot
, и не позволяли никому и их бабушке входить: -)