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一样

原文地址:https://www.cnblogs.com/iLoveMyD/p/9733170.html