SELinux for RHEL not persistant after reboot
I just tried this on CentOS 6.5 and I cannot reproduce the behavior you're seeing.
# semanage boolean -l | head
SELinux boolean State Default Description
ftp_home_dir (off , off) Allow ftp to read and write files in the user home directories
# setsebool -P ftp_home_dir on
# semanage boolean -l | head
SELinux boolean State Default Description
ftp_home_dir (on , on) Allow ftp to read and write files in the user home directories
# reboot
The system is going down for reboot NOW!
...
# semanage boolean -l | head
SELinux boolean State Default Description
ftp_home_dir (on , on) Allow ftp to read and write files in the user home directories
According to the official documentation, this certainly is supposed to be the correct way of doing it.
Fortunately (!) with SELinux there's almost always two or more completely different ways of doing the same thing, as you've discovered. semanage
can also set booleans, among many other things. Why this is, I think only Dan Walsh knows...
semanage boolean -m --on ftp_home_dir
Since you say that worked for you, I suspect something non-obvious was broken with your installation. At this point you may never find out what it was.