如何将文件移动到另一个用户的目录?

Exo*_*oon 4 permissions files

我正在使用 CentOS 6 并且我正在尝试将文件从用户 A 移动到用户 B,但我的权限一直被拒绝。

我需要编辑什么才能允许我将一个用户目录中的文件放入另一个用户的目录中?

Hen*_*nes 6

您需要具有从用户 A读取文件以及将文件写入用户 B 位置的权限。

有几种方法可以存档:

1)
作为用户 A(假设她可以读取自己的文件)获得对用户 B 位置的 WRITE 权限。这意味着在一个组中,该组允许w到目标目录并允许访问 ( x ) 到目标的目录路径。

例子:

cd /home/user/A/
ls -l testfile  
-rw-------  1 userA  users  18 Dec 31 16:31 testfile
Run Code Online (Sandbox Code Playgroud)

注意 r。允许用户 A 读取她自己的文件

cp testfile /home/userB/testdir
Run Code Online (Sandbox Code Playgroud)

用户 A 将需要遍历文件夹 /home、/home/userB 和 /home/userB/testdir。所有这些都需要对她来说是“x”。她想写入文件夹“testdir”,因此她还需要在该文件夹上添加“w”。

'w' 可以在用户、组或其他部分。但是如果您将其设置为“其他”,那么每个用户都可以写入它。因此,您通常将共享文件或共享文件夹作为组的一部分。(例如,在 /etc/group 中创建一个组“sales”并将两个用户都添加到该组中)。


2)
作为用户B:(假设能够在他自己的文件夹中写入)。
获得对 userA 文件夹中文件的读取权限以及在那里遍历的权限。(与 1 中相同)。

您现在可以文件复制到您自己的位置。您不能从用户 A 的文件夹中删除它,除非您也有权这样做。所以你可以复制但不能移动。


3)
作为 uid 0 的用户(通常是 root、toor、admin):

mv /home/userA/testfile /home/userB/

请注意,该文件仍归用户 A 所有,用户 B 可能无权处理该文件。您可以使用chown.


4)
没有重枪,就像两个用户经常做的那样:

As UserA: cp testfile /tmp/
As userB: cp /tmp/testfile ~
As userA: rm /tmp/testfile
Run Code Online (Sandbox Code Playgroud)

这不是最安全的方式(其他人可以在 /tmp 中看到文件),但我认为这是最常见的解决方案。


如果您想经常这样做,那么我强烈建议您创建一个组并为该组中的所有用户授予共享位置的权限。

没有被问到,但像这样的解决方案通常是实用的(用音乐显示,但也可能是销售报告)。

VIM的/ etc /组和添加这样的线:shared_music:*:3141:userA,UserB,UserC。这将创建一个名为 shared_music 的组,给它一个编号,然后选择哪些用户将属于该组。

然后创建该组拥有的文件夹。

cd /usr/local/
md our_ultimate_shared_music_collection
chgrp shared_music our_ultimate_shared_music_collection
chmod g+rwx our_ultimate_shared_music_collection
chmod g+S our_ultimate_shared_music_collection
Run Code Online (Sandbox Code Playgroud)

在合理的位置创建一个文件夹。设置组,然后允许该组中的所有人读取、写入和 cd 到该文件夹​​中。最后一个命令(make group setuid)表示新创建的子文件继承与目录相同的组,新创建的子目录继承父目录的set-group-ID位。这可以防止用户 A 将文件写入用户 B(或除 A 之外的任何人)无法删除或重命名的目录。


cot*_*eyr 0

您需要访问该目录的权限。两者都在有问题的目录上写入和执行,并在您覆盖的任何文件中写入。

最简单的方法是sudo mv /dir1/file /dir2/file,但您可能应该首先阅读Linux 文件权限快速指南

  • 如果您是 root,您将有权移动它,因此使用 sudo 或 su 将允许您进行移动,但您可能需要使用 chown 更改文件的所有者,以便新用户可以具有读写访问权限? (3认同)