Вопросы по web-серверу

Привет все и вся :slight_smile:
Колдую вот с правами и владельцем, не пойму как правильно сделать. Делаю сервер на Дебиане. По разным статьям насобирал инфы.
Хочу уточнить что и как делать правильно. В принципе сервер работает и сайт крутится, но возникают проблемы с правами.

Итак, имеем:

  • есть сервер
  • есть один юзер /home/igor
  • есть два сайта - s1 и s2, то есть
    /var/www/html/s1
    /var/www/html/s2
  • есть 2 БД
  • есть 2 пользователя БД

По найденной инфе сделал:
mkdir -p /var/www/html/s1
chown igor:igor /var/www/html/s1
chown -R igor:www-data /var/www/html/s1
chmod 755 /var/www/html/s1

Ну базу я так создал:
CREATE DATABASE lp CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON lp.* TO ‘lpl’@‘localhost’ IDENTIFIED BY ‘1234’ WITH GRANT OPTION;

Возникли вопросы:

  • надо ли ещё создавать пользователей? Например /home/s1
  • правильно ли указан владелец chown igor:igor /var/www/html/s1
  • и тут не уверен chown -R igor:www-data /var/www/html/s1

Я потом Марию поменяю на Постгрес.

Какие?

Надо если надо для каких-то целей :slight_smile:

Отдельный пользователь для например веб-сервера нужен для некоторого улучшения безопасности: чтобы если будет найдена какая-то уязвимость в веб-сервере, то у злоумышленника не будет возможности выполнять команды от рута и он не сможет полностью захватить сервер.

Сейчас Docker модно использовать, это упрощает многое.
Тут разные полезные материалы по этой теме:
Re: Где найти хороший источник по установке и конфигурации LAMP?

Большое спасибо. Да, тогда буду делать отдельного юзера для каждого сайта. К ftp это тоже относится? Я тут пока не вник что к чему, но догадываюсь что тут тоже надо делать отдельных юзеров.

Про права доступа… Ну например иногда не могу в Filezila поменять 755 на 777, приходится лезть в консоль и вручную вбивать путь и указывать права. Иногда шаманю через домашнюю папку, закачиваю туда cms, а потом в нужную папку кидаю. Кароче, каша-малаша )

Про docker - погляжу что это такое. Но постоянно вижу как одна статья бродит по всем блогам, и всем похрен, что статья написана ботаником, и такие же ботаники массово копируют ошибки. Меня как-то заинтересовал перенос БД на другое место. Делаю как написано, проверяю, и хана. Долго не мог понять в чем прикол. А оказалось что написано с ошибкой - вместо /var/lib/mysql было написано /var/lib/mysql/mysql (два раза mysql).

А владелец правильно указан? То есть игорьдвоеточиеввв?

Я говорил о том, что сам процесс веб-сервера (apache httpd, nginx, …) должен работать не из под рута. Но это вроде бы так по умолчанию обычно и сделано.

А отдельный изолированный юзер для каждого своего сайта думаю не так важно, но при желании можно и сделать. В Апаче вроде бы как-то так: https://cloudkul.com/blog/apache-virtual-hosting-with-different-users/

А зачем он?
Файлы по SSH перекидывать можно (scp, …).
Код сайта лучше хранить в Git репозитории, редактировать локально, на сервер загружать либо например (самое простое, для начала) через git pull вручную на сервере, либо настроить, чтоб автоматически при push в определенную ветку (master, …).

https://guides.hexlet.io/git-guide/
https://guides.github.com/introduction/git-handbook/
https://docs.github.com/en/github/getting-started-with-github

Нужно пробовать с оф. документации начинать, бывает, что там и без блогов всё понятно )
Ну и сверяться с ней.
Или с каких-то известных источников.

:man_shrugging: Смотря что достичь надо.
Это установит владельцами юзера игорь и группу www-data. И еще chmod указывает какие права у юзера/группы/остальных.

Если хакер проник в систему, то его это не остановит. system(“sudo su”); и он с рутом. И всё потому, что в Линуксе права на процессы насследуются.

Этой строчкой Вы отменяет предыдущую, которая не нужна.
R - почему большая?

Это вообще не правильно.

Там нет маленькой )

chown --help

-R, --recursive operate on files and directories recursively

Для chmod кстати наверно тоже надо.

Почему? :thinking:

Что-то не понял откуда тут руту взяться.

image

Если б так было можно, то в правах не было бы никакого смысла )

Что именно не так?

Про ftp - да, можно и по ssh, но я решил потом не лазить на сервер, а сделать закачку фоток по ftp.

Поскольку я решил сделать каждому сайту своего юзера, то столкнулся с вопросом. Надо создать имя 100. Но adduser отказался делать с таким именем, предложил поменять правила. Зато useradd 100 сработало. Вот и возник вопрос - либо так оставить, хотя советуют adduser, либо покопаться в правилах, чтобы сработало adduser 100 ?

Да, как делать сервак для одного сайта понятно, а вот для нескольких сайтов уже многое умалчивается. Есть гений, который сайты на Debian 7 перенес в папку /home (типа для безопасности), не знаю не знаю…

А зачем такое странное имя?)

Это вроде бы может вызвать проблемы.
например https://unix.stackexchange.com/a/287079/360458

Some commands (eg chown ) can accept either a username or a numeric user ID, so allowing all-numeric usernames would break that.

A rule to allow names that start with a number and contain some alpha was probably considered not worth the effort; instead there is just a requirement to start with an alpha character.

А что за фотки? Откуда они и для чего на сервере?
Вручную перекидывать по фтп это ж всё равно “лазить” )
В зависимости от задачи я б поискал другие способы, автоматически синхронизировать чем-нибудь и т.д. Например Syncthing интересная и простая в использовании штука.

Это сайт японской техники на 100 вольт, потому и пришлось такое оставить, чтобы не путаться. Ах ёла )

Ммм… похоже что да. Ну как это называется тогда? Например, на сайте жму кнопку “Выбрать файл”, и кидаю на сайт с компа. В хтмл тег называется вроде бы инсерт, а вот ftp меня даже немного озадачил, но я сейчас в него не вникаю, и так обхожусь без него - кидаю по ssh.

Ну так от задачи зависит.
Но сейчас вряд ли для чего-либо есть смысл использовать FTP (точнее скорее FTPS, в FTP нет шифрования). Проще SCP/SFTP. GUI для них тоже полно: WinSCP, …

Есть только <input type="file"> )

Точно ) А я вот вспоминаю, вроде не так написал, давно не лазил в html )