Похоже, вы хотите изменить каталог HOME, а не корневой каталог. Root всегда будет / или / root.
usermod -d /path/to/new/homedir/ username
Для пользователя на хосте Linux мне нужно сделать все недоступным, кроме его домашнего каталога.
Я слышал, что это обычно делается путем изменения корневого каталога для пользователя (и установки его в домашний каталог пользователя), однако я не мог найти способ сделать это.
Я думал о chroot
команде, но, похоже, она просто запускает указанную команду, считая указанный каталог корневым каталогом. Так что, кажется, chroot
это не то, что мне нужно.
Итак, мой вопрос: что это за команда, которая изменяет корневой каталог пользователя?
Похоже, вы хотите изменить каталог HOME, а не корневой каталог. Root всегда будет / или / root.
usermod -d /path/to/new/homedir/ username
Я поддерживаю этот ответ, и мне все равно, получу ли я -1 за него. Это не то, что Unix может сделать для вас любым разумным способом. Вы просите что-то, что практически невозможно.
Но есть своего рода способ получить что-то вроде того, что вы просите, вроде. Используйте виртуальную машину. Настройте экземпляр виртуальной машины для данного пользователя и предоставьте ему только права входа в систему, а не хост-ОС.
Вот мой оригинальный ответ:
Просто используйте разрешения. Вот для чего они. Пользователь, как правило, в любом случае не имеет доступа к записи чего-либо, кроме / tmp и своего домашнего каталога. И они должны иметь доступ на чтение /bin/
, /usr/bin
, /usr/lib
, и /lib
или они не собираются, чтобы быть в состоянии сделать что - либо вообще.
Если вы действительно хотите что-то более строгое, чем дают разрешения, то изучите настройку selinux, чтобы вы могли ограничить их дальше.
Использование chroot
просто не даст вам то, что вы хотите. Это действительно сложно настроить, и есть способы обойти это.
Чтобы быть уверенным, что «все недоступное» за этим домашним каталогом, я бы использовал chroot, но после того, как вы ничего не сможете сделать, если не подготовите каталог chrooted, у вас нет доступных двоичных файлов или библиотек.
Конфигурация FTP-сервера может быть полезна для вас: http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap29sec296.html
Это полная настройка chroot, ограничивающая пользователей ftp этим каталогом chroot.
см. руководство по useradd
. Вы должны использовать -d
переключатель.
Я думаю, если вы добавите
if grep "\\<$\\>" /etc/jailbirds > /dev/null then echo I am not a crook else exec chroot $CWD endif
до конца /etc/profile
вы можете получить то, о чем просите, но у него могут быть некоторые побочные эффекты, о которых я не знаю (перехват запуска оболочки /etc/profile
может вызвать проблемы). В этом случае вам нужно будет создать файл /etc/jailbirds
со списком пользователей, для которых вы хотите использовать chroot. Вам также необходимо убедиться, что этот файл существует, и решить, что делать в случае ошибок при доступе к нему, чтобы другие пользователи (особенно root) не были заблокированы chroot.
Кроме того, это будет сложно. Пользователь не сможет получить доступ, /proc
который сделает многие оболочки утилиты (такие как ps
, top
и многие другие) не работают. Пользователь также не сможет получить доступ /dev/null
, что сломает множество вещей.
Пользователь также не сможет получить доступ, /dev/tty
который сломается less
и more
при использовании со стандартным вводом. Пользовательские приложения будут наследовать дескрипторы открытых файлов stdin, stdout и stderr от до chroot, но меньше открывают / dev / tty, чтобы пользователь мог получать нажатия клавиш для перенаправления stdin из канала.
Вы также не сможете получить доступ к каким-либо программам, общим библиотекам или множеству файлов, которые находятся в каталоге / etc (например, / etc / protocol), который используется многими программами.
Все это вещи, которые вы можете обойти, но в конечном итоге вам нужно будет сделать гораздо больше работы, чтобы сделать среду пользователя удобной в использовании, чем, я думаю, вы рассматривали.
Если вы попробуете мое предложение, я предлагаю вам быть очень осторожным. Было бы легко ошибиться и все испортить. Я не проверял это, кстати.
usermod -d /path/to/new/homedir/ username
Это отвечает на ваш вопрос, но я не уверен, что это то, что вам нужно?
Я думаю, что вы немного смущены. Каталог / root будет доступен только пользователю root. Каждый пользователь, как правило, имеет свой собственный каталог HOME в / home /, а корневой пользователь системы будет иметь / root
Если вы хотите изменить каталог HOME, следуйте другим ответам или отредактируйте файл / etc / passwd
Создать гостевого пользователя
useradd -s /bin/sh -m guest
Установите для них оболочку, которая не зависит от сторонних библиотек
cd /home/guest apt-get download busybox-static dpkg -x *.deb . rm *.deb cd bin ./busybox --install .
Измените свой корневой каталог на / home / guest и запустите как гость
mkdir /home/guest/etc grep guest /etc/passwd > /home/guest/etc/passwd chroot /home/guest /bin/sh exec env -i login -f guest
Внутри chroot вы можете установить и запустить ssh-сервер, чтобы пользователь мог войти в систему удаленно; хотя вы можете столкнуться с проблемами, когда определенные приложения хотят получить доступ к файловой системе / proc и друзьям; в этом случае вы можете начать наступать на контейнеры lxc, пространства имен, виртуальные машины и т. д., где что-то вроде schroot или qemu становится более простым вариантом.
Если вы придерживаетесь собственного решения, вы можете столкнуться с проблемами безопасности, если вы не будете осторожны (например, случайно передаете право собственности на / home / guest / bin гостю, и в этом случае guest может получить права root при следующем вызове. корневой).
Я понятия не имею, являются ли вышеуказанные команды тем, что вы хотите, и / или они уязвимы для каких-либо дыр в безопасности. Надеюсь, они помогут, хотя.