so I'm completely new to Ubuntu. I've set up a shared folder with a few c programs and when I go to compile in Ubuntu, such as:

gcc file.c -o fileTest

I get the following error:

/usr/bin/ld: cannot open output file fileTest: Permission denied
collect2: error: ld returned 1 exit status

I'm sure that my permissions for the C files are correct, all files have 'rwx' permissions.

Do I have to change the permission of the directory as well?

I'm a complete newb, so apologies.

up vote 6 down vote accepted

Yes, you have to change the permissions of the directory as well.

This is because if you only have write permissions to the files inside the directory, you can't just create a new file because you don't have write permissions for that file (it doesn't exist, so no permissions to create it).

If you have write permissions for the directory you can create a file inside it because you have write permissions for the directory itself.

To make yourself the owner (terminal way):

  1. Check your user name:

    whoami
    
  2. Make yourself the owner of the directory and its contents:

    sudo chown -R "$USER:" /path/to/the/directory
    

    The -R flag stands for recursive, so that directory and all its subfiles and subdirectories will change owner. Remove the -R flag to just change the permissions of the directory itself.

Now you should be able to create files or directories because you're now the owner of the directory and all its content. If you still can't, give the owner write permissions to the directory and its content using the following command:

chmod -R 700 /path/to/the/directory

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.