如何设置服务以普通用户启动(redis举例)

如何设置服务以普通用户启动(redis举例)

前言

为了保证生产环境服务器的安全,在工作中有一个规范,要求我们运行的服务都要求以非登陆的普通用户运行,从而防止程序本身的漏洞被利用被黑客提权!比如我们在编译安装nginx、mysql以及php之前都会通过useradd建立非登陆的普通用户,然后在编译的时候指定该用户。类似这种的服务都是本身原生支持以普通用户运行的。但是有些程序并不是原生支持,在编译时候没有提供这个功能。只能编译后我们重新修改指定普通用户来运行。比如今天我们要举例的redis。废话少说,今天我们一起来学习下,如何让redis服务以普通用户运行。

建立普通用户

groupadd redis

useradd redis -M -g redis -s /sbin/nologin

拓展useradd知识:

  • -d   指定用户家目录(默认是/home目录下)
  • -M  禁止创建用户家目录(常配合非登陆用户使用)
  • -s   指定shell类型 (默认是/bin/bash ,/sbin/nologin 为禁止登陆)

提前创建必要目录<pid 目录 ,aof 数据目录,错误日志目录>

mkdir /var/run/redis -pv   && chown redis:redis  /var/run/redis -R   (pid 目录,默认是/var/run/但是仅限root用户创建,如果普通用户运行的,必须在其下自创目录,并chown授权)

mkdir /usr/local/redis/data/ -pv && chown redis:redis  /usr/local/redis/data/ -R

mkdir /var/log/redis/ -pv && chown redis:redis /var/log/redis/ -R

注意:我们的appendonly.aof文件默认是644权限,其他用户只读。所以修改普通用户前,看看该文件在哪个路径下,并且检查是否chown redis了,也可以给他直接加w权限,但是为了安全不推荐。如果该文件没权限,修改后会启动redis失败,报错如下。

修改配置文件

备注:现在三个参数都是后改的,之前都是默认值 ,appendonly.aof默认在/ 路径,修改为redis用户后,需要先把aof文件chown 为redis ,然后mv 到定义的目录中去,并保证目录已经chown授权好。

修改开机启动文件

指定普通用户运行,全靠我们的开启启动文件进行配置 ,保存后。

执行:   systemctl darmon-reload 

              service redis restart

额外添加加这三个参数即可

验证效果

进程情况:

aof文件情况

日志文件情况

总结

学会举一反三,这里针对服务修改时候要注意备份,数据备份,以及提前在虚拟机或者测试环境进行测试。保证万无一失后再到生产环境去实施。因为对服务的更改涉及到的改动较多,坑也比较多。对生产环境要有敬畏之心。

 

 

 

 

 

 

 

点赞
  1. 风哥说道:
    Google Chrome 71.0.3578.98 Windows 10

    文章写的挺好的,赞一个

    1. 王权富贵 王权富贵说道:
      Google Chrome 71.0.3578.80 Windows 10

      谢谢风哥 ,不过让你见笑了,好几个文章还没整理完,有的中间还空一块呢 嘿嘿。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Loading...