Ограничить пользователя своим домашним каталогом

У меня есть пользователь, который может даже использовать sudo. Я хочу ограничить доступ только к его домашнему каталогу. ничего другого. Я создал группу «ограниченный» и переместил его в эту группу. Что теперь?

Как ограничить его доступ только к его домашнему каталогу?

Намного сложнее предотвратить определенный доступ, чем по умолчанию заблокировать весь доступ и добавить определенные исключения для каждого вида доступа. Для этого принципа есть даже броский термин. Поэтому убедитесь, что команды, которые могут быть запущены через sudo , явно указаны так, чтобы пользователь никогда не мог использовать его root . После этого у вас есть несколько вариантов:

  • Ограничить права доступа к каталогам (опция1). Убедитесь, что все каталоги в корневом каталоге ( / ) в системе отключены для остальных групп разрешений . Обычно это означает выполнение чего-то похожего на следующее:

     $ chmod ox <dir> 

    Также сделайте то же самое для всех каталогов, в которых выше было выполнено, но с группой, членом которой является этот пользователь (по крайней мере, limited группа в соответствии с вашим вопросом). Это означает, что выполняется:

     $ chmod gx <dir> 

    Это изменение разрешения на выполнение каталогов в основных каталогах верхнего уровня может быть непрактичным: вероятно, важные процессы зависят от возможности изменения каталога (например, / или /var ) без какой-либо сложной настройки разрешения. Но вы можете сделать это, по крайней мере, для нескольких частных каталогов.

  • Используйте chroot jail (вариант 2). Я считаю, что реалистичным вариантом является использование chroot-тюрьмы, так что пользователь получает информацию об ограниченной среде сразу после входа в систему. Помимо настройки среды chroot, сервер OpenSSH также должен быть соответствующим образом настроен. Это предполагает, что доступ к системе доступен только через ssh . В качестве альтернативы вы можете использовать Jailkit, который обсуждался здесь .

В Unix, чтобы сделать даже самые простые вещи, пользователю нужен доступ к различным ресурсам (исполняемые файлы, библиотеки, файлы конфигурации, страницы руководства, примеры, …). Даже то, что считается «нормальными командами», такими как cp(1) , ls(1) , являются обычными программами, выполняемыми пользователем, которым необходимо будет иметь к ним доступ. Пользователям нужен доступ к большей части системы, которые нельзя отключить, не делая систему рядом с бесполезной.

Если вы хотите, чтобы пользователи не могли рыться вокруг файлов других пользователей, на которые распространяется (в настоящее время традиционная) конфигурация Linux для домашних пользователей: скажем, пользователь Joe Sixpack является joe . Для него создается учетная запись (UID) с именем joe и с основной группой joe , его дом принадлежит joe и group joe , а также разрешения, такие как dwrx------ (Т.е., joe может читать, писать и искать; никто в группе joe кроме самого Джо, и никто другой не может ничего сделать).