我设置了一个临时目录,用户可以在其中放置他们需要通过 HTTP 发送给其他用户的任何文件。该目录的所有者是 SFTP 用户,无法运行 cron 作业。
我有一个 shell 用户可以运行 cron 作业,但无权编辑 SFTP 用户目录中的文件。
我有一个管理员用户,可以在使用 sudo 时访问 SFTP 用户的目录,但无法(阅读:我真的不想)运行 cron 作业。
所以,这就是难题。如何以 shell 用户身份运行夜间 cron 作业,以删除 SFTP 用户目录中 1 周前的文件,并具有管理员用户的权限?
答案1
编辑该/etc/sudoers
文件(使用visudo
!)并添加一个条目,该条目允许 shell 用户拥有足够的权限来运行特定命令,而无需输入密码。如果您使用脚本,请确保除 root 之外的任何人都无法编辑该脚本。
在 中/etc/sudoers
,其中shelluser
是 shell 用户名:
shelluser ALL=NOPASSWD: /usr/bin/clean-up-sftp-temp-directory
在/usr/bin/clean-up-sftp-temp-directory
脚本中,您可以添加以下内容:
#!/bin/sh
rm -f /home/sftpuser/will-be-deleted/*
使脚本可执行后,您应该能够调用sudo clean-up-sftp-temp-directory
它并将其添加到 shell 用户的 crontab 中。