Проблемка с правами после миграции на другой сервер ISP Manager-ом

После миграции на другой сервер ISP Manager-ом в почтовых логах то и дело появлялись строчки примерно такого содержания:

Jul 20 17:23:40 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:26:40 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:29:43 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:32:46 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:35:46 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:38:46 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:41:46 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:44:49 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:47:49 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:50:49 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:54:07 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)

В результате некоторых телодвижений в shell было выяснено что некорректно выставились права на домашние директории пользователям со старого сервера! Точнее неправильным был owner хомяка, группа стояла правильно! Для новосозданных все отлично, а со старыми лажа ….

Поскольку старых пользователей много и руками вбивать команду chown для каждого из них было совсем лениво — написал небольшой скриптик. Вот его содержание:

#!/usr/local/bin/bash
USERS=`ls /home/ISPUser/data/email/some.domain.ua`
for REAL_USER in $USERS
  do
    VIRTUSER=`grep "${REAL_USER}:" /etc/passwd |grep some.domain.ua |cut -d':' -f1`
    VIRTUSER_HOME=`grep "${REAL_USER}:" /etc/passwd |grep some.domain.ua |cut -d':' -f6`
    #   echo $VIRTUSER:ISPUser $VIRTUSER_HOME
    chown -R $VIRTUSER:ISPUser $VIRTUSER_HOME
done

Перед непосредственным использованием сего скриптика рекомендую сначала закоментить строчку с chown и разкоментить ту которая выше с echo — она показывает собственно что будет делать chown. Если ее вывод вас устраивает — возвращайте в изначальное состояние и используйте на здоровье 🙂
У меня скрипт отработал за несколько секунд, и полностью справился со своей задачей! Проблемка решена!

Осталось только пожелать удачных переездов 🙂

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?