Команда semanage не меняет контекст файла
Я пытаюсь изменить контекст selinux для каталога загрузки, чтобы включить анонимную загрузку.
Это путь к каталогу /var/ftp/upload
Это контекст по умолчанию
[root@server ftp]# ls -Z upload drwxr-XR-х. корень корень undefined_u:object_r:public_content_t:s0 загрузить
Я попробовал эту команду, чтобы изменить тип каталога
[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-х. корень корень undefined_u:object_r:public_content_t:s0 загрузить
4 ответа
Это контекст по умолчанию
[root@server ftp]# ll -Zd upload/ drwxr-XR-х. корень корень undefined_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-х. корень корень undefined_u:object_r:public_content_t:s0 upload/
[root @ server ftp] # restorecon -R -v upload [root@server ftp]# ll -Zd upload/ drwxr-XR-х. корень корень undefined_u:object_r:public_content_t:s0 upload/
Это не работает, но эта команда запишет контекст в /etc/selinux/targeted/contexts/files/file_contexts.local
файл
посмотреть здесь
# Этот файл автоматически сгенерирован libsemanage # Не редактируйте напрямую. 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 восстановление concon reset / var / ftp / загрузка контекста undefined_u:object_r:public_content_t:s0->undefined_u:object_r:public_content_rw_t:s0
Теперь контекст изменился. [root@server ftp]# ll -Zd upload/ drwxr-XR-х. корень корень undefined_u:object_r:public_content_rw_t:s0 upload/
Но я действительно не знаю, почему это работает, вижу разницу в команде.
Я получил ответ на странице руководства man ftpd_selinux
semanage fcontext -a -t public_content_rw_t "/var/ftpd/incoming(/.*)?"
Разница между semange и chcon состоит в том, что chcon, если система "временная", получает информацию, контексты, присутствующие в файле / каталоге, будут потеряны, использование semanage делает контексты selinux постоянными.
Для того, чтобы semanage работал, вы должны указать полный путь к файлу или каталогу, поэтому semanage fcontext -a -t public_content_rw_t upload/
не работает но semanage fcontext -a -t public_content_rw_t "/var/ftp/upload(/.*)?
делает; restorecon не требует полного пути.
Согласно этой странице:
file_contexts.local
файл хранит контексты для вновь созданных файлов и каталогов, не найденных вfile_contexts
,
Вот почему вы найдете сообщение в журнале file_contexts.local
,
При изменении контекста SELinux с помощью
semanage fcontext -a
используйте полный путь к файлу или каталогу, чтобы избежать неправильной маркировки файлов после перемаркировки файловой системы или послеrestorecon
команда запускается.
Это подсказка, чтобы использовать полный путь для правильной перемаркировки.
Пытаться
chcon -t public_content_rw_t /var/ftp/upload
Это будет работать.