![提取具有指定权限的文件和文件夹](https://linux22.com/image/1302450/%E6%8F%90%E5%8F%96%E5%85%B7%E6%9C%89%E6%8C%87%E5%AE%9A%E6%9D%83%E9%99%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%92%8C%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我使用 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 {} \;