Linux su切换用户后命令提示符变为bash-4.2$
2018-9-30 19:31:41 星期日
今天遇到一个问题, 给gitlab配置webhook的时候, 一个目录总是不能正确执行git pull 命令, 无任何输出, 根据之前经验, 感觉是权限的问题
因为hook触发的脚本是以nginx用户来执行 git pull 的
于是我就切换成nginx 在项目目录里手动执行 git pull, 但是出错了, 切换不了....
网上找了一大堆解决办法, 终于解决了, 总结在下边:
切换到root用户:
1. 看/home下有没有nginx目录, 如果没有就创建, 并执行 cp -a /etc/skel/. /home/nginx 将一些命令和文件复制到这里, 给nginx用
2. 执行 chown -R nginx:nginx /home/nginx 把复制过去的这些东西的所有者都改成nginx, 如果有必要就改一下访问权限 chmod
3. 执行 usermod -d /home/nginx nginx 设置nginx的用户目录为/home/nginx, 这样一旦切换为nginx用户, 他就会去/home/nginx目录下去加载相关的东西
4. 切换到root用户, 执行 usermod -s /bin/bash nginx 让他可以执行shell命令
5. 如果有必要, 去root的.ssh下把 id_rsa和id_rsa.pub两个文件也复制到/home/nginx/.ssh目录下, 注意访问权限跟root一样