我想用非 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