linux下如何获取文件的默认权限

linux下如何获取文件的默认权限

如果有一个名为new.txtwhich 具有权限的文件-rw-r--r--,但是当有人使用时chmod 777 new.txt权限会被更改。那么如果我不知道new.txt之前的权限,如何取回原来的权限。

答案1

系统不会为您维护以前的文件权限历史记录。如果您的备份包含该文件及其原始权限,您可以通过列出该备份的内容来获取原始权限信息。

根据您使用的备份解决方案,您甚至可能不需要恢复任何实际文件:只需包含文件权限的备份内容的目录列表就足够了。

如果没有备份,就必须动脑筋来推断应该有哪些权限。作为亚型 说,用户的umask设置决定了用户创建的任何文件或目录的默认权限。

对于大多数常规文件,权限的“起始集”是 666,然后该umask值用于屏蔽某些权限。因此,如果您知道用户的umask值为 022,那么新文件的实际默认权限将为 666 - 022 = 644,或-rw-r--r--.

注意:权限数字为八进制,实际操作使用布尔运算符:666 AND (NOT 022) = 644。

对于目录和可执行文件,权限的“起始集”将为 777 而不是 666。因此,如果用户的权限umask为 022,则新目录的实际默认权限将为 777 - 022 = 755,或drwxr-xr-x.

答案2

您无法“恢复文件的原始权限”。不过,您可以做的是将它们设置为默认设置现在

touch /tmp/file.$$                  # Create a temporary file with "default" perms
chmod --ref=/tmp/file.$$ new.txt    # "Reset" the file new.txt
rm -f /tmp/file.$$                  # It's always good to tidy up

umask默认设置由 shell 的值控制。在我的系统上,以下是当前设置:

umask
0022

这意味着写入权限(值 02,二进制 010)团体其他的已删除当创建文件或目录时。

另请注意,大多数编辑器不会创建带有可执行位集(二进制值 001)的文件,即使设置应该允许这样做umask。作为用户,您可以区分普通文件(没有执行权限)和脚本文件(有执行权限):

chmod +x new.txt                    # Add execute permission

答案3

默认权限由 定义umask。如果你想找到新创建的文件的默认权限,你可以查看它。如果您想要查找安装权限的文件是软件包的一部分,您通常可以查看它并找出答案。

相关内容