iT邦幫忙

0

PHP 是否可用 root 改權限為 777?

是這樣的
當我 git pull 檔案到某主機時(身份為 root)
裡面有個 images 資料夾預設都會是 755
我想說是否可以用 PHP 改為 777
我用這個方式是失敗的

chmod('/images/', 0777);

owner 是 root
所以這樣程式是無法改動的嗎?
還是說用何種方式可以改動呢?

ccutmis iT邦高手 2 級 ‧ 2019-08-16 06:32:20 檢舉
https://eeepage.info/php-system-exec-passthru/
player iT邦大師 1 級 ‧ 2019-08-18 00:24:54 檢舉
777
7是(讀取+寫入+執行)權限全開
3個數字分別代表(檔案所有者的權限+同群組使用者的權限+其他使用者的權限)
你確定要這樣?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
JackKuo
iT邦新手 3 級 ‧ 2019-08-16 10:28:05
最佳解答

Owner 是 root,那 group 呢?
通常來說,在 Linux 底下不管是 Apache 或是 Nginx,都是透過 www-data 這個使用者在進行操作
如果 www-data 這個使用者沒有權限,那當然就改不了

我自己習慣是:
先將該目錄 chown -R xxxuser:www-data dir/ 讓 www-data 成為群組,這樣 www-data 就有權限去 chmod('/images/', 0777)
再來個 chmod -R 0755 dir/ 讓 www-data 有權限去 RX
再使用一個沒 root 權限使用者 xxxuser 去 pull 資料下來
這樣可以避免時常使用 root 導致的資安風險
也讓 www-data 能夠實際操作執行這些檔案

看更多先前的回應...收起先前的回應...
火爆浪子 iT邦研究生 1 級 ‧ 2019-08-16 10:29:21 檢舉

group 也是 root

火爆浪子 iT邦研究生 1 級 ‧ 2019-08-16 10:31:48 檢舉

也就是說一開始我就應該用使用者去 git pull
然後在程式裡面跑 exec 去決定誰是群組,都只需要透過 exec 解決?應該不用輸入密碼吧~

火爆浪子 iT邦研究生 1 級 ‧ 2019-08-16 12:25:12 檢舉

如果想要用程式移動檔案到 root 權限的資料夾,有辦法做到嗎

Tung iT邦新手 5 級 ‧ 2019-08-19 08:11:35 檢舉

如果只是要移到root權限的資料夾,可以把那個資料夾權限設定為777 (ex: chomod -R 0777 /dir/to/path)或將當下的使用者加入group (ex: usermod -a -G {groupName} www-data)
但是這些都不是很好的作法,應該盡量避免將資料夾的權限完全開放或讓程式擁有存取有root資料夾的權限,甚至是直接拿root權限來跑php和排程....

JackKuo iT邦新手 3 級 ‧ 2019-08-19 10:18:48 檢舉

應該先用指令設好資料夾權限!
我不太懂為何您堅持使用 PHP 來設定權限,是有什麼需求嗎?
至於 root 問題樓上 Tung 說明的很清楚了,權限控管很重要,不要什麼都用 root,太危險

我要發表回答

立即登入回答