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

2024-09-30 04:34:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

    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

日志中显示的是:

^{pr2}$

文件权限包括:

-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设置都相同。在所有worker上,进程以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

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

环境:CentOS 7上的Airflow v1.10.1,使用Celery、一个运行调度程序和Web服务器的主服务器和几个工人。在


Tags: 文件self服务器权限dbsqliterootsqlite3

热门问题