在运维环境中,有时会遇到操作人员失误,使用 chmod -R 将某个目录下的权限重置,导致业务不正常。
实际上使用getfacl和setfacl这两条命令,可以大事化小,小事化了,避免口吐芬芳造成血压飙升,伤害身体。
getfacl - get file access control lists
getfacl可以获取文件的权限设置,输出到标准输出,将其重定向可以作为恢复数据使用。
# getfacl -pR /etc > etc.bak
# cat etc.bak
# file: /etc
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
# file: /etc/fstab
# owner: root
# group: root
user::rw-
group::r--
other::r--
...
setfacl - set file access control lists
在正常节点采集好数据,传输到故障节点,使用 setfacl 设置文件/目录权限即可:
# setfacl --restore=/etc.bak
#
一般来说,不同节点的数据还是会有差异,即使同一节点,也存在不同时刻,动态产生和删除文件的情况,setfacl 恢复配置时可能会报某些文件找不到,但对于绝大部分情况,已经足以恢复业务运行。动态产生的文件多为运行中进程产生,权限确定,如确实有少量需要手动处理的文件,可以再逐个恢复。
祝大家身体健康。