Intereting Posts
Переход от LMDE к тестированию debian + LMDE Интеграция `afuse` с` sshfs` как (systemd?) User-daemon, порожденная логином или первой оболочкой Как исправить «невозможно получить метаданные репозитория» при установке CentOS 6.5 из Kickstart через FTP? Почему btrfs позволяет создавать raid1 с несогласованными дисками? Обновление /boot/grub/menu.lst на OpenSuSe 11.3 Сортировка файла на основе 1 колонки Почему rsync не найден? Есть ли «поддерживаемый» способ в RHEL / CentOS 7 для объединения монтирования дерева каталогов поверх точки монтирования NFS? Ограничение размера блока mkreiserfs, кроме как на странице man / info? Arch с XFCE и SDDM: новый пользователь не получает полную среду рабочего стола … Почему? Клиент OpenVPN – Linux подключается, но не имеет доступа к Интернету, проблема маршрутизации Как печатать в PDF при добавлении к существующему документу? tar с -C не работает заменить контрольные символы в Emacs? Как напрямую переключиться на панель в Tmux?

Файлы, доступные на глобальном уровне, и пользовательский процесс, заключенный в тюрьму

Я хочу, чтобы в целом можно было выбрать определенный исполняемый файл (потенциально злонамеренный) x и запустить его (из учетной записи администратора) с доступом для записи, ограниченным определенными каталогами (динамически выведенными) "${dirs[@]}" .

Исполняемый файл должен иметь доступ ко всему, что доступно на глобальном уровне в системе.

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

Всякий раз, когда я хотел бы запустить x с этими ограничениями, я бы поставил файл блокировки, chown -R foreveralone:foreveralone -- "${dirs[@]}" а затем сделать sudo -u foreveralone -g foreveralone $PWD/x ,

После этого я буду chown каталоги записи кому-то еще, так что foreveralone будет иметь постоянных файлов в файловой системе. Я полагаю, что мне также нужно будет очистить глобальные каталоги записи (например, /tmp, /dev/shm ) из файлов foreveralone s.

Мои вопросы:

  1. Является ли это доступным и безопасным механизмом для процессов тюремного заключения, учитывая стандартную систему настройки * nix?
  2. Что такое стандартные общедоступные записи и файлы на стандартной установке * nix?
  3. Как я могу найти их лучше, чем с чем-то вроде

    sudo -u foreveralone -g foreveralone find /! -type l -writable 2> / dev / null | grep -v '^ / proc'

    (Моя игра для find очень слаба. /proc/$pid похоже, имеет много файлов, которые могут быть доступны для записи, но на самом деле это не так, я пропускаю их (интересно, что с этим связано)).

Во всяком случае, в моей системе, 3. возвращает (фильтруется для отображения типов файлов):

  character special file /dev/full character special file /dev/fuse character special file /dev/net/tun character special file /dev/null character special file /dev/ptmx character special file /dev/random character special file /dev/tty character special file /dev/urandom character special file /dev/zero character special file /sys/kernel/security/apparmor/.null directory /run/lock directory /run/shm directory /tmp directory /tmp/.ICE-unix directory /tmp/.X11-unix directory /var/local/dumps directory /var/mail directory /var/spool/samba directory /var/tmp regular empty file /run/sendmail/mta/smsocket regular empty file /sys/kernel/security/apparmor/.access socket /dev/log socket /run/acpid.socket socket /run/avahi-daemon/socket socket /run/cups/cups.sock socket /run/dbus/system_bus_socket socket /run/gdm_socket socket /run/mysqld/mysqld.sock socket /run/samba/nmbd/unexpected socket /run/sdp socket /tmp/.ICE-unix/2537 socket /tmp/mongodb-27017.sock socket /tmp/.X11-unix/X0 
  1. Есть ли лучшее (более простое / более гибкое решение)

В моем случае случай, x будет потенциально вредоносной скриптом сборки, который должен работать без записи в неправильные места или чтения вещей, которые не читаются на глобальном уровне.

Сначала извините за мой плохой английский. Давайте покажем что-то для вас, используя только концепции unix, потому что я думаю, что это может помочь (а может и нет).

Представьте, что я хочу, чтобы исполняемый nano мог выполняться всеми пользователями, но никогда не должен запускаться как пользователь, вызывающий его исполняемый файл, но с ограниченной средой, с доступом для редактирования конфигурации apache или файлов в определенных группах, другими словами Я хочу, чтобы nano выполнялась как служба linux, ограниченная привилегиями определенных виртуальных пользователей.

1- Сначала я создам пользователя nano и отключу его логин:

 useradd nano -d /var/nano mkdir /var/nano chown -R nano:nano /var/nano passwd -l nano 

2- Позволяет заставить nano запускаться как пользователь nano (например, если root call nano должен выполняться как nano, а не root)

 chown nano:nano /usr/bin/nano chmod a+s /usr/bin/nano 

Теперь + s означает, что nano будет работать как владелец, а не тот, кто его назвал.

3- Назовите nano с корнем для теста:

 #nano #ps aux | grep nano nano 3399 0.0 0.0 13828 3840 pts/0 S+ 08:48 0:00 nano 

Красивый! Nano теперь работает как пользователь nano, не зависящий от того, с кем я вошел.

4- Так что теперь? Я хочу, чтобы nano редактировал файлы в / var / www / apache2

 chgrp -R www-data /var/www/ (yes i now that is unnecessary in Debian if the group are respected) chmod -R g+rw /var/www adduser nano www-data 

5- Что еще?

Вы заметите, что каждый пользователь теперь может использовать nano (или специальную копию «nano-special» 😉 для редактирования / var / www файлов, так что, если вы хотите, чтобы это могли делать только пользователи в группе nano?

Просто удалите другие привилегии для его выполнения:

 chmod ox /usr/bin/nano 

И добавьте пользователей в группу nano

 adduser myuser1 nano