Администрирование


Зачем нужен файл /etc/rc.conf.local если есть /etc/rc.conf

Файл /etc/rc.conf.local используется для того, чтобы изменить настройки по умолчанию (прописанные в /etc/rc.conf). Использование отдельного файла позволяет при обновлении системы просто заменить файл /etc/rc.conf новым, сохранив при этом ранее сделанные настройки.

Почему su говорит "you are not in group wheel" при попытке сменить права на root

По умолчанию в BSD системах из соображений дополнительной защиты переход на права root с помощью su возможен только для пользователей, входящих в группу wheel. При этом в OpenBSD в отличие например от FreeBSD пользователь должен быть явно добавлен в группу в файле /etc/group. Установки группы wheel в качестве базовой группы недостаточно. Можно также разрешить всем пользователям переход на права root. Для этого достаточно удалить всех пользователей (включая root) из группы wheel в файле /etc/group.

Как скопировать файловую систему

Для копирования файловой системы целиком лучше использовать команды dump(8) и restore(8). Если требуется скопировать только часть файловой системы следует воспользоваться командой tar(1). Ниже приведены примеры копирования файловой системы целиком и отдельной части файловой системы.

Копируем /usr в раздел g диска wd1:

# newfs wd1g

# mount -o async /dev/wd1g /mnt

# dump 0f - /usr | (cd /mnt; restore rf -)

В данном примере мы смонтировали новую файловую систему с опцией async для ускорения копирования. Не забудьте перемонтировать файловую систему без этой опции если планируется оставить ее смонтированной во избежание потерь в случае сбоя.

Копируем /usr/src в каталог /mnt/usr:

# cd /usr

# tar cf - src | (cd /mnt/usr; tar xpf -)

При копировании небольших объемов информации для которых не требуется точного сохранения структуры жестких ссылок и распределенного пространства под файлы можно воспользоваться командой cp(1):

# cp -RPp mydir otherdir

Как создать учетную запись только для ftp

Очень часто для решения данного вопроса пользователю устанавливают в качестве shell что-нибудь вроде /bin/false и добавляют его в /etc/shells. Такое решение является неверным и очень часто бесполезным так как по сути позволяет пользователю поменять shell с помощью файла .forward (если на хосте запущен sendmail и не используется опция smrsh). Существуют также другие соображения против такого решения. Не вдаваясь в подробности, предложим другие варианты решения данного вопроса.

Чаще всего при разрешении доступа по FTP реальным пользователям, им ограничивают доступное пространство домашним каталогом из соображений защиты (см. вопрос как ограничить пространство, доступное пользователю по FTP его домашним каталогом). В этом случае создание учетной записи только для ftp сводится к установке пользователю /sbin/nologin в качестве shell и добавление опции -A в командную строку запуска ftpd в файле /etc/inetd.conf или в /etc/rc.conf.local (если ftpd запускается как самостоятельный сервер).

Другим решением вопроса может быть установка альтернативного FTP сервера, который разрешает вход пользователям, независимо от установленного shell. В OpenBSD портах в категории net есть FTP сервер vsftpd который позволяет выключить проверку shell для пользователя.

Еще одним вариантом решения вопроса может быть установка пользователю обычного shell с одновременным добавлением в login класс для которого в login.conf(5) shell переустанавливается на /sbin/nologin.

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

По умолчанию ftpd позволяет реальным пользователям перемещаться по всему дереву каталогов системы. Чтобы ограничить доступное пространство домашним каталогом пользователя достаточно добавить его имя в файл /etc/ftpchroot или добавить пользователя в login класс для которого установлена опция ftp-chroot (см. login.conf(5)).

Смотрите также вопрос как создать учетную запись только для ftp.

Как запретить пользователям смотреть чужие процессы

Любой пользователь в системе может посмотреть список процессов с помощью команды ps(1). Чтобы граничить просмотр процессами, работающими с правами пользователя, подавшего команду можно воспользоваться загружаемым модулем hproc, который можно скачать отсюда.

Сначала следует собрать и установить модуль:

# make depend && make && make install

Помните что для сборки загружаемых модулей необходимы исходные тексты ядра системы, которые должны находиться в /usr/src/sys.

Далее нужно добавить следующую строку в файл /etc/rc.securelevel:

[ -f /usr/lkm/hproc.o ] && modload /usr/lkm/hproc.o

По умолчанию модуль разрешает просмотр чужих процессов только для пользователей, входящих в группу wheel. Чтобы изменить настройки модуля добавьте в /etc/rc.local следующие строки:

#

# Пользователи, входящие в группу staff, имеют право смотреть чужие процессы.

#

if [ -c /dev/hproc -a -x /usr/local/sbin/hprocctl ]; then

/usr/local/sbin/hprocctl staff

fi

Можно также задать обратное условие - запретить просмотр чужих процессов пользователям, входящим в заданную группу:

#

# Пользователи, входящие в группу users, не имеют права смотреть чужие процессы.

#

if [ -c /dev/hproc -a -x /usr/local/sbin/hprocctl ]; then

/usr/local/sbin/hprocctl !users

fi

Почему при загрузке LKM выдается сообщение "modload: can't reserve memory: Operation not permitted"

В BSD системах используется механизм уровней защиты ядра (securelevel). По умолчанию OpenBSD работает на уровне защиты 1, не позволяющем загружать или выгружать модули (см. securelevel(7)). Поэтому все команды загрузки LKM должны выполняться в однопользовательском режиме или из файла /etc/rc.securelevel. Если требуется часто загружать и выгружать модули (например для отладки), можно отредактировать /etc/rc.securelevel, запретив повышать securelevel при загрузке:

securelevel=-1

Обновлено: 13.03.2015