La différence entre semange et chcon est que chcon est "temporel" si le système est réétiqueté, les contextes présents dans un fichier/répertoire seront perdus, l'utilisation de semanage rend les contextes selinux persistants.
Afin de segérer au travail, vous devez fournir le chemin complet vers le fichier ou le répertoire, c'est pourquoisemanage fcontext -a -t public_content_rw_t upload/ ne fonctionne pas mais semanage fcontext -a -t public_content_rw_t "/var/ftp/upload(/.*)? Est-ce que; restorecon ne nécessite pas de chemin complet.
C'est le contexte par défaut
[example@unixlinux.online ftp]# ll -Zd upload/ drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 upload/
J'ai essayé cette commande pour changer le contexte
[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/
Cela ne fonctionne pas, mais cette commande écrira le contexte dans /etc/selinux/targeted/contexts/files/file_contexts.local fichier
voir ici
# This file is auto-generated by libsemanage # Do not edit directly. upload/ system_u:object_r:public_content_rw_t:s0
Maintenant, j'ai essayé cette commande (Commande de travail )
[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/
Mais je ne sais vraiment pas pourquoi ça marche, voyez la différence de commande.
J'ai eu la réponse dans la page de manuel de man ftpd_selinux
semanage fcontext -a -t public_content_rw_t "/var/ftpd/incoming(/.*)?"