<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Максим Кузнецов: заметки с тегом Linux</title>
<link>https://maxkuznetsov.ru/tags/linux/</link>
<description>Простыми словами о веб-разработке</description>
<author>Максим Кузнецов</author>
<language>ru</language>
<generator>E2 (v3559; Aegea)</generator>

<itunes:owner>
<itunes:name>Максим Кузнецов</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Простыми словами о веб-разработке</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Deployment: настраиваем пользователей</title>
<guid isPermaLink="false">38</guid>
<link>https://maxkuznetsov.ru/all/deployment-users/</link>
<pubDate>Fri, 27 Nov 2020 04:17:56 +0300</pubDate>
<author>Максим Кузнецов</author>
<comments>https://maxkuznetsov.ru/all/deployment-users/</comments>
<description>
&lt;h3&gt;Проблема&lt;/h3&gt;
&lt;p&gt;Под &lt;tt&gt;root&lt;/tt&gt;-пользователем работать небезопасно, равно как и делать весь проект доступным &lt;tt&gt;www-data&lt;/tt&gt;.&lt;br /&gt;
Кроме того, во многих веб-приложениях пользователи имеют возможность загружать свои файлы. И очень часто с такими файлами возникают конфликты, так как пишутся они под &lt;tt&gt;www-data:www-data&lt;/tt&gt;, а деплоим под другим пользователем. Даже если деплоить под &lt;tt&gt;root&lt;/tt&gt;, то скорее всего права на папку перепишутся и &lt;tt&gt;www-data&lt;/tt&gt; потеряет доступ к нужным файлам.&lt;/p&gt;
&lt;h3&gt;Решение&lt;/h3&gt;
&lt;p&gt;Создать нового пользователя deploy с правами на коннект к серверу по ssh, доступом только к папке с проектом и возможностью изменять файлы в &lt;tt&gt;./public/uploads&lt;/tt&gt; и &lt;tt&gt;./var&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Создаём на сервере пользователя &lt;tt&gt;deploy&lt;/tt&gt; из-под &lt;tt&gt;root&lt;/tt&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ssh root@вашсервер
useradd --create-home -s /bin/bash deploy&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Настроим доступ по ssh через ключи&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;mkdir /home/deploy/.ssh
touch /home/deploy/.ssh/authorized_keys&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Вставьте содержимое одного из публичного ключа своего локального пользователя в файл &lt;tt&gt;authorized_keys&lt;/tt&gt; и сохраните. Вывести публичный ключ локально можно командой: &lt;tt&gt;cat ~/.ssh/id_rsa.pub&lt;/tt&gt; (название ключа &lt;tt&gt;id_rsa.pub&lt;/tt&gt; у вас может отличаться).&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vim /home/deploy/.ssh/authorized_keys&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Меняем права на более строгие&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chown -R deploy:deploy /home/deploy
chmod 600 /home/deploy/.ssh/authorized_keys&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Определим пользователя нашего веб-сервера (в примере ниже это &lt;tt&gt;www-data&lt;/tt&gt;)&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1
&amp;gt; www-data&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Добавляем пользователя &lt;tt&gt;deploy&lt;/tt&gt; в группу &lt;tt&gt;www-data&lt;/tt&gt; (группа веб-сервера)&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;usermod -a -G www-data deploy&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Выставляем права на папку проекта&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;chown -R deploy:deploy /var/www/project
chmod -R 0775 /var/www/project&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Проверим, есть ли setfacl в системе &lt;tt&gt;setfacl -h&lt;/tt&gt; и установим, если его нет. Команда для Ubuntu:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;sudo apt-get install acl&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Выдадим права на папки с кэшем, логами и загруженными пользовательскими файлами&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;sudo setfacl -dR -m u:www-data:rwX -m u:deploy:rwX /var/www/project/var /var/www/project/public/uploads
sudo setfacl -R -m u:www-data:rwX -m u:deploy:rwX /var/www/project/var /var/www/project/public/uploads&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Готово.&lt;/p&gt;
&lt;p&gt;Для самого деплоймента я обычно использую &lt;a href="deployer.org"&gt;Deployer&lt;/a&gt; c параметром &lt;tt&gt;writable_mode=acl&lt;/tt&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>Объём диска и папки</title>
<guid isPermaLink="false">10</guid>
<link>https://maxkuznetsov.ru/all/tech-obyom-diska-i-papki/</link>
<pubDate>Wed, 18 Sep 2019 11:55:51 +0300</pubDate>
<author>Максим Кузнецов</author>
<comments>https://maxkuznetsov.ru/all/tech-obyom-diska-i-papki/</comments>
<description>
&lt;p&gt;Никак не могу удержать в голове эти команды, так как они нужные не так часто, но всё же настолько, чтобы записать и больше не искать.&lt;/p&gt;
&lt;p&gt;Сколько места на диске:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;df -h&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Сколько места занимает папка:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;du -sh ./folder&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Что именно занимает больше всего места внутри папки:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;du -sh ./folder/*&lt;/code&gt;&lt;/pre&gt;</description>
</item>


</channel>
</rss>