突發奇想的想把切換為www-data用戶去看看會怎么樣.然后做了一個嘗試
由於我安裝了lamp環境,所以有www-data用戶,用它可以來執行web php ,以及安全放心的跑cli(避免權限過高執行危險命令)
所以先看看自己這個www-data用戶情況
查看組
cat /etc/group|grep www www-data:x:33:
查看用戶
sudo cat /etc/shadow | grep www www-data:*:18667:0:99999:7:::
好了,說明用戶和組都存在.
然后想想怎么切換過去,直接su一下發現我沒有密碼啊,那得修改密碼,先把自己切換為root,然后就可以 sudo passwd 這個用戶,重置密碼后切會正常用戶
sudo su # sudo passwd www-data New password: Retype new password: passwd: password updated successfully # su my_account(我正常用的帳號) $ whomai
之后就嘗試切換一下
su www-data Password: This account is currently not available.
看來我進不去哦,這個帳號被限制了,看看是什么情況,
cat /etc/passwd|grep www www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
好吧,不讓我登錄,那我改改
改成這樣
cat /etc/passwd|grep www www-data:x:33:33:www-data:/var/www:/bin/bash
然后再嘗試
sudo vi /etc/passwd $ su www-data Password: $ whoami www-data
這回成功了,可以了
想切回來就 su 你的帳號 就行了
# su my_account(我正常用的帳號) $ whomai
我覺得應該是將需要讓php執行的代碼改為www-data用戶組,然后那些用hyperf 或者swoole或者你自己寫的php cli命令行執行的腳本都改為這個www-data:www-data組,然后切換為這個www-data帳號去執行 php script.php 這樣是比較安全的.
如果沒有什么讀寫權限,你就把這個腳本文件的所有者改為www-data,這樣就有權限了,比如讀寫緩存 創建文件等等.