起初这可能看起来有点奇怪,但是我出去了。
我正在编写一个shell脚本,该脚本构成一个文件系统,该文件系统将被压缩回一个存档,并且需要其中的一些文件由root用户拥有。整个过程很快就会自动化,但现在它有点问题,因为如果我使用sudo,我需要输入密码。
看到文件是在我自己的主目录下创建的,我有完全访问权限,我想也许我可以将他们的所有权更改为root用户。这可能吗?
如果我正常尝试,我会得到"操作不被允许"。也许有另一种选择?
答案 0 :(得分:4)
您可以使用fakeroot执行所需操作。它是一个库,使程序认为它们以root用户运行,而不是。 IIRC,dpkg
使用它来允许非root用户构建包含root拥有文件的.deb
包。
查看此shell脚本:
#!/bin/bash
mkdir image
touch image/user-owned
touch image/root-owned
chown renato.renato image/user-owned
chown root.root image/root-owned
tar cf image.tar image
通常,我只能以root身份创建此tar存档。但是,如果我使用fakeroot:
$ fakeroot ./create-image.sh
$ tar tvf image.tar
drwxr-xr-x root/root 0 2014-04-09 01:09 image/
-rw-r--r-- root/root 0 2014-04-09 01:09 image/root-owned
-rw-r--r-- renato/renato 0 2014-04-09 01:09 image/user-owned
但是,磁盘上的文件仍然是用户拥有的,因此没有安全风险:
$ ls -l image/
total 0
-rw-r--r-- 1 renato renato 0 Abr 9 01:09 root-owned
-rw-r--r-- 1 renato renato 0 Abr 9 01:09 user-owned