nginx启动文件报grep错和 useradd错的问题处理

原创 2016年08月31日 10:07:16

场景

最近某客户有个要求,所有部署的不准运行在root下面,安装在/home/somebody下面(用户家目录),当对nginx进行普通用户运行的时候,会遇到各种各样的问题,比如文件路径不存在呀,权限不够呀等。

本文就是在修改nginx运行在家目录的时候遇到的最后一个问题,提示 useradd没有权限,以及运行的时候出现的异常现象。

$ ./nginx restart
ngx_http_fastdfs_set pid=5550
nginx: the configuration file /home/123/opt/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /home/123/opt/nginx/conf/nginx.conf test is successful
Stopping nginx:                                            [  OK  ]
grep: unrecognized option '--prefix=/home/123/opt/nginx'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
./nginx: line 34: /usr/sbin/useradd: Permission denied
Starting nginx: ngx_http_fastdfs_set pid=5582
                                                           [  OK  ]
touch: cannot touch `/home/123/opt/var/lock/subsys/nginx': No such file or directory

调查

  • 定位代码到如下函数
make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\
1/g' -`
   if [ -z "`grep $user /etc/passwd`" ]; then
       useradd -M -s /bin/nologin $user
   fi
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs //调用函数
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
可以看出,make_dirs会完成两个作用,一个是判断编译的时候的--user,如果系统中没有这个账户,那么就新建这个账户;另外一个是从options中提取temp-path变量,并创建该目录。对于我们当前的需求是不需要的,账户已经创建好了,temp-path没有,所以可以在start函数中,直接注释掉对make_dirs的调用。
版权声明:更多精彩请关注 http://book.opschina.org, 或者加入QQ新群648503385, 让天下没有难做的运维。

相关文章推荐

grep一个文件时,报错“Binary file ... matches”

问题:grep一个文件时,报错“Binary file ... matches” 使用命令 more时,内容可以正常看到 原因:文件为binary文件 解决:strings vers.l...

nginx处理firefox的POST请求可能遇到的问题:小文件可以提交,大文件不能提交

这个问题是其他同事反映过来的,应该说比较罕见,需要同时满足三种条件才能发生。为了保持神秘,原因暂时不提,不过背景得交待一下。该案例的大概架构就是部署两个nginx服务器,nginx1作为普通的web ...
  • yui
  • yui
  • 2011-05-31 21:04
  • 14954

运维笔记4(用户信息涉及到的文件,用户管理命令,用户权限的下放,更新:关于useradd -b -d -m -k的一些理解和使用)

概述:        理解多用户,在linux下对用户的创建,删除,更改等命令,最后附带一道给力的小题。 1.什么是用户? 从日常生活中想的话,我们每个人都是充当过用户,去银行你有个账户,对于银行你就...

Linux中正则表达式与文件格式化处理命令(awk/grep/sed)

一.正则表达式 1.1国际字符模式匹配或匹配模式的类名 [:alnum:] : 0-9,A-Z,a-z [:alpha:] : A-Z,a-z [:upper:] : A-Z [:lower...

Linux useradd与用户管理相关的配置文件

一、Linux useradd与用户管理相关的配置文件; 1、/etc/passwd 和/etc/groups我们对用户和用户组进行添加、修改、删除最终目的是修改系统用户 /etc/passwd...

解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或目录的访问权限命令,linux修改用户密码

http://www.justwinit.cn/post/2581/ 这个新加的用户名始终在最后面,这个注意下即可: useradd -d /home/newuser newuser use...

linux操作学习05:用户信息文件,用户管理(useradd、userdel、groupadd、groupdel、id、usermod),用户权力下放(sudo),用户认证信息控制(chage)

#第五单元##1.用户理解#用户就是系统使用者的身份 在系统中用户存储为若干窜字符+若干个系统配置文件 用户信息涉及到的系统配置文件: /etc/passwd ###用户信息 用户:密...

linux 增加用户 useradd 用法小结及配置文件说明

linux 增加用户 useradd 用法小结及配置文件说明

旧项目适配 iOS9 时 .dylib 系统库文件的链接报错的问题处理

今天将公司的项目改用 Xcode7 开发,刚打开项目就有醒目的四个地方爆红 但是在模拟器环境的依旧能够正常的运行,一旦连接到真机(非 iOS9 系统)就提示有两个库文件找不到,如下所示: ...
  • jiisd
  • jiisd
  • 2015-09-20 16:59
  • 2860
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)