redis不要以root权限启动(linux)

redis默认启动方法都是以root启动的,不安全,现在创建一个新的用户来启动。

一、新增用户

新增用户组(lanren312group)

groupadd lanren312group

新建用户(lanren312)并加入(lanren312group)组中,并禁止登录

useradd -M lanren312 -g lanren312group -s /sbin/nologin

二、修改开机启动文件

方法一:修改 /etc/rc.local 文件

vim /etc/rc.local
# 最下面增加
sudo -u lanren312 /usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf

# 退出赋权限
chmod +x /etc/rc.local

方法二:添加开机启动服务(推荐)

vi /etc/systemd/system/redis.service
 
######## 写入内容
[Unit]
Description=redis-server
After=network.target
 
[Service]
Type=forking
User=lanren312 # 添加用户
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

修改redis.service文件后可能有提示:

Run 'systemctl daemon-reload' to reload units.

执行 systemctl daemon-reload 就可以了

三、重新启动redis

systemctl start redis.service   ## 启动redis服务
systemctl stop redis.service    ## 停止redis服务
systemctl restart redis.service ## 重启redis服务
systemctl status redis.service  ## 查看redis服务当前状态

四、检查是否修改成功

 ps -ef|grep redis

就会看到不再是root启动了,而是刚修改的lanren312用户。

五、其它

后面又碰到redis报错

MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.

修改 redis.conf 文件配置

快速定位 /stop-writes-on-bgsave-error 
stop-writes-on-bgsave-error  将yes改成no

### 如何以root用户身份启动Redis 为了安全性和稳定性考虑,在生产环境中应避免使用`root`权限运行Redis服务器。通常建议创建专门的服务账户来管理Redis实例。 #### 创建专用用户并调整目录权限 首先,创建一个新的Linux用户用于运行Redis服务: ```bash sudo adduser --system --group --no-create-home redis ``` 接着修改Redis数据存储路径以及日志文件夹的属组属性至新建立的用户下: ```bash sudo chown -R redis:redis /var/lib/redis/ sudo chmod 755 /var/lib/redis/ ``` #### 修改配置文件中的守护进程选项 打开Redis配置文件 `/etc/redis.conf`, 将 `supervised no` 更改为适合系统的值比如 systemd 或 upstart 来支持后台运行模式[^1]: ```conf supervised systemd ``` 同时确保以下参数被正确设置以便于降低风险: - **bind**: 只监听本地地址或特定IP而不是通配符(`0.0.0.0`) ```conf bind 127.0.0.1 ::1 ``` - **port**: 设置合适的端口号,默认为6379 ```conf port 6379 ``` - **requirepass**: 配置强密码保护访问接口 ```conf requirepass your_strong_password_here ``` 最后指定要使用的UID/GID作为特权用户的身份来执行程序: ```conf user nobody ``` 注意这里假设系统存在名为nobody的安全级别较低的标准账号;如果之前已经自定义了一个更严格的用户,则替换为此处的名字即可。 #### 使用Systemd管理服务 对于现代Linux发行版来说推荐通过systemctl命令来进行启停操作而直接调用二进制文件。因此还需要编写相应的unit file位于`/lib/systemd/system/redis.service`内包含如下内容: ```ini [Unit] Description=Advanced key-value store After=network.target [Service] Type=forking User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always [Install] WantedBy=multi-user.target ``` 上述单元文件指定了启动时所采用的具体版本位置,并明确了应该切换到哪个用户去加载配置项启动服务过程[^2]。 完成以上更改之后就可以正常利用systemctl工具控制这个新的service了: ```bash sudo systemctl daemon-reload sudo systemctl enable redis sudo systemctl start redis ``` 这样就实现了以root用户的方式成功部署了一套相对安全可靠的Redis环境[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值