![将文件移动到另一个用户的主目录(无需 sudo)](https://linux22.com/image/978852/%E5%B0%86%E6%96%87%E4%BB%B6%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%94%A8%E6%88%B7%E7%9A%84%E4%B8%BB%E7%9B%AE%E5%BD%95%EF%BC%88%E6%97%A0%E9%9C%80%20sudo%EF%BC%89.png)
我有几个文件想移动到其他用户的主目录。我没有权限写入该用户的主目录,但我知道他的密码。
我知道如何复制使用的文件scp
(参见这里)。但是,如果我想移动文件,复制然后删除原始文件效率很低。有没有办法移动该文件,而不使用sudo
(我不知道 root 的密码)?
答案1
你可以:
- 使您的主目录可供全世界读取和写入。
- 登录他的账户。
- 将您的文件移动到他的目录中。
- 更改所述文件的所有权。
- 注销他的帐户。
- 恢复你的主目录的权限。
详细的分步指南
假设您是 becko,并且想要将文件移动到 bob 的主目录。因此,您的主目录路径如下(默认情况下):
becko: /home/becko/
bob: /home/bob/
现在假设您要移动的文件的路径如下:
/home/becko/file_01
/home/becko/file_02
/home/becko/file_03
现在,有了这个介绍,我们就可以开始了。
注意:此示例假设所有相关文件均位于您的主目录下一级。
第一步:让你的主目录可供全世界读取和写入
登录为你自己,打开一个终端(Ctrl+Alt+T)
。
转到你的主目录并使其可供所有人阅读:
$ cd ~
$ chmod 0777 .
第二步:登录他的账户
然后,使用上面提供的示例:
$ su - bob
系统将提示您他的密码。
第三步:将你的文件移动到他的目录中
登录后,您应该会看到以下提示(或类似的内容):
bob@hellsdesk:~$
现在您已进入 bob 的主目录。现在是时候将您的资料移过去了。
以下命令可以做到这一点:
$ mv /home/becko/file_01 .
$ mv /home/becko/file_02 .
$ mv /home/becko/file_03 .
第四步:更改文件所有权:
注意:对我来说,所有权已自动更改为 bob,但还是谨慎为好。:)
命令:
$ chown bob:bob file_01
$ chown bob:bob file_02
$ chown bob:bob file_03
第五步:注销他的帐户
这个很简单。输入:
$ logout
你的提示应该变回如下形式:
becko@hellsdesk:~$
第六步:恢复您的主目录权限。
默认情况下,权限为 0755。因此,我们将执行以下操作:
$ chmod 0755 .
关闭终端,您就完成了!
答案2
你不需要 root 的 sudo 密码,你需要你的密码;事实上,在正常的 Ubuntu 安装中没有 root 密码。
但是,如果您不能或不想使用 sudo,您可以确保文件及其目录对每个人都具有读/写(修改)权限,然后以其他人的身份登录并正常移动它。或者,在其他人的主目录中创建一个目录,并将其设置为可写,以便您可以以自己的身份将内容移动到那里。
这是基本的 Linux 行为。
答案3
实际上我们可能需要更多信息。例如,您不需要知道 root 密码即可使用 sudo。如果您的用户属于 sudo 组,您可以使用用户的常规密码使用 sudo。因此,如果是这种情况:
sudo mv file_to_move /home/desired_user
如果您不能使用 sudo,您可以编写一个简单的 bash 脚本来使用 scp 复制文件,然后将其删除。但是,如果您安装了 rsync:
rsync -avz --remove-source-files -e ssh file_to_move [email protected]:/home/desired_user
也有效。