我正在做一些服务器配置,我需要在安装后运行一个脚本,因为它要求系统功能齐全,包括服务。所以我不能把它放在%post我的 kickstart 文件的部分中。
相反,我创建了一个 systemd 服务,该服务在它所做的最后一件事中将自身禁用。
[Unit]
Description=Prepare the system after installation
[Service]
Type=oneshot
ExecStart=/usr/bin/prepare-system
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
问题是在第一次启动时,我进入了登录提示,甚至可以登录并开始使用系统,而“首次启动脚本”仍在运行。
这给了管理员设置系统的错觉,认为系统已经完成,而实际上并没有。
相反,我希望该服务延迟启动,最好显示一条消息,例如“系统正在准备中,请稍候……”并在那里等待,直到脚本完成。
我有一个 Gunicorn 套接字文件:/opt/rtd/gunicorn/run.sock. 我需要 nginx 才能打开这个套接字并写入它。
当我运行时,sesearch --allow -s httpd_t | grep unix_stream_socket我注意到httpd_t被允许连接到httpd_t类型的套接字。但当我尝试应用它时,我得到:
# semanage fcontext -a -t httpd_t "/opt/rtd/gunicorn/run.sock"
ValueError: Type httpd_t is invalid, must be a file or device type
Run Code Online (Sandbox Code Playgroud)
我尝试过从 sesearch 找到的其他类型,例如httpd_sys_script_t甚至乘客_t。相同的结果。
我应该将类型设置为什么?
我希望不必制定额外的政策来允许超出必要的范围。一定有办法允许 httpd_t 从具有 CentOS 7.2 中现有策略的文件套接字中读取数据,对吧?