使用‘-p’开关从其他用户的目录复制文件应该按照手册页保留权限。
我正在使用 -p 开关将 /etc/passwd 复制到我的主目录,但权限未保留,如下所示:-
ijoin@stream:~$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1813 Sep 25 08:58 /etc/passwd
ijoin@stream:~$ cp --preserve /etc/passwd .
ijoin@stream:~$ ls -l passwd
-rw-r--r-- 1 ijoin ijoin 1813 Sep 25 08:58 passwd
我做错什么了吗?
答案1
您已作为 身份登录,ijohn
复制 所拥有的文件root
。cp
命令无法绕过 Linux 的安全机制 - 您的用户无权创建 所拥有的文件root
或将文件所有者更改为root
。 这样做会造成安全问题。
如果您需要复制其他用户拥有的文件,请使用以下命令sudo
:
sudo cp --preserve /etc/passwd
这是我在linuxquestions.org:
-p 参数适用于所有用户,但要受系统上该用户能力的约束。通常,非 root 用户能够保留他们所拥有的文件的所有权,这些文件的所有权由该特定非 root 用户所属的组拥有。他们无法保留其他用户所拥有的文件的所有权(尽管可以通过 suid、guid 和 sticky 位来解决此问题)。root 可以保留不同用户所拥有的文件的所有权,因为 root 拥有完全的系统权限。但 joe_schmoe 无法保留 root 所拥有的文件或 billy 所拥有的文件的所有权,等等。根据文件将被复制到的位置,joe_schmoe 只能保留 joe_schmoe 所拥有的文件和 joe_schmoe 所属组所拥有的文件的所有权。