Я сделал резервный рестарт, но теперь в разных местах я нахожу пользователей или группы, которые не существуют. они выглядят как User # 1034 group # 1010 или user # 501, и я сутулят, поэтому многие вещи не работают. Как TCP-порт 80, поэтому мой сервер больше не доступен. Как найти и исправить эти ошибки? Fsck. Я нашел find -user 1034 | больше, но это занимает слишком много просмотров. Возможно, лучшее выражение, как я использовал для разрешений
find . -user old-user -exec chown new-user:new-group {} \; or sudo find . -type f ! -user 501 -exec chown 0 {} \;
, но как я могу получить вывод для подтверждения?
Мне бы очень понравилась страница о том, как укусить эти выражения в одном месте, поскольку помощь не дает всем операторам, и мне приходится всматриваться в разные части, чтобы найти разные части для файловых манипуляций и grep-вещей
. Создайте командные строки с более чем одной частью -exec в соответствии со следующим примером: первая часть, показывающая target-file:, и следующие часть (ы) для выполнения действий (ы).
$ sudo find /home/sudodus/Backup/ -user sudodus -exec printf "%s:\n" {} \; -exec echo do-this {} \; -exec echo do-that {} \;
[sudo] password for nio:
/home/sudodus/Backup/:
do-this /home/sudodus/Backup/
do-that /home/sudodus/Backup/
/home/sudodus/Backup/5:
do-this /home/sudodus/Backup/5
do-that /home/sudodus/Backup/5
/home/sudodus/Backup/7:
do-this /home/sudodus/Backup/7
do-that /home/sudodus/Backup/7
/home/sudodus/Backup/6:
do-this /home/sudodus/Backup/6
do-that /home/sudodus/Backup/6
/home/sudodus/Backup/4:
do-this /home/sudodus/Backup/4
do-that /home/sudodus/Backup/4
, где вы можете заменить /home/sudodus/Backup/ на соответствующий каталог, который вы хотите найти; -user с -nouser, -group, -nogroup; sudodus с соответствующим пользователем или группой; echo do-this и echo do-that с соответствующими командами. Таким образом, вы можете создавать командные строки, которые будут делать то, что вы хотите, и показывать, какие файлы будут затронуты.
-nouser, -nogroup не имеют параметра, команда может выглядеть так
sudo find /home -nouser -exec printf "%s:\n" {} \; -exec echo do-this {} \; -exec echo do-that {} \;
Рекомендуется начать с echo как «сухой ход», чтобы показать, что правильные вещи, вероятно, произойдут, и после этого удалите части echo команд для выполнения действие (s).
. Создайте командные строки с более чем одной частью -exec в соответствии со следующим примером: первая часть, показывающая target-file:, и следующие часть (ы) для выполнения действий (ы).
$ sudo find /home/sudodus/Backup/ -user sudodus -exec printf "%s:\n" {} \; -exec echo do-this {} \; -exec echo do-that {} \;
[sudo] password for nio:
/home/sudodus/Backup/:
do-this /home/sudodus/Backup/
do-that /home/sudodus/Backup/
/home/sudodus/Backup/5:
do-this /home/sudodus/Backup/5
do-that /home/sudodus/Backup/5
/home/sudodus/Backup/7:
do-this /home/sudodus/Backup/7
do-that /home/sudodus/Backup/7
/home/sudodus/Backup/6:
do-this /home/sudodus/Backup/6
do-that /home/sudodus/Backup/6
/home/sudodus/Backup/4:
do-this /home/sudodus/Backup/4
do-that /home/sudodus/Backup/4
, где вы можете заменить /home/sudodus/Backup/ на соответствующий каталог, который вы хотите найти; -user с -nouser, -group, -nogroup; sudodus с соответствующим пользователем или группой; echo do-this и echo do-that с соответствующими командами. Таким образом, вы можете создавать командные строки, которые будут делать то, что вы хотите, и показывать, какие файлы будут затронуты.
-nouser, -nogroup не имеют параметра, команда может выглядеть так
sudo find /home -nouser -exec printf "%s:\n" {} \; -exec echo do-this {} \; -exec echo do-that {} \;
Рекомендуется начать с echo как «сухой ход», чтобы показать, что правильные вещи, вероятно, произойдут, и после этого удалите части echo команд для выполнения действие (s).