浏览器访问服务器php脚本自动提交git出错的解决方案
报错信息:fatal: unable to get credential storage lock in 1000 ms: Permission denied
又是凭据存储被锁了,最近常常出现权限报错
由于目录在A用户文件夹下,用A用户和root账号git pull是没问题的
直接用网页工具访问脚本相当于sudo -u www-data bash后使用www-data账户执行git pull
ssh打印也是:
error: cannot open .git/FETCH_HEAD: Permission denied
用了一个曲线救国的办法允许www-data用户以 A用户的身份无需密码执行特定脚本
sudo visudo
编辑
www-data ALL=(A用户的名字) NOPASSWD: /usr/bin/php /home/wwwroot/xxx/scripts/a.php www-data ALL=(A用户的名字) NOPASSWD: /usr/bin/php /home/wwwroot/xxx/xxxx/b.php www-data ALL=(A用户的名字) NOPASSWD: /usr/bin/php /home/wwwroot/xxxx/xxx/c.php
输入sudo -u www-data sudo -l校验保存已成功
而git操作后还需写入文件的权限
检查:ls -ld /home/A用户名字/项目地址
发现drwxr-sr-x 而非drwxrwsr-x,组也错了
*当前失败的地址是【drwxr-sr-x 14 A用户名 A用户名 /home/A用户名/项目地址】
*正确的预期应该是【drwxrwsr-x 10 A用户名 www /home/A用户名/项目地址】
执行:
# 1. 修改目录组
sudo chgrp -R www /home/A用户名/项目地址
# 2. 设置 setgid 位,确保新文件继承组权限
sudo chmod g+s /home/A用户名/项目地址
# 3. 给组添加写权限
sudo chmod g+w /home/A用户名/项目地址
# 4. 递归修改目录内文件的权限
sudo chmod -R g+w /home/A用户名/项目地址
还有最后一个项目会出现报错,打印认证方式:
git config --local --list | grep -E "(url|helper)" | grep -v http
出现的是credential.helper=store --file=/home/A用户名/.git-credentials
发现去掉credential能正常
sudo -u zhangxt git config --local --unset credential.helper
现在laravel项目里和nginx普通网页触发的脚本都正常执行了
浙公网安备 33010602011771号