请问如何设置 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