OSError – Errno 13 Permission denied

Question:

I am trying to upload image through admin page, but it keeps saying:

[Errno 13] Permission denied: '/path/to/my/site/media/userfolder/2014/05/26'

the folders userfolder/2014/05/26 are created dynamically while uploading.

In Traceback, i found that the error is occuring during this command:

In /usr/lib64/python2.6/os.py Line 157. while calling

mkdir(name, mode) 

meaning, it cannot create any folder as it doesnot have the permission to do this

I have OpenSuse as OS in Server. In httpd.conf, i have this:

<Directory /path/to/my/site/media>
   Order allow,deny
   Allow from all
</Directory>

Do I have to chmod or chown something?

Asked By: doniyor

||

Answers:

You need to change the directory permission so that web server process can change the directory.

  • To change ownership of the directory, use chown:

    chown -R user-id:group-id /path/to/the/directory
    
  • To see which user own the web server process (change httpd accordingly):

    ps aux | grep httpd | grep -v grep
    

    OR

    ps -efl | grep httpd | grep -v grep
    
Answered By: falsetru

This may also happen if you have a slash before the folder name:

path = '/folder1/folder2'

OSError: [Errno 13] Permission denied: '/folder1'

comes up with an error but this one works fine:

path = 'folder1/folder2'
Answered By: mjp

Probably you are facing problem when a download request is made by the maybe_download function call in base.py file.

There is a conflict in the permissions of the temporary files and I myself couldn’t work out a way to change the permissions, but was able to work around the problem.

Do the following…

  • Download the four .gz files of the MNIST data set from the link ( http://yann.lecun.com/exdb/mnist/ )
  • Then make a folder names MNIST_data (or your choice in your working directory/ site packages folder in the tensorflowexamples folder).
  • Directly copy paste the files into the folder.
  • Copy the address of the folder (it probably will be
    ( C:PythonPython35Libsite-packagestensorflowexamplestutorialsmnistMNIST_data ))
  • Change the “” to “/” as “” is used for escape characters, to access the folder locations.
  • Lastly, if you are following the tutorials, your call function would be ( mnist = input_data.read_data_sets(“MNIST_data/”, one_hot=True) ) ;
    change the “MNIST_data/” parameter to your folder location. As in my case would be ( mnist = input_data.read_data_sets(“C:/Python/Python35/Lib/site-packages/tensorflow/examples/tutorials/mnist/MNIST_data”, one_hot=True) )

Then it’s all done.
Hope it works for you.

Answered By: Karan Chopra

Another option is to ensure the file is not open anywhere else on your machine.

Answered By: Jacob Weiss

Simply try:

sudo cp /source /destination
Answered By: razimbres

Just close the file in case it is opened in the background. The error disappears by itself

Answered By: Balaji

supplementing @falsetru’s answer : run id in the terminal to get your user_id and group_id

Go the directory/partition where you are facing the challenge.
Open terminal, type id then press enter.
This will show you your user_id and group_id

then type

chown -R user-id:group-id .

Replace user-id and group-id

. at the end indicates current partition / repository

// chown -R 1001:1001 . (that was my case)

Answered By: Michael

The solution that worked out for me here when I was using python 3 os package for performing operations on a directory where I didn’t have sufficient permissions and access to got resolved by running the python file with sudo (root) i.e.:

sudo python python_file_name.py

Any other utility that you might also plan on using to chmod or chown that directory would also only work when you run it with sudo.

# file_name.py
base_path = "./parent_dir/child_dir/"
user = os.stat(base_path).st_uid # for getting details of the current user owner of the dir
group = os.stat(base_path).st_gid # for getting details of the current group owner of the dir

print("Present owner and group of the specified path")
print("Owner:", user)
print("Group:", group)
os.chown(base_path, user, group) # change directory permissions

print("nOwner id of the file:", os.stat(base_path).st_uid)
print("Group id of the file:", os.stat(base_path).st_gid)
os.mkdir(base_path+file_name,mode=0o666)

run the above file with sudo.

sudo python file_name.py

Hope this answer works out for you.

Forever indebted to stackoverflow and the dev community. All hail the devs.

Answered By: dhruv sharma
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.