簡體   English   中英

OSError - Errno 13 權限被拒絕

[英]OSError - Errno 13 Permission denied

我正在嘗試通過管理頁面上傳圖片,但它一直說:

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

文件夾userfolder/2014/05/26是在上傳時動態創建的。

在 Traceback 中,我發現此命令期間發生錯誤:

在 /usr/lib64/python2.6/os.py 第 157 行。同時調用

mkdir(name, mode) 

意思是,它不能創建任何文件夾,因為它沒有這樣做的權限

我在服務器中有 OpenSuse 作為操作系統。 在 httpd.conf 中,我有這個:

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

我必須 chmod 或 chown 嗎?

您需要更改目錄權限,以便 Web 服務器進程可以更改目錄。

  • 要更改目錄的所有權,請使用chown

     chown -R user-id:group-id /path/to/the/directory
  • 要查看哪個用戶擁有 Web 服務器進程(相應地更改httpd ):

     ps aux | grep httpd | grep -v grep

    或者

    ps -efl | grep httpd | grep -v grep

如果文件夾名稱前有斜杠,也可能會發生這種情況:

path = '/folder1/folder2'

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

出現了一個錯誤,但這個工作正常:

path = 'folder1/folder2'

當 base.py 文件中的maybe_download 函數調用發出下載請求時,您可能會遇到問題。

臨時文件的權限存在沖突,我自己無法找到更改權限的方法,但能夠解決該問題。

請執行下列操作...

  • 從鏈接 ( http://yann.lecun.com/exdb/mnist/ ) 下載 MNIST 數據集的四個 .gz 文件
  • 然后創建一個名為 MNIST_data 的文件夾(或者您在 tensorflow\\examples 文件夾中的工作目錄/站點包文件夾中選擇)。
  • 直接將文件復制粘貼到文件夾中。
  • 復制文件夾的地址(它可能是( C:\\Python\\Python35\\Lib\\site-packages\\tensorflow\\examples\\tutorials\\mnist\\MNIST_data ))
  • 將“\\”更改為“/”,因為“\\”用於轉義字符,以訪問文件夾位置。
  • 最后,如果您正在學習教程,您的調用函數將是( mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) ) ; “MNIST_data/”參數更改為您的文件夾位置 就像我的情況一樣( mnist = input_data.read_data_sets("C:/Python/Python35/Lib/site-packages/tensorflow/examples/tutorials/mnist/MNIST_data", one_hot=True) )

然后一切都完成了。 希望對你有效。

另一種選擇是確保文件不會在您機器上的任何其他地方打開。

只需嘗試:

sudo cp /source /destination

補充@falsetru 的答案:在終端中運行 id 以獲取您的 user_id 和 group_id

轉到您面臨挑戰的目錄/分區。 打開終端,輸入id然后回車。 這將顯示您的 user_id 和 group_id

然后輸入

chown -R user-id:group-id .

替換用戶 ID 和組 ID

. 最后表示當前分區/存儲庫

// chown -R 1001:1001 . (那是我的情況)

只需關閉文件,以防它在后台打開。 錯誤自行消失

當我使用 python 3 os package 對我沒有足夠權限和訪問權限的目錄執行操作時,這里為我解決的解決方案通過運行 Z23EEEB4347BDD26BFC6B7EE9A3Bieroot 文件得到解決

sudo python python_file_name.py

您可能還計划用於 chmod 或 chown 該目錄的任何其他實用程序也只能在您使用 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)

使用 sudo 運行上述文件。

sudo python file_name.py

希望這個答案對你有用。

永遠感謝 stackoverflow 和開發社區。 所有人都向開發者致敬。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM