解决Apache无法访问Veracrypt挂载卷的问题

在服务器上运行了一个 NextCloud,系统是 Centos 7,服务器程序使用的 Apache,以 daemon 组 daemon 用户运行着。现在是以 root 用户登录到服务器,执行 Veracrypt 挂载卷命令挂载 HD1。

[root@izj6ca50pk1lwyt73uqjmdz ~] veracrypt hd1
Enter mount directory [default]: /mnt/veracrypt
Enter password for /home/hd1: ****
Enter PIM for /home/hd1: 
Enter keyfile [none]: 
Protect hidden volume (if any)? (y=Yes/n=No) [No]: no

挂载后,root 用户可以访问 veracrypt 卷中的内容,都没有问题。

现在在 Netxcloud 中增加一个外部存储,设置存储模式为本地,路径为 /mnt/veracrypt,并对指定一些用户组可见。

在 Nextcloud 登录后,发现能列举出加载的这个外部存储,但是无法创建和删除文件,也不能列举子目录。

想来这就是因为 veracrypt 是 root 挂载的,apache 是 daemon:daemon 没有足够的权限,而 veracrypt 的挂载方式不是直接使用 mount,因此也无法传递 umask 参数。

尝试使用 chown 修改 /mnt/vercrypt 为 daemon:daemon 并没有成功。

后来尝试登陆到切换到 daemon 用户去挂载 veracrypt 卷,因为 daemon 是应用程序用户,不能直接登陆,所以先要修改 /etc/passwd:

找到 daemon 用户所在行

daemon:x:2:2:daemon:/home:/bin/bash

保存后退出。

然后 su - 切换到 root 用户,执行 passwd daemon 修改 daemon 用户的密码,这样就可以是用 su - daemon 切换到 daemon 用户了,但是挂载 Veracrypt 卷还是会报 is not in the sudoers file 的错误。

执行 visudo 编辑 /etc/sudoers,追加 daemon ALL=(ALL) ALL

再次执行 veracrypt hd1 去挂载卷,按上面步骤操作后,成功挂载。

但是这样一来就多了个可以可登陆到服务器的新用户了,可以修改 /etc/ssh/sshd_config ,只允许 root 用户登录:AllowUsers aliyun,安全的前提是你已经禁止了密码模式了,只允许使用密钥模式登录。

另外有一点没有验证,如果直接使用 passwd daemon 修改 daemon 的密码,然后执行 sudo -H -u daemon bash -c 'veracrypt hd1' 能不能直接挂载。

要查看 daemon:daemon 有没有权限对挂载卷进行读写,切换到 /mnt 目录执行 ls -al 看一下就知道了。

[root@izj6ca50pk1lwyt73uqjmdz mnt]# ls -al
total 16
drwxr-xr-x.  4 root   root   4096 Feb  2 11:48 .
dr-xr-xr-x. 18 root   root   4096 Feb  5 14:44 ..
drwxr-xr-x   2 root   root   4096 Jan 31 14:29 oss1
drwx------   4 daemon daemon 4096 Jan  1  1970 veracrypt

说起这个 OSS 卷,不错这就是 阿里云 OSS,之前 nextcloud 也是不能直接访问,因为也是 root 用户去挂载的,不过 阿里云 OSS mount 工具是可以传递 umask 等参数的。

ossfs YOUR_OSS_NAME /mnt/oss1 -ourl=oss-cn-beijing-internal.aliyuncs.com -ouid=2 -ogid=2 -oumask=000  -o allow_other -odefault_permission=777

对于查看 apache 的 ouid 和 ogid 也很简单,执行 id daemon 就可以了。

[root@izj6ca50pk1lwyt73uqjmdz mnt]# id daemon
uid=2(daemon) gid=2(daemon) groups=2(daemon)

然后遇到了一个坑,我的 OSS 是归档模式,归档模式意味着好写不好读。

比如我用 vim 创建一个 demo.txt 然后写入 Test,再次编辑就会出现 OSS 连接超市的问题,cat 一下也不行(傲娇脸)。

要读取需要手动解冻文件,然后等一分钟后才能读取,OSS 的挂载工具不支持自动解冻。所以如果需要频繁写入读取最好选择标准或者低频模式,如果只是内网挂载,也不存在流量费用问题,选标准模式就好了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,883评论 0 10
  • 基本命令-2 压缩和归档 打包: 即归档,类似于旅游之前收拾行李 压缩: 为了减少占用的磁盘空间,可以做备...
    崔千易阅读 988评论 0 0
  • Linux系统磁盘基本管理命令挂载文件系统――mount mount命令语法: mount [参数] [设备名称]...
    LaLaLaLaAAA阅读 2,591评论 0 1
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,796评论 0 10
  • “小雪封地,大雪封河”,大雪,标志着仲冬时节的正式开始。 我国古代将“大雪”分为三候:“一候鹃鸥不鸣;二候虎始交;...
    风裳堂主阅读 814评论 18 26