相关文章推荐
还单身的牙膏  ·  float.NegativeInfinity ...·  4 月前    · 
礼貌的高山  ·  ccf python 门禁系统 ...·  1 年前    · 
独立的夕阳  ·  laravel model save ...·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

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?

chown -R httpd:httpd /path/to/my/site/media (the second httpd is group name. You need to change it if the group of the httpd is different from httpd) – falsetru May 26, 2014 at 13:16

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
    
    ps -efl | grep httpd | grep -v grep
                    I'm using gunicorn. I get same error message. I want to give gunicorn read/write access to a folder under /home/portfolio. How do I go about it?
    – KhoPhi
                    Jan 30, 2015 at 22:45
                    @falsetru I solved the issue by changing the owner of main folders and it's subdirectory/files to www-data. I am using flask+apache for backend server. Thanks for your guidance.
    – Ajay
                    Jun 1, 2017 at 15:27
    

    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'
                    It is worth explaining why this happens. A / before the folder name in Unix indicates that the folder should exist in the root directory, which also houses all the major sensitive system folders e.g. /usr/, /bin/, etc. (try it, do cd / and see where you land up). Ordinary processes are not permitted to modify the root directory. Omitting a leading / defaults the folder to the current working directory, which is perfectly safe and which Unix will do for you.
    – Akshat Mahajan
                    Aug 23, 2016 at 17:59
                    @mjp When i tried to remove the first slash from 'folder1/' it indeed worked and the error was gone, however i have no idea were that folder is now? So where is it? How do i access it? thanks
    – masky007
                    Nov 1, 2018 at 2:42
    

    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 tensorflow\examples folder).
  • Directly copy paste the files into the folder.
  • Copy the address of the folder (it probably will be ( C:\Python\Python35\Lib\site-packages\tensorflow\examples\tutorials\mnist\MNIST_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.

    This only applies to Windows. It looks like this question is directed at Linux. There these restrictions do not exist – Dick Kniep Jan 3, 2019 at 13:52

    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)

    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.

    Thanks for contributing an answer to Stack Overflow!

    • Please be sure to answer the question. Provide details and share your research!

    But avoid

    • Asking for help, clarification, or responding to other answers.
    • Making statements based on opinion; back them up with references or personal experience.

    To learn more, see our tips on writing great answers.

  •