在文件夹中创建文件:权限被拒绝


37

我在将文件复制到Ubuntu 12.04上的目录时遇到问题。我在主目录中创建一个目录,以便将要复制到的路径为:

/home/sixven/camp_sms/inputs

但是当ini在终端中运行以下命令来创建示例文件时,如下所示:

francisco-vergara@Francisco-Vergara:/home/sixven/camp_sms/inputs$ touch test_file.txt
touch: can not make `touch' on «test_file.txt»: permission denied

我无法直接在该目录中复制文件。如何使用chownchmod命令分配权限以复制文件?

我不知道要使用哪个用户和组。


您是如何创建目录的?为什么在/home/sixven?为什么它不在您的主目录中?
terdon

2
从您复制粘贴的内容开始,您以user身份运行touch francisco-vergara,但是您的目录/home/sixven确实位于用户的家中,francisco-vergera或者它属于sixven用户?您应该明确要执行的操作。写在另一个用户的家中?在组中共享该目录?
Leiaz 2014年

Answers:


54

首先,您必须知道Ubuntu中目录的默认权限是644,这意味着您不能在不是所有者的目录中创建文件。

您尝试为user:francisco-vergara在一个目录下创建一个文件,/home/sixven/camp_sms/inputs这是由拥有user:sixven

那么如何解决这个问题:

  1. 您可以更改目录的权限,并允许其他人在其中创建文件。

    sudo chmod -R 777 /home/sixven/camp_sms/inputs
    

    此命令将递归更改目录的权限,并使所有其他用户可以创建/修改和删除其中的文件和目录。

  2. 您可以更改此目录的所有者,并使其user:francisco-vergara成为所有者

    sudo chown -R francisco-vergara:francisco-vergara /home/sixven/camp_sms/inputs
    

    但是像这样,user:sixven不能再次在此文件夹中写入,因此您可能会陷入循环无限循环中。

因此,我建议您使用选项1。

或者,如果两个用户都可以访问此目录,则可以执行以下操作:

将目录的所有权更改为user:francisco-vergara并保留组所有者group:sixven

sudo chown -R francisco-vergara /home/sixven/camp_sms/inputs

这样,两个用户仍然可以使用目录。

但是正如我之前说过的那样,使用选项1最简单,更有效


10
再说一遍:您几乎永远不应该“ chmod -R 777”。正确设置所有权是一种更安全的做法。 digitalocean.com/community/tutorials/... askubuntu.com/questions/20105/...
道格拉斯·亚当斯

12

要更改文件所有权,请以root用户身份执行以下操作:

chown -R user:user /home/sixven

如果您决定采用chmod方式:

如果您知道用户是文件组的一部分

chmod -R g+rw /home/sixven

除此以外:

chmod -R o+rw /home/sixven

但是这种方式不太安全。


像魅力一样工作
Faris Rayhan

1

默认UMASK 022(在Ubuntu),所以的/ home的权限/用户名变为755,你作为用户登录francisco-vergara,并试图在用户创建文件6日元主页:即/home/sixven。它没有对其他用户的写许可sixven权。只有用户/组具有写访问权。

如果要在该目录中进行写访问,则需要sixven使用usermod -G sixyen francisco-vergara OR 成为Group的一部分chmod -R 777 /home/sixven(不要使用坏习惯)。


你不是有点着急吗?我们仍然不知道OP的情况。
guntbert 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.