tar 目录包含根文件作为非根文件

tar 目录包含根文件作为非根文件

我想用非 root 用户压缩一个目录。但这个目录下也有root权限的文件。

例子:

foo@bar:~ $ ls -l tmp/
insgesamt 8
-rw-r--r-- 1 foo  foo  6 Mär 16 08:38 test.1
-rw------- 1 root root 6 Mär 16 08:38 test.2

如果我以“foo”用户身份运行 tar-命令,则会收到错误:“权限被拒绝”。例子:

foo@bar:~ $ tar -czf --preserve-permissions test.tar.gz ./tmp
tar: tmp/test.2: function open failed. Permission denied.

我该如何解决这个权限问题?如果可能的话,我更喜欢使用非 root 用户。

答案1

你不能。

对于tar一个文件,你需要读取它。然而,仅root允许并写入文件。(权限为rw-------/ 600)。

owner = rw-
group = ---
others = ---

业主是root,foo很可能其他的


foo更改权限后,您可以使用用户读取文件:

# give read permission (+r) to others (o) 
sudo chmod o+r ./tmp/test.2

或者

# Set specific permissions value -> 6=rw- 4=r--
sudo chmod 644 ./tmp/test.2

或者将所有者更改为foo

sudo chown foo: ./tmp/test.2

如果您的用户不在sudoer该计算机上,您仍然可以从根控制台或实时系统执行此操作。


然后,您的命令应该可以正常工作,没有问题:

foo@bar:~ $ tar -czf --preserve-permissions test.tar.gz ./tmp

相关内容