Вопрос - Список файлов в каталоге с помощью -grep

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

0
01.02.2018, 00:34
2 ответа

Dos soluciones:

Un bucle de concha:

for name in /usr/bin/*file*; do
   case "${name##*/}" in
        *[!a-z]*) ;;
        *) printf '%s\n' "$name"
   esac
done

Esto primero genera una lista de nombres de ruta bajo /usr/bincuyo nombre base coincide con *file*y luego comprueba si esos nombres base también contienen caracteres que no son letras minúsculas. Si no se encuentran letras minúsculas que no sean -, se imprime el nombre de ruta.

Esto potencialmente también encontraría nombres de directorios que cumplan con los criterios. Si eso no es lo que quieres, solo haz

[ ! -f "$name" ] && continue

antes de la instrucción casepara omitir todos los nombres que no sean archivos normales.

Usando GNUfind:

find /usr/bin -maxdepth 1 -type f -name '*file*' -regex '.*/[a-z]*$'

Esto también hace un filtrado de dos etapas. Primero en el nombre base que debe coincidir con *file*, y luego al final del nombre de ruta(-regexcoincide con el nombre de ruta completo )para asegurarse de que solo haya letras minúsculas allí.

1
28.01.2020, 02:32
ls /usr/bin | grep '\<[a-z][^\-]*file[a-z][^\-]*\>'
-1
28.01.2020, 02:32

Теги

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