как временно отключить cronjobs пользователя?

Другая сторона того, что @Deer Hunter сказал, и что я думаю, что Вы достигаете, является "вредоносным программным обеспечением, может установить себя и выполняться как столько подобного вредоносного Windows программ, добирается?". Ответ на это нет. Без прямых полномочий предоставления участия пользователя для установки и, затем, выполнение, этого не может произойти.

14
06.03.2015, 05:14
5 ответов

Touch / Var / Spool / Cron / Crontabs / $ username; CHMOD 0 / VAR / SPAL / CRON / CRONTABS / $ username должен сделать трюк. Восстановление с CHMOD 600 и Touch (необходимо изменить MiMe MiCe, чтобы сделать Cron (попытка) перезагрузить его).

По крайней мере, Debian и, вероятно, с виксом Cron в целом CHMOD 400 / VAR / SPOOL / CRON / CRONTABS / $ username также делает трюк, потому что эта реализация настаивает на разрешениях быть ровно 600. Это длится только до тех пор, пока пользователь не выполнит команду Crontab .

Если вы хотите надежный путь, я не думаю, что есть что-то лучше, чем временно перемещать их крепко из пути или изменять разрешения, и временно добавлять их в / etc / cron .deny .

10
27.01.2020, 19:51

Как насчет чего-то вроде этого, чтобы отключить пользовательский crontab:

crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]

и снова включить:

crontab -u [username] /tmp/[username].cron.tmp

Это имеет дополнительное преимущество, что вы можете запускать его от имени этого пользователя без необходимости root (просто уберите параметр -u).

9
27.01.2020, 19:51

Если вы используете Debian, это относится только к Debian AFAIK:

Вы можете сделать это, добавив точку к имени cronjob.

Поведение упоминается в официальной документации Debian:

https://www.debian.org/doc/debian-policy/#cron-job-file-names

A cron job file name must not include any period or plus characters (. or +) characters as this will cause cron to ignore the file. Underscores (_) should be used instead of. and + characters.

0
27.01.2020, 19:51

Я согласен, путь через systemctl — тот, который нужно выбрать. На малине команды пальцев ног будут

sudo systemctl stop cron.service
sudo systemctl start cron.service
-1
27.01.2020, 19:51

Вы можете использовать следующее:

crondisable
cronenable

crondisable some_other_user
...

Код zsh(, введенный в ваш.zshrc):

ecerr () {
print -r -- "$@" >&2
}
crondisable() {
        local user="${1:-$(whoami)}"
        local cronpath="/tmp/$user.cron.tmp"
        test -e "$cronpath" && {
        ecerr "There is already a disabled crontab at $cronpath. Remove that manually if you want to proceed."
        return 1
        }
        crontab -l -u $user > "$cronpath"
        crontab -r -u $user
}
cronenable() {
        local user="${1:-$(whoami)}"
        local cronpath="/tmp/$user.cron.tmp"
        test -e "$cronpath" || {
        ecerr "No disabled cron at $cronpath"
        return 1
        }
        crontab -u $user "$cronpath"
        mv "$cronpath" "${cronpath}.bak"
}
1
15.04.2020, 16:45

Теги

Похожие вопросы