I also work on CentOS 7, and had a similar issue:
# systemctl unmask tmp.mount
Failed to execute operation: Access denied
The denial has to do with SELinux. This can be your case if you are running SELinux in enforcing
mode:
# getenforce
Enforcing
In my case, the systemctl
error had produced an USER_AVC
denial in SELinux log file, /var/log/audit/audit.log
:
type=USER_AVC msg=audit(1475497680.859:2656): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='avc: denied { enable } for auid=0 uid=0 gid=0 path="/dev/null" cmdline="systemctl unmask tmp.mount" scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:null_device_t:s0 tclass=service exe="/usr/lib/systemd/systemd" sauid=0 hostname=? addr=? terminal=?'
Solution
This article states that it is due to a bug in systemd, and provides a work around:
systemctl daemon-reexec
Secondary solution
If the above did not work, you can set SELinux mode to permissive
:
setenforce 0
and it should work fine. However, this 2nd solution has security implications.(我用的这个能够成功)