我是 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
。