尝试将 Redis 转储到 Vagrant 共享文件夹时出现权限错误

尝试将 Redis 转储到 Vagrant 共享文件夹时出现权限错误

尝试将 Redis .rdb 文件转储到我的 vagrant 共享文件夹时,我不断收到权限错误。转到默认的 /var/lib/redis 位置时,保存工作正常。

我尝试过的一些方法(在各种论坛/主题中建议):

1)将以下内容添加到/etc/init.d/redis-server:

USER=vagrant
GROUP=vagrant

2)在 /etc/init.d/redis-server 中将 umask 标志更改为 022

3)开放vagrant共享文件夹本身的权限。

我很确定这个我没看懂,我做错了什么。虽然花了 2 或 3 个小时,但头发已经开始掉落 ;)

答案1

在 Ubuntu 13.04 (Raring-Ringtail) 服务器上,您需要修改 /etc/init.d/redis-server。查找需要更改的以下两个部分:

...

start)
  echo -n "Starting $DESC: "
  mkdir -p $RUNDIR
  touch $PIDFILE
  chown redis:redis $RUNDIR $PIDFILE  # <---- Old Line
  chown vagrant:vagrant $RUNDIR $PIDFILE # <---- New Line

...

  # <-- Old Line
  if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS
  # <-- New Line
  if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid vagrant:vagrant --exec $DAEMON -- $DAEMON_ARGS

...

基本上,您正在寻找 redis:redis(所有者/组)文本字符串的实例,并用等效的 vagrant:vagrant 替换它们。

如果您在默认 redid 用户下至少运行过一次 redis 服务器,那么您还必须将日志目录的所有权更改为 vagrant 用户,否则 redis 服务器将不会重新启动。

chown -R vagrant:vagrant /var/log/redis

重新启动 redid-server 后,您应该能够通过执行以下操作生成转储到 /vagrant 文件夹:

redis-cli save

答案2

您在这里使用 virtualbox 作为提供程序,还是使用其他什么。如果是 virtualbox,那么主机环境是什么?

向我们显示您收到的错误消息可能会有所帮助,或者(更好的是)在 strace 输出中发生故障的位置。我想知道失败的操作到底是什么。打开文件?获取锁?

相关内容