LINUX.ORG.RU

Как ограничить доступ пользователю

 


0

1

Приветствую,

Скажите, пожалуйста, можно ли ограничить доступ обычному пользователю к каталогам системы, то есть сделать так, чтобы дальше своего домашнего каталога пользователь зайти не мог и домашний каталог для него представлялся корневым? Поможет ли для моего вопроса chroot?

Это сделать можно, но это явно не то, чего ты хочешь. Если пользователю ограничить доступ к /usr и даже к /bin и /lib, то он потеряет доступ в том числе к шеллу, всем командам и программам, то есть, не сможет сделать ничего. Совсем. Даже с файлами в своём каталоге — к файлам-то у него доступ будет, а к софту, с помощью которого можно эти файлы открыть — нет, то есть де факто получится пользователь, который не может вообще ничего.

То есть, смысла в таком ограничении мало. Разумным будет дать пользователю права на чтение всех этих файлов (можно закрыть даже чтение для некоторых, в основном в /etc и /var, например), но не давать права на запись. Это можно сделать с помощью стандартной системы прав на файлы (man chmod). В принципе, примерно так и сделано по умолчанию, как правило.

Если это не подходит, то хотелось бы услышать реально решаемую проблему. А то может окажется, что надо не живого юзера ограничивать, а, например, какой-то набор софта, которому нет доверия, и хочется решить проблему отдельным юзером. Да, можно так, но более гибко это делается сэндбоксингом тогда, например firejail или bwrap.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)

chroot обычно ставится на доступ к файлам, например по sftp

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

Посмотрите в сторону SELinux/AppArmor лучше

Sylvia ★★★★★
()

Дай пользователю персональный LXC-контейнер и пусть там резвится как хочет.

Byers
()

Опиши зачем ты хочешь это сделать - обстоятельства проблемы. Сделать можно, но тебе придётся в его домашнем каталоге хранить копии всех нужных ему программ, обычно расположенных в /bin /sbin /lib /usr (иначе как он их будет запускать, после того как ты доступ порежешь?).

Что конкретно ты хочешь спрятать от пользователя?

firkax ★★★★★
()

Поможет ли для моего вопроса chroot?

Такие ограничения делают через «restricted shell», например rbash. Это линк на обычный bash, но работающий с ограничениями!

sudo usermod -s /bin/rbash <username>

Только придется делать для этого пользователя свой каталог исполняемых файлов /home/username/bin с линками на системные команды и прописать его в ~/.bash_profile и сделав его read-only для пользователя.

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 2)
Ответ на: комментарий от sigurd

В такой схеме надо внимательно следить чтобы среди разрешённых исполняемых файлов не нашлись способы выполнить что-то незапланированное.

firkax ★★★★★
()

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

А как он тогда будет программы запускать? Они все в «каталогах системы». Возможно тебе просто нужно установить юзеру файловый менеджер, который не будет иметь / в списке, только домашний каталог и медипапки. Например наутилус не показывает реальный /home/user/dir, а просто «home - dir».

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 2)

Зачем ограничивать пользователю доступ к каталогам системы? Какую задачу ты пытаешься решить?

wandrien ★★★★
()

Нет. Потому что пользователю нужно куча всего за пределами его хомяка.

Тебе нужен докер. Скачиваешь в нем alpine или любой другой образ и монтируешь каталог в хомяк. Все. С ключиком –rm все, что будет делаться в системе за предлами хомяка пропадет при остановке или перезапуске контйнера. Там же сеть, ssh и все остальное,нужное для работы.

usermod
()

если хочешь вручную, то как аналог контейнера

берешь заготовку chroot; выписываешь себе команды, которые будут нужны пользователю; смотришь, через ldd, куда они слинкованы; «оставляешь» только нужное для работы этих команд, - остальное, в таком chroot, удаляешь.

если «штатно», то максимально ограничивать права это все равно что взять nobody:nobody и организовывать доступы пользователю таким образом, как если бы это был «демон»

anonymous
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария