我想将一堆文件放入一个带有tar
.但是,我没有访问所有这些的权限,所以我必须这样做sudo tar
。
但是,现在root
已经运行了tar
,生成的存档也归 root 所有,我必须更改 的权限.tar.gz
,这有点乏味。
难道没有sudo
某种“部分”可以告诉tar
吗使用权以 root 身份创建文件,但以我身份创建文件?
答案1
您可以利用一个经常让人烦恼或惊讶的事实,即重定向发生在 shell 中并且不受 sudo 的影响。
使用-
(aka /dev/stdout
) 作为文件名,然后将输出重定向到您选择的文件名。它将归您所有,并使用您的默认权限(由 定义umask
)创建。
sudo tar czf - [more options and file/dir names] > myfile.tar.gz
重定向以您的 UID 进行,而其tar
本身以 root 身份运行。