AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1008278
Accepted
Mathew Paret
Mathew Paret
Asked: 2020-03-25 21:22:41 +0800 CST2020-03-25 21:22:41 +0800 CST 2020-03-25 21:22:41 +0800 CST

Openvpn无法写入文件,但能够追加

  • 772

我对 OpenVPN 有一个奇怪的问题:

在我的配置中,OpenVPN 基于 laravel 控制台应用程序对用户进行身份验证。Laravel 站点使用 Nginx 作为 www-data 运行。storage/logs 目录具有以下所有权和权限:

drwxrwsr-x+ 2 www-data vpnlog   4.0K Mar 25 15:36 logs

www-data & 没有人有 vpnlog 组附加到他们

我还设置了以下 ACL:

mathewp@vpn:/etc/openvpn/apps/vpn-self-service/storage$ getfacl logs/
# file: logs/
# owner: www-data
# group: vpnlog
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:user:nobody:rw-
default:group::rwx
default:group:nogroup:rw-
default:mask::rwx
default:other::r-x

Openvpn server.conf:

script-security 2 # must be at least 2
auth-user-pass-verify /etc/openvpn/checkUser.sh via-file
username-as-common-name # without this openvpn will use cn in the certificate as username
duplicate-cn # you may need this if everyone is using same certificate

local 10.1.1.157
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DOMAIN X.X.X.X"
push "dhcp-option DNS 10.1.1.157"
push "route 10.8.0.0 255.255.255.0"
push "route 10.1.1.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
push "block-outside-dns"
client-to-client
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append /var/log/openvpn-log.txt
verb 3
crl-verify crl.pem
explicit-exit-notify

/etc/openvpn/checkUser.sh 如下:

#!/bin/bash
PHP_APP=/usr/bin/php
ARTISAN=/etc/openvpn/apps/vpn-self-service/artisan
echo "${PHP_APP} ${ARTISAN} openvpn:validate $1" 

${PHP_APP} ${ARTISAN} openvpn:validate "$1"

exit $?

此控制台命令 (openvpn:validate) 尝试写入 storage/log 中的日志文件。

但是如果日志文件不存在,它会失败并拒绝权限。但是,如果日志文件已经存在,那么附加它就好了。

您能帮我调试并了解权限问题是什么吗!

这是它尝试写入的文件:

-rw-rw-r--+ 1 www-data vpnlog 223 Mar 25 15:52 vpn.log
openvpn permissions access-control-list laravel
  • 1 1 个回答
  • 535 Views

1 个回答

  • Voted
  1. Best Answer
    Piotr P. Karwasz
    2020-03-26T14:49:17+08:002020-03-26T14:49:17+08:00

    运行 OpenVPN 的用户nobody和组nogroup对包含日志的目录没有写入权限。默认ACL权限:

    default:user::rwx
    default:user:nobody:rw-
    default:group::rwx
    default:group:nogroup:rw-
    default:mask::rwx
    default:other::r-x
    

    适用于新创建的文件,而不是目录。要授予nobody写访问权限,请运行:

    setfacl -m u:nobody:rwx /etc/openvpn/apps/vpn-self-service/storage/logs
    

    然而,更好的解决方案可能是将 OpenVPN 作为vpnlog组运行,因为nobody并且nogroup不应该有任何写入权限。

    • 0

相关问题

  • OpenVPN:在哪里生成私钥?

  • 将 iPhone 连接到 OpenVPN

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • 最好的点对点 VPN?

  • 通过 VPN 使您的打印机可用的最佳方法是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve