Ubuntu:无法将文件复制到在相同凭据下创建的目录

Ubuntu:无法将文件复制到在相同凭据下创建的目录

我是 Windows 7 远程处理到 Ubuntu 12.04.2 LTS

我是 Ubuntu(以及一般的 *nix)新手,需要了解如何将权限分配给新创建的目录。

通过 Putty ssh 会话:

$bash
myaccount@mybox:/$ cd /etc/puppet
myaccount@mybox:/etc/puppet$ sudo mkdir device
myaccount@mybox:/etc/puppet/device$ 
myaccount@mybox:/etc/puppet/device$ ls -ld
drwxr-xr-x 2 root root 4096 Jul 2 17:57

然后通过 WinSCP 会话( SCP 模式,也以 myaccount@mybox 身份登录)我尝试将文件复制到 /etc/puppet/device

但是此操作失败并在弹出窗口中显示错误:

Error
Copying file 'myfile' failed.
scp: /etc/puppet/device/myfile: Permission denied

对我来说,如果我的帐户被分配了足够的权限来创建目录,那么它也应该有权将文件复制到该目录中,这似乎是合乎逻辑的?

或者创建目录和移动文件属于不同的角色吗?

注意:如果您要勾选我的帖子,请在评论中解释原因。只是匿名地点击并不能帮助我了解这些论坛的运作方式。看起来我正在遵守规则、完整的细节、跟进评论等。

答案1

希望我没有忽略一些事情:

  • 你曾经sudo创建过一个目录
  • ls明确指出该目录归 root 所有
  • 当尝试以用户“myaccount”将文件复制到该文件夹​​时,您被拒绝

这是正常行为。您有以下选择:

  • 授予“其他”写入权限(chmod o+w /etc/puppet/device => 非常糟糕的主意)
  • 创建一个组,例如名为“adm-puppet”,并添加允许在该目录中创建文件的所有用户和 puppet 用户。然后将组所有权更改为该组
  • 将允许在该目录中写入文件的用户添加到现有的 puppet 组
  • 使用扩展前交叉韧带s

答案2

当您使用 sudo 创建文件或目录时,您是以 root 身份运行该命令,因此该文件当然将归 root 所有。

如果您无法以普通用户身份创建文件/目录(小提示:目录只是特殊文件),root 可以使用chown(syntax chown user:group file) 将其“交给”普通用户。

如果多个用户(但不是全部)需要对文件进行写访问,则需要使用组;如果您认为不需要组,您可以使用通常存在的以用户命名的组(在这种情况下 root 和无人是糟糕的选择,这就是为什么用户通常也有单独的组)。

如果您使用的组中有多个用户,则还需要更改权限以向该组授予对目录的写访问权限。对目录的写访问意味着能够在其中创建和删除文件(执行是遍历,读取是列表内容)。用 执行此操作chmod g+w dirname

相关内容