63

I have a problem copying files to a directory on Ubuntu 12.04. I create a directory in the home directory so that the path where I want to copy to is:

/home/sixven/camp_sms/inputs

But when ini run the following command in the terminal to create a sample file as follows:

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

I can not copy files directly in that directory. How can I assign permissions with the chown & chmod commands to copy the files?

I do not know which user and group to use.

Rui F Ribeiro
  • 55,929
  • 26
  • 146
  • 227
franvergara66
  • 1,119
  • 3
  • 10
  • 10
  • How did you create the directory? Why is it in `/home/sixven`? Why isn't it in your home directory? – terdon Mar 12 '14 at 16:06
  • 2
    From what you have copy-pasted, you are running touch as user `francisco-vergara`, but your directory is in `/home/sixven` is that really the home of user `francisco-vergera` or does it belong to a `sixven` user ? You should clarify what you want to do exactly. Write in another user's home ? Share that directory among a group ? – Leiaz Mar 12 '14 at 16:15

3 Answers3

88

First of all you have to know that the default permission of directories in Ubuntu is 644 which means you can't create a file in a directory you are not the owner.

you are trying as user:francisco-vergara to create a file in a directory /home/sixven/camp_sms/inputs which is owned by user:sixven.

So how to solve this:

  1. You can either change the permission of the directory and enable others to create files inside.

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

    This command will change the permission of the directory recursively and enable all other users to create/modify and delete files and directories inside.

  2. You can change the owner ship of this directory and make user:francisco-vergara as the owner

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

    But like this the user:sixven can't write in this folder again and thus you may moving in a circular infinite loop.

So i advise you to use Option 1.

Or if this directory will be accessed by both users you can do the following trick:

change ownership of the directory to user:francisco-vergara and keep the group owner group:sixven.

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

Like that both users can still use the directory.

But as I said you before It's easiest and more efficient to use option 1.

muru
  • 69,900
  • 13
  • 192
  • 292
Maythux
  • 1,848
  • 13
  • 19
  • 25
    Resurrecting this to say: you should almost never 'chmod -R 777' anything. Setting ownership correctly is a far safer practice. https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions http://askubuntu.com/questions/20105/why-shouldnt-var-www-have-chmod-777 – Douglas Adams Jun 03 '16 at 17:30
  • The default permissions of a *directory* are normally 0755. 0644 is the default for regular files. Also, what @douglasAdams said. – rici Apr 18 '20 at 15:44
14

To change the file ownership, do this as root:

chown -R user:user /home/sixven

If you decide to go the chmod way:

If you know that the user is part of the group of the file

chmod -R g+rw /home/sixven

Otherwise:

chmod -R o+rw /home/sixven

But this way is not too secure.

muru
  • 69,900
  • 13
  • 192
  • 292
Ghassan
  • 466
  • 2
  • 6
1

The default UMASK 022 (in Ubuntu ), so the permissions for /home/username becomes 755. and you logged in as user francisco-vergara and trying to creating files in user sixyen Home: i.e. /home/sixven. it does not have write permission to Other users Only User/Group of sixven has write access.

if you want write access in that directory, then you need to be part of Group sixven using usermod -G sixyen francisco-vergara OR chmod -R 777 /home/sixven (don't use it's bad practice ).

Rahul Patil
  • 24,281
  • 25
  • 80
  • 96