提取具有指定权限的文件和文件夹

提取具有指定权限的文件和文件夹

我使用 7zip 打包 Windows 中一个包含大量子文件夹和文件的文件夹,上传到 VPS,然后运行以下命令:

tar -xvzf file.tar.gz

那么所有解压的文件和文件夹都具有 777 的权限。我该如何使文件夹具有 755 的权限以及文件具有 644 的权限?

答案1

tar(1)如果您以普通用户身份运行,它将umask默认应用您的。如果您tar(1)以身份运行root,则可以提供--no-same-permissions命令行选项以要求tar(1)尊重umask

因此:以普通用户身份运行此命令:

umask 022
tar zxvf file.tar.gz

或者运行如下命令root

umask 022
tar zxvf file.tar.gz --no-same-permissions

您可能想要坚持umask 022使用~/.bashrc~/.bash_profile~/.profile。(bash(1)有关启动文件的完整详细信息,请参阅手册页。这很复杂。)

您可以在 shell 的手册页、系统调用手册页或POSIX 提供的实用程序手册页(如果您已安装)umask中找到有关的详细信息。umask(2)umask(1posix)manpages-posix

答案2

在目录根目录中运行以下命令来设置目录和文件所需的权限:

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

注意右花括号和反斜杠之间的空格

答案3

如果您使用大写 X,则chmod可以使用它仅对目录设置执行权限。即

chmod -R ugo+X .

答案4

查找 . -type f -exec chmod 644 {} \;

相关内容