cron 作业的默认 umask

cron 作业的默认 umask

请问如何设置 cron 作业的默认 umask? (在 RHEL 6 上。)

作业是在非交互式(显然)免登录(?) shell 下启动的。不仅是我更喜欢冲过bash。但也请考虑 bash 称为 as /bin/sh。看起来,非交互式无登录调用中的两个 shell 都不会读取任何启动文件,例如/etc/profile.

默认 umask 是硬连线在 shell 中还是从 cron 守护进程继承?

答案1

在RHEL上,使用PAM,所以你可以尝试使用pam_umask

尝试将其放入/etc/pam.d/crond

session optional pam_umask.so umask=0022

当然,这是未经测试的,并且很可能会打破各种应用程序所做的假设。

答案2

在 >= RHEL7 上,可以通过在 systemd 服务中设置 UMask 值来完成

vi /usr/lib/systemd/system/crond.service
[Unit]
Description=Command Scheduler
After=auditd.service systemd-user-sessions.service time-sync.target

[Service]
UMask=0002
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl restart crond.service

相关内容