Der Unterschied zwischen semange und chcon besteht darin, dass chcon "temporär" ist, wenn das System die in einer Datei / einem Verzeichnis vorhandenen Kontexte umbenennt, gehen die Kontexte verloren, die Verwendung von semange macht selinux-Kontexte persistent.
Damit semanage funktioniert, müssen Sie den vollständigen Pfad zur Datei oder zum Verzeichnis angeben, deshalbsemanage fcontext -a -t public_content_rw_t upload/ funktioniert nicht, aber semanage fcontext -a -t public_content_rw_t "/var/ftp/upload(/.*)? tut; restorecon erfordert keinen vollständigen Pfad.
Dies ist der Standardkontext
[example@unixlinux.online ftp]# ll -Zd upload/ drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 upload/
Ich habe diesen Befehl ausprobiert, um den Kontext zu ändern
[example@unixlinux.online ftp]# semanage fcontext -a -t public_content_rw_t upload/ [example@unixlinux.online ftp]# ll -Zd upload/ drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 upload/
[example@unixlinux.online ftp]# restorecon -R -v upload [example@unixlinux.online ftp]# ll -Zd upload/ drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 upload/
Es funktioniert nicht, aber dieser Befehl schreibt den Kontext in /etc/selinux/targeted/contexts/files/file_contexts.local Datei
siehe hier
# This file is auto-generated by libsemanage # Do not edit directly. upload/ system_u:object_r:public_content_rw_t:s0
Jetzt habe ich diesen Befehl ausprobiert (Working Command )
[example@unixlinux.online ftp]# semanage fcontext -a -t public_content_rw_t "/var/ftp/upload(/.*)?"
[example@unixlinux.online 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. [example@unixlinux.online ftp]# ll -Zd upload/ drwxr-xr-x. root root unconfined_u:object_r:public_content_rw_t:s0 upload/
Aber ich weiß wirklich nicht, warum es funktioniert, sehen Sie den Unterschied im Befehl.
Ich habe die Antwort in der Manpage von man ftpd_selinux
semanage fcontext -a -t public_content_rw_t "/var/ftpd/incoming(/.*)?"