Бывают случаи, когда нужно распаковать на сервере tar-архив (сделанный на другом сервере), в котором находятся файлы сайта.
В этом случае нужно учитывать, что контейнер tar сохраняет права на файлы такими, какие они были в старой системе. И uid владельца файлов может не совпадать с новой системой.
Возьмем пример - мы загрузили на сайт example.com (владелец этого сайта - системный пользователь с именем ftpuser) архив с сайтом site.tar:
# cd /var/www/vhosts/example.com/httpdocs/
# pwd /var/www/vhosts/example.com/httpdocs
# ls -la total 7197 drwxr-x--- 2 ftpuser psaserv 1024 May 30 16:50 . drwxr-xr-x 14 root root 1024 May 30 16:38 .. -rw-r--r-- 1 root root 7337109 May 30 16:49 site.tar
Распаковываем архив, и видим его содержимое принадлежит вперемешку пользователям apache и какому-то неизвестному на нашем сервере пользователю с uid 501, а также - есть несколько директорий, принадлежащих apache. Вероятно, в эти директории веб-сервер должен иметь права на запись.
# pwd /var/www/vhosts/example.com/httpdocs
# tar -xzf site.tar
# ls -la total 7249 drwxr-x--- 17 ftpuser psaserv 1024 May 30 16:53 . drwxr-xr-x 14 root root 1024 May 30 16:38 .. -rw-r--r-- 1 501 80 17816 Dec 12 2009 LICENSE.txt -rw-r--r-- 1 501 80 4244 Sep 25 2011 README.txt drwxr-xr-x 10 501 80 1024 Apr 2 19:05 administrator drwxrwxrwx 2 apache apache 1024 Mar 15 01:49 cache drwxr-xr-x 2 501 80 1024 Mar 15 01:49 cli drwxr-xr-x 14 501 80 1024 Apr 2 19:05 components -rw-rw-rw- 1 501 80 1825 May 28 17:58 configuration.php -rw-r--r-- 1 501 80 3189 Apr 7 2011 htaccess.txt drwxr-xr-x 4 501 80 1024 Mar 15 01:49 images drwxr-xr-x 2 501 80 1024 Apr 2 19:05 includes -rw-r--r-- 1 501 80 1319 Apr 1 02:03 index.php drwxr-xr-x 10 501 80 1024 Mar 15 01:49 installation -rw-r--r-- 1 501 80 1754 Apr 1 02:07 joomla.xml drwxr-xr-x 5 501 80 1024 Apr 2 19:05 language drwxr-xr-x 7 501 80 1024 Apr 2 19:05 libraries drwxrwxrwx 2 apache apache 1024 Mar 15 01:49 logs drwxr-xr-x 16 501 80 1024 Apr 2 19:05 media drwxr-xr-x 26 501 80 1024 Apr 2 19:05 modules drwxr-xr-x 13 501 80 1024 Apr 2 19:05 plugins -rw-r--r-- 1 501 80 865 Mar 15 01:49 robots.txt -rw-r--r-- 1 root root 7337109 May 30 16:49 site.tar drwxr-xr-x 6 501 80 1024 Apr 2 19:05 templates drwxrwxrwx 2 apache apache 1024 Mar 15 01:49 tmp -rw-r--r-- 1 501 80 1715 Apr 1 02:03 web.config.txt
Хотя на директории, принадлежащие apache - и так установлены права 777, и мы могли бы попросту рекурсивно поменять владельца всей текущей директории на нашего ftpuser, можно это сделать более красиво, изменив на ftpuser владельца лишь файлов и директорий, которые сейчас принадлежат несуществующему пользователю с uid 501. Напоминаем, в данной директории сайта под управлением панели Plesk - файлы и директории, принадлежащие FTP-пользователю, должны иметь следующх владельцев:
- user: ftpuser
- group: psacln
Как реализовать описанное нерекурсивное изменение владельца:
1. Проверяем, в какой директории мы находимся, проверяем кто является владельцем указанной директории:
# cd /var/www/vhosts/example.com/httpdocs/
# pwd /var/www/vhosts/example.com/httpdocs
# ls -la /var/www/vhosts/example.com/ | grep httpdocs drwxr-x--- 17 ftpuser psaserv 1024 May 30 16:53 httpdocs
2. Находясь внутри изменяемой директории httpdocs - выполняем команду, которая найдет все файлы и директории с владельцем 501 и изменит их владельца на ftpuser:psacln:
# pwd /var/www/vhosts/example.com/httpdocs
# find ../httpdocs/ -user 501 -exec chown ftpuser:psacln {} \;
3. Проверяем, что все получилось успешно:
# ls -la total 7249 drwxr-x--- 17 ftpuser psaserv 1024 May 30 16:53 . drwxr-xr-x 14 root root 1024 May 30 16:38 .. -rw-r--r-- 1 ftpuser psacln 17816 Dec 12 2009 LICENSE.txt -rw-r--r-- 1 ftpuser psacln 4244 Sep 25 2011 README.txt drwxr-xr-x 10 ftpuser psacln 1024 Apr 2 19:05 administrator drwxrwxrwx 2 apache apache 1024 Mar 15 01:49 cache drwxr-xr-x 2 ftpuser psacln 1024 Mar 15 01:49 cli drwxr-xr-x 14 ftpuser psacln 1024 Apr 2 19:05 components -rw-rw-rw- 1 ftpuser psacln 1825 May 28 17:58 configuration.php -rw-r--r-- 1 ftpuser psacln 3189 Apr 7 2011 htaccess.txt drwxr-xr-x 4 ftpuser psacln 1024 Mar 15 01:49 images drwxr-xr-x 2 ftpuser psacln 1024 Apr 2 19:05 includes -rw-r--r-- 1 ftpuser psacln 1319 Apr 1 02:03 index.php drwxr-xr-x 10 ftpuser psacln 1024 Mar 15 01:49 installation -rw-r--r-- 1 ftpuser psacln 1754 Apr 1 02:07 joomla.xml drwxr-xr-x 5 ftpuser psacln 1024 Apr 2 19:05 language drwxr-xr-x 7 ftpuser psacln 1024 Apr 2 19:05 libraries drwxrwxrwx 2 apache apache 1024 Mar 15 01:49 logs drwxr-xr-x 16 ftpuser psacln 1024 Apr 2 19:05 media drwxr-xr-x 26 ftpuser psacln 1024 Apr 2 19:05 modules drwxr-xr-x 13 ftpuser psacln 1024 Apr 2 19:05 plugins -rw-r--r-- 1 ftpuser psacln 865 Mar 15 01:49 robots.txt -rw-r--r-- 1 root root 7337109 May 30 16:49 site.tar drwxr-xr-x 6 ftpuser psacln 1024 Apr 2 19:05 templates drwxrwxrwx 2 apache apache 1024 Mar 15 01:49 tmp -rw-r--r-- 1 ftpuser psacln 1715 Apr 1 02:03 web.config.txt
В результате мы не затронули файлы и директории, которые принадлежали apache, изменив лишь владельца файлов, принадлежавших до этого другому ftp-пользователю.
|