Системный вызов SELinux и chroot

Кроме того, asciinema является очень хорошим терминальным устройством записи (только текст), что можно использовать с tmux (или любой терминал), если Вы хотите совместно использовать онлайн. Это загружает на asciinema сайт и дает короткую ссылку (который можно открыть с функцией "URL" в tmux).

Это очень хорошо для обучения, потому что новички могут следовать за вводом в реальном времени более легко, чем огромная расшифровка стенограммы.

Это находится на GitHub: sickill/asciinema.

3
13.04.2017, 15:18
1 ответ

Кто, черт возьми, блокирует меня от 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 , и не позволяли никому и их бабушке входить: -)

3
27.01.2020, 21:22

Теги

Похожие вопросы