Книга: Разработка приложений в среде Linux. Второе издание
14.2. Смена корневого каталога
14.2. Смена корневого каталога
Хотя в системе имеется один корневой каталог, значение /
может меняться для каждого процесса в системе. Это обычно делается для предотвращения доступа к файловой системе со стороны сомнительных процессов (например, демоны ftp, обрабатывающие запросы ненадежных пользователей). Например, если в качестве корневого каталога процесса определен /home/ftp
, запуск chdir("/")
сделает текущий каталог процесса /home/ftp
, a getcwd()
вернет /
для поддержания последовательности данного процесса. С целью обеспечения безопасности, если процесс пытается выполнить chdir("/..")
, он остается в своем каталоге /
(каталог /home/ftp
в масштабах всей системы), так же как и нормальные процессы, выполняющие chdir("/..")
остаются в корневом каталоге в масштабах всей системы. Процесс может легко изменять свой текущий корневой каталог с помощью системного вызова chroot()
. Но путь нового корневого каталога процесса интерпретируется с помощью текущего установленного корневого каталога, поэтому chroot("/")
не модифицирует текущий корневой каталог процесса.
#include <unistd.h>
int chroot(const char * path);
Здесь path
определяет новый корневой каталог для процесса. Этот системный вызов, однако, не изменяет текущий каталог процесса. У процесса все еще есть доступ к файлам в текущем каталоге, а также в родственном ему каталоге (../../directory/file
). Большинство процессов, выполняющих chroot()
, немедленно меняют свои текущие каталоги, чтобы находиться внутри новой корневой иерархии, с помощью chdir("/")
или чего-либо подобного. Отмена этого действия может вызвать проблемы с безопасностью в некоторых приложениях.
- 14.1. Текущий рабочий каталог
- 14.2. Смена корневого каталога
- 14.3. Создание и удаление каталогов
- 14.4. Чтение содержимого каталога
- 14.5. Универсализация файловых имен
- 14.6. Добавление к ladsh возможностей работы с каталогами и универсализацией
- 14.7. Обход деревьев файловых систем
- 14.8. Уведомление о смене каталога
- Подразделы корневого раздела
- 5.9 СМЕНА ТЕКУЩЕГО И КОРНЕВОГО КАТАЛОГА
- Глава 14 Операции с каталогами
- 14.1.3. Смена текущего каталога
- Смена темы узла
- Можно ли указать использование по умолчанию вместо C:Program Files другого каталога для установки программ?
- У файла и каталога есть атрибуты (например: Скрытый, Только чтение). Как ими управлять из командной строки?
- 3.4.1. Смена режима
- Удаление ключа из вашего каталога ключей.
- Концепции активного каталога
- Выбор корневого узла
- 8.4.1. Смена каталога: chdir() и fchdir()