新手问题 [已解决] 部署时,为什么单独用一个 deploy 用户,而不用 root? 各种 Permission denied 怎么破解?

chairy11 · 2015年04月07日 · 最后由 chairy11 回复于 2015年04月07日 · 4431 次阅读

问题

之前我部署全部用的 root 用户,各种流畅。 这次单独设置了 deploy 用户,动不动就 Permission denied。 要给 deploy 用户设置了 sudo 权限,那还不同样危险么?那为什么不直接用 root 用户部署呢?

好吧,我(deploy 用户)现在的问题是:

$   /app/nginx/sbin/nginx -s reload
nginx: [alert] could not open error log file: open() "/app/nginx/logs/error.log" failed (13: Permission denied)
2015/04/07 14:17:56 [notice] 18767#0: signal process started
2015/04/07 14:17:56 [error] 18767#0: open() "/app/nginx/logs/nginx.pid" failed (2: No such file or directory)

试图找下 nginx.pid, 结果:

$ find / -name nginx.pid
find: `/app/lost+found': Permission denied
find: `/sys/kernel/debug': Permission denied
...

我对 nginx 不太熟,之前部署过好几次(root 用户)也没有遇到这种问题…… 怎么个思路呢?

  1. 应该怎样使 nginx 有权限去写 error.log?(怎么会被拒绝呢,这不是在 nginx 自己的目录下吗?)
  2. 找到 nginx.pid,然后在 nginx.conf 里面设置?

解决方案

1 设置 deploy 有 root 同等的权限(感谢#5 楼 @liwei78

$ sudo vi /etc/sudoers 
 # 加一行
 deploy ALL=(ALL)     ALL

( 我之前明明设置了 adduser deploy sudo,也常常用 sudo 来执行各种命令,跟这个有什么差别呢?好吧,回去恶补下 linux 才行……)

2 启动 nginx…… (额,原来我之前根本没有启动……)

root 部署。。。。。。。。。我想起我厂需要 sudo 才能 git 的某生产服。。。。。

#2 楼 @est 知道啦知道啦,用 root 是不对,可不就是方便嘛……

#4 楼 @chairy11 你把 deploy 加到 root 组里,需要的时候 sudo 就可以。

2、赋予root权限

方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉

## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL

然后修改用户,使其属于root组(wheel),命令如下:

#usermod -g root tommy

修改完毕,现在可以用tommy帐号登录,然后用命令 su – ,即可获得root权限进行操作。

方法二:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
tommy   ALL=(ALL)     ALL

修改完毕,现在可以用tommy帐号登录,然后用命令 sudo – ,即可获得root权限进行操作。

方法三:修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:
tommy:x:0:33:tommy:/data/webroot:/bin/bash

我用 2

#5 楼 @liwei78 弱弱地说,我当时设置 deploy 时,已经给了 sudo 权限了……

useradd -m -s /bin/bash deploy
  adduser deploy sudo

我有点找不着北了,要冷静一会……

我在 deploy 用户下用 passenger 装的 nginx

gem install passenger
rvmsudo passenger-install-nginx-module

但显示的权限却是 root

#5 楼 @liwei78 好了,谢谢啊:)

#6 楼 @chairy11 😄 你们公司的运维呢?怎么舍得让你去!!!

#8 楼 @flowerwrong 他们都不懂 rails,我的项目都自己部署的啊……难道你们的还有专人部署?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号