【问题标题】:systemctl failed restart due to permission issue由于权限问题 systemctl 重启失败
【发布时间】:2020-11-06 22:01:52
【问题描述】:

我安装了redis并将redis-server放在/usr/local/bin:

-rwxr-xr-x 1 redis         redis         11044232 Sep 24 00:30 redis-server

我在同一文件夹/usr/local/bin 中有redis.conf:

-rwxr-xr-x 1 redis         redis              120 Oct  6 21:30 redis.conf

我在 /etc/systemd/system 创建了 redis.service:

-rw-r--r-- 1 root root  192 Oct  6 21:46  redis.service

猫 redis.conf:

Description=Redis
After=network.target
[Service]
User=redis
Group=redis
Type=Simple
ExecStart=/usr/local/bin/redis-server /usr/local/bin/redis.conf
[Install]
WantedBy=multi-user.target

但是当我跑步时

sudo systemctl restart redis
sudo systemctl status redis

它显示:无法打开仅附加文件:权限被拒绝

如果我在 redis.service 将服务单元中的用户和组更改为“root”并再次重新启动,则 redis 服务器成功启动。

我确实添加了用户 redis:

sudo useradd --no-create-home --shell /bin/false redis

是什么原因?我想使用专用用户redis来启动服务器。

【问题讨论】:

    标签: redis systemctl


    【解决方案1】:

    原因

    用户redis 没有访问/usr/local/bin/appendonly.aof 的用户权限,因为它在/usr/local/bin 中。

    默认情况下,Redis 工作目录是相对于redis.conf,由以下行设置:

    dir ./
    

    解决方案

    1. redis.conf 中的dir ./ 更改为redis 用户可写的目录
    2. 或者将redis.conf 放在redis 用户可写的目录中(无论如何,只有可执行文件应该驻留在/usr/local/bin 中)

    【讨论】:

    • 感谢您回答我。事实上,redis.conf 最初是在另一个目录 /home/myname/cluster_test/ 中,它的用户/组都是 redis。它不起作用,这就是为什么我将它移到 /usr/local/bin 但它仍然不起作用。 dir ./ 是什么意思?
    • @user389955 dir ./ 指的是 redis.conf 行,您可以在其中配置工作目录,例如dir /var/redis/ 将配置 redis 以将 appendonly.aofredis.rdb 放入 /var/redis/ 目录 - 您必须确保 redis 用户可以通过执行 chmod 700 redis 来列出、读取和写入该目录(给用户 redis 所有权限,其他都没有)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2021-08-09
    • 2022-08-03
    • 2019-07-26
    • 2013-07-31
    相关资源
    最近更新 更多