3

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

Это путь к каталогу /var /ftp /upload

Это контекст по умолчанию

[root@server ftp]# ls -Z upload
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 upload

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

[root@server ftp]# semanage fcontext -a -t public_content_rw_t upload
[root@server ftp]# restorecon -v upload

Это не меняется, в чем здесь ошибка?

[root@server ftp]# ls -Z pub
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 upload

4 ответа4

3

Разница между semange и chcon состоит в том, что chcon, если система "temporal" является системой, перезаписывается, контексты, присутствующие в файле / каталоге, будут потеряны, использование semanage делает контексты selinux постоянными.

Для работы с semanage необходимо указать полный путь к файлу или каталогу, поэтому semanage fcontext -a -t public_content_rw_t upload/ не работает, но semanage fcontext -a -t public_content_rw_t "/var/ftp/upload(/.*)? делает; restorecon не требует полного пути.

1

Это контекст по умолчанию

[root@server ftp]# ll -Zd upload/
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 upload/

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

[root@server ftp]# semanage fcontext -a -t public_content_rw_t upload/
[root@server ftp]# ll -Zd upload/
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 upload/
[root@server ftp]# restorecon -R -v upload
[root@server ftp]# ll -Zd upload/
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 upload/

Это не работает, но эта команда запишет контекст в файл /etc/selinux/targeted/contexts/files/file_contexts.local

посмотреть здесь

# This file is auto-generated by libsemanage
# Do not edit directly.

upload/    system_u:object_r:public_content_rw_t:s0

Теперь я попробовал эту команду (Рабочая команда)

[root@server ftp]# semanage fcontext -a -t public_content_rw_t "/var/ftp/upload(/.*)?"
[root@server ftp]# restorecon -R -v upload
restorecon reset /var/ftp/upload context unconfined_u:object_r:public_content_t:s0->unconfined_u:object_r:public_content_rw_t:s0
Now context is changed.
[root@server ftp]# ll -Zd upload/
drwxr-xr-x. root root unconfined_u:object_r:public_content_rw_t:s0 upload/

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

Я получил ответ на справочной странице man ftpd_selinux

semanage fcontext -a -t public_content_rw_t "/var/ftpd/incoming(/.*)?"
0

Согласно этой странице:

Файл file_contexts.local хранит контексты для вновь созданных файлов и каталогов, не найденных в file_contexts.

Вот почему вы найдете сообщение в file_contexts.local .

При изменении контекста SELinux с помощью semanage fcontext -a используйте полный путь к файлу или каталогу, чтобы избежать неправильной маркировки файлов после перемаркировки файловой системы или после выполнения команды restorecon .

Это подсказка, чтобы использовать полный путь для правильной перемаркировки.

0

Пытаться

chcon -t public_content_rw_t /var /ftp /upload

Это будет работать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .