Perbedaan antara semange dan chcon adalah bahwa chcon bersifat "sementara" jika sistem diberi label ulang, konteks yang ada dalam file/direktori akan hilang, menggunakan semanage membuat konteks selinux tetap ada.
Agar semanage berfungsi, Anda harus memberikan path lengkap ke file atau direktori, oleh karena itusemanage fcontext -a -t public_content_rw_t upload/ tidak berfungsi kecuali semanage fcontext -a -t public_content_rw_t "/var/ftp/upload(/.*)? melakukan; restorecon tidak memerlukan path lengkap.
Ini adalah konteks default
[example@unixlinux.online ftp]# ll -Zd upload/ drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 upload/
Saya mencoba perintah ini untuk mengubah konteks
[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/
Itu tidak berfungsi, tetapi perintah ini akan menulis konteks di /etc/selinux/targeted/contexts/files/file_contexts.local berkas
lihat di sini
# This file is auto-generated by libsemanage # Do not edit directly. upload/ system_u:object_r:public_content_rw_t:s0
Sekarang saya mencoba perintah ini (Perintah Kerja )
[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/
Tapi saya benar-benar tidak tahu mengapa ini berhasil, lihat perbedaan dalam perintah.
Saya mendapat jawabannya di halaman manual man ftpd_selinux
semanage fcontext -a -t public_content_rw_t "/var/ftpd/incoming(/.*)?"