撤消chmod 777

有时候在无奈之下,为了testing我的问题是不是我所做的权限问题:

sudo chmod -R 777 mydir/ 

在大多数情况下,这没有帮助,现在我有两个问题;)

mydir/里面的文件每个都有不同的权限和所有者,现在我需要将它们恢复到原始状态。

除了创build备份副本,是否有任何巧妙的方式来recursion还原权限? 例如

 command_to_save_the_permissions_somewhere mydir/ chmod -R 777 mydir/ command_to_restore_the_permissions_from_somewhere mydir/ 

顺便说一句,关于debugging权限问题的任何提示?

有一种简单的方法可以使用ACL工具来备份和恢复目录树的权限和所有权。 即使您没有在文件系统上启用ACL,它也能正常工作。

 getfacl -R >saved-permissions setfacl --restore=saved-permissions 

大多数权限问题都会导致“权限被拒绝”错误消息出现在控制台或某个日志文件的某处。

调查文件访问问题的强大工具是strace 。 它显示了一个进程所进行的系统调用。 输出可能很难理解,但是看到程序试图访问哪些文件以及为什么可以find或不能find想要的东西相对比较容易。 用法示例:

 strace -s9999 -o myprogram.strace myprogram # trace myprogram strace -s9999 -fF ... # also trace subprocesses strace -s9999 -p12345 # connect to running process by PID strace -s9999 -efile ... # only show filesystem calls strace -eaccess,open,stat,lstat # only show common file access calls