气流任务无法读取文件:权限被拒绝

时间:2019-08-22 09:49:31

标签: python centos7 airflow

在气流任务中,我执行此操作:

    try:
        db_hd = sqlite3.connect(self.sqlite_db)
    except sqlite3.Error as e:
        print("sqlite_db:", self.sqlite_db)
        print("system user:", getpass.getuser(), pwd.getpwuid(os.getuid()).pw_name)
        raise

打印在日志中的

[2019-08-21 16:50:05,915] {logging_mixin.py:95} INFO - sqlite_db: /opt/secure/sqlite.db
[2019-08-21 16:50:05,915] {logging_mixin.py:95} INFO - system user: mysecairflowuser mysecairflowuser
[2019-08-21 16:50:05,915] {models.py:1806} ERROR - unable to open database file

文件权限为:

-rw-rw----. 1 root airflow 2048 Aug 16 17:59 /opt/secure/sqlite.db

mysecairflowuser在气流组中:

[root@myserver ~]# grep mysecairflowuser /etc/group
airflow:x:1105:myairflowuser,mysecairflowuser

selinux处于许可模式:

[root@myserver ~]# getenforce
Permissive

所有工作服务器上的文件权限,组,系统用户,selinux设置均相同。在所有工作进程上,该进程以mysecairflowuser运行,systemd服务文件为:

[Unit]
Description=Airflow worker
After=network.target

[Service]
EnvironmentFile=/etc/airflow/deci.global.env
User=mysecairflowuser
Group=airflow
Type=simple
ExecStart=/usr/local/bin/airflow worker

[Install]
WantedBy=multi-user.target

如果我在任何工作服务器上以mysecairflowuser身份登录后执行本地Python代码,它都可以正常工作,因此我确定mysecairflowuser可以访问此文件。
如果我向具有chmod o+r /opt/secure/sqlite.db的任何用户授予读取权限,则在执行Airflow任务期间不会出现任何错误。
知道是什么原因造成的吗?

环境:CentOS 7上的Airflow v1.10.1,使用Celery,一个运行调度程序和Web服务器的主服务器以及数名工作人员。

0 个答案:

没有答案