Как я уже сказал, при переносе файлов, несмотря на обещания википедии, права сохранились через раз. Сразу после переноса это было не очень заметно. А когда я и разные клиенты стали пытаться пользоваться админками - полезли косяки.
По счастью, хранение файлов у меня организовано однотипно и не очень хитро - есть папка, в которой вложены директории под каждую пару "тип-поле", для которой нужны файлы. Например "превьюшки для новости" лежат в одной папке, а "аватарки для юзеров" - в другой.
Обычно таких вариантов не шибко много и все можно расставить руками. Но вот есть у меня монстр-магазин с несчетными тыщами товаров, для которого ручной вариант не проканал - тупо вис WinSCP при попытке выделить все файлы.
Нашел, что у команды chmod есть опция -R, выставляющая заданные права рекурсивно для всего, что ей попадется. Косяк состоял в том, что у нас есть много файлов и много папок, и права у них должны быть разные, всадить всем тупо 777 - не вариант.
За решением обратился к админу Диме. Дима погудел админскими извилинами, и-таки разродился решением (недаром значение имени дмитрий - "плодородный" :)). Так вот, можно получить все содержимое директории командой find (в т.ч. глубокие уровни), выбрать из результата записи нужного типа (файл/папка), и уже к ним применить права при помощи chmod.
Сделать все файлы в директории и субдиректориях доступными для записи всем:
find . -type f -exec chmod 666 {} \;
Сделать все поддирекктории доступными для записи всем:
find . -type d -exec chmod 755 {} \;
Дешево и сердито, чо :)
chmod -R go=rwX,u=rwX .