Мне удалось создать многократно используемое сокращение для одного из решений, описанных в ответе Стефана Шазеласа . [Edit: Стефан повторил исходный ярлык Я сделал предложение; описанный здесь код является более новой версией его создания]
Поместите это в свой ~ / .zshrc
:
sdo() sudo zsh -c "$functions[$1]" "$@"
Теперь вы можете использовать sdo
как " ] sudo
только для пользовательских функций ".
Чтобы убедиться, что sdo
работает: вы можете опробовать его на пользовательской функции, которая печатает ваше имя пользователя.
➜ birch@server ~/
$ sudo ls -la / var / spool / cron / crontabs всего 12 drwx-wx - T 2 root crontab 4096 25 сентября, 03:23. drwxr -xr-x 5 root root 4096 23 сентября 00:05 .. - rw ------- 1 root my-user-name 188 25 сентября 03:23 my-user-name {{1 }}
Право собственности на / var / spool / cron / crontabs / my-user-name
неверно. Вы должны быть владельцем. Это объясняет, почему cron не может перезаписать файл. Также файл обычно находится в группе crontab
, но я не думаю, что это имеет значение.
Вы можете исправить это, запустив
sudo chown my-user-name /var/spool/cron/crontabs/my-user-name
Я не знаю, чем это могло быть вызвано, и я не понимаю, как это могло быть связано с переходом на более раннюю версию системы. Основные проблемы могут вызвать другие проблемы.
Вам необходимо отредактировать права доступа к двоичному файлу crontab и вернуть их к тем значениям, которые были при новой установке.
ls -la /usr/bin/crontab
-rwsr-xr-x 1 root crontab 40264 Oct 7 2017 /usr/bin/crontab
Действие, выполните от имени пользователя root или с помощью sudo:
chmod g+s /usr/bin/crontab
chmod u-s /usr/bin/crontab
ls -la /usr/bin/crontab
-rwxr-sr-x 1 root crontab 40264 Oct 7 2017 /usr/bin/crontab
Взято из новой рабочей установки, рабочие разрешения задаются во время установки.
Не знаю, почему они позже изменились.