Права доступа к файлам и директориям в UNIX

Одной из сложных задач для начинающего веб-разработчика является правильное использование chmod для установки прав доступа к файлам на UNIX и Linux веб-серверах. Вы должны установить правильные права на CGI скрипты, чтобы не появлялись эти ужасные сообщения «500 Server Error». В этом руководстве, мы собираемся объяснить концепцию прав, и показать вам как устанавливать права используя FTP утилиты или при помощи Telnet.

[Disclaimer: Данная статья была переведена в рамках «Конкурса на лучший перевод статьи» на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]

Что такое права?

На веб-сервере UNIX, каждый отдельный файл и папка, хранящиеся на жестком диске имеет ряд прав, связанных с ним, в котором говорится, кто и что может делать с файлом. У каждого файла (и папки) также есть «владелец» и «группа» связанная с ним. Если вы создали файл, то как правило владельцем файла являетесь вы и ваша группа, или группе связанной с директорией в которой вы создали файл.

Кто может изменять права?

Есть три типа пользователей которые имеют доступ к файлам — Владелец файла, члены Группы, владеющей файлом и Остальные (все прочие). В UNIX эти 3 типа пользователей обозначаются буквами U (для Владельца, или Юзер), G (для Группы), и O (для Остальных).

Какие права можно устанавливать?

Есть три основных прав доступа котороые могут быть применены к файлам и директориям:

  1. Вы можете читать содержимое файлов. Для каталогов — просматривать перечень имен файлов в каталоге.
  2. Вы можете писать (или изменять) файл. Для каталогов — создание и удаление файлов из директории.
  3. Вы можете исполнять (запускать) файлы, если это бинарные программы или скрпты. Для каталогов — иметь доступ к файлам в директории.

Что означают все эти буквы и цифры?!

Здесь мы рассмотрим основы. Как вы можете заметить их не так уж и много на самом деле!

Путаница часто происходит, когда Вам надо сделать установку прав на сервере. Для CGI скриптов необходимо устанавливать права что-то вроде «Chmod 755» или «Убедитесь, что файл является исполняемым». Кроме того, при использовании FTP или SSH, вы увидите множество забавных букв рядом с файлами (например, rwxrw-rw). Сейчас мы объясним, что означают эти иероглифы!

Когда вы подключаетесь по FTP на ваш веб-сервер, вы вероятно увидите что-то типа этого возле каждого файла и папки:

drwxrwxrwx

Эта последовательность букв drwxrwxrwx означает права, установленные для этой папки (заметим, что их часто называют атрибутами FTP программы). Давайте разберем, что каждая из этих букв означает:

d         r    w     x       r    w     x       r    w     x
Owner Group Other
Directory Read Write Execute Read Write Execute Read Write Execute

Как вы можете видеть, последовательность букв разделяется на 3 колонки по 3 буквы каждая, обозначающие каждый из типов пользователей (владелец, члены группы, и все остальные).

Существует также и буква «d» атрибут слева, который говорит нам о том, что данный объект является директорией.

Если любая из этих букв заменена на дефис (-), то это означает, что разрешение не установлено. Например:

drwxr-x--x 

Директория, у которой есть права на чтение, запись и исполнение для владельца, чтение и выполнение для группы и только выполнение для всех остальных.

-rw-rw-rw-

Файл, который может быть прочитан и изменён всеми, но не исполняем ни для кого.

-rw-r--r-- 

Файл который может прочитать и изменить пользователь, а прочитать только пользователи группы и остальные пользователи.

Использование чисел вместо букв

Как мы уже раньше говорили, вас будут часто просить установить права с помощью чисел таких, как «set 755 permissions». Что означают эти цифры?

Каждое из трех чисел соответствует каждой букве (r w x) о которых мы говорили ранее. Иными словами, первое число определяет права для владельца, второе число определяет права для группы, а третье число определяет права для всех остальных.

Каждое число может принимать одно из восьми значений в диапазоне от 0 до 7. Каждое значение соответствует определенным правам на чтение, запись и выполнение «, как указано в этой таблице:

Number     Read(R)     Write(W)     Execute(X)
0 No No No
1 No No Yes
2 No Yes No
3 No Yes Yes
4 Yes No No
5 Yes No Yes
6 Yes Yes No
7 Yes Yes Yes

Для примера:

777 =  rwxrwxrwx
755 = rwxr-xr-x
666 = rw-rw-rw-
744 = rwxr--r--

Настройка разрешений

Два самых распространённых способа установить разрешения на файлы и папки это с помощью FTP или SSH. Давайте рассмотрим первым FTP.

Установка разрешений с помощью FTP

С помощью FTP вы сможете установить права на ваши файлы, выбрав файл (в отдельном окне) и правой кнопкой мыши выбрать необходимые вм опции, такие как CHMOD или Set permissions или же выбрав в меню пункт CHMOD / Set permissions.

Как видите, довольно легко установить или убрать права на чтение, запись и выполнение для владельца, группы и других, используя флажки. Кроме того, вы можете ввести в эквиваленте 3-значный номер, если вы уже знаете как (см. предыдущий раздел). Все очень просто!

Установка разрешений с помощью SSH

Другой распространенный способ установить разрешения на файлы с помощью SSH (или консоли). Это в целом быстрее, если вы хотите изменить права на большое количество файлов одновременно (например, изменение всех. CGI файлов в папке только на вполнение).

После того, как вы подключитесь по SSH к вашему серверу, и залогинетесь в систему, перейдите в папку, содержащую файлы, которые вы хотите изменить, например:

cd mysite/cgi-bin 

Использование буквенного способа

Вы можете использовать буквы u (владелец / пользователь), g (группы) и o (другие), чтобы установить разрешение для каждого из типов пользователей, а также r (чтение), w (запись) и x (выполнение) для установки прав.

Вы также можете использовать «a» вместо u, g и o, что является синонимом для всех пользователей (u, g, o).

Вы можете назначить разрешения, используя либо знак плюс (+), которое означает «добавить эти права», знак минус (-), что означает «удалить эти разрешения», или знак равенства (=), что означает «изменить разрешения для конкретного случая «. Например:

chmod a+x formmail.cgi добавляет разрешение на выполнение для всех пользователей в файле formmail.cgi (другими словами, делает исполняемый файл).

chmod u=rwx formmail.cgi чтение, запсь и выполнение для владельца (разрешений для группы и для других остаются без изменений).

chmod go-w formmail.cgi удаляет запись для группы и для других, в результате чего разрешения владельца остаются неизменными.

Проверка разрешений

Вы можете проверить разрешения на все файлы и папки в текущей директории с помощью команды:

ls -l

Это покажет Вам разрешение для каждого файла и папки, так же, как и FTP программы.

Happy CHMOD’ing!

———-
Оригинальный текст статьи: Understanding Permissions (UNIX)

ISPmanager 5 на домене

Скопировано отсюда чтоб не забыть

https://doc.ispsystem.ru/index.php/Настройка_адреса_панели_управления
Ответ от поддержки
Для ISPmanager Lite можно настроить проксирование вручную при помощи следующей документации:
https://doc.ispsystem.ru/index.php/Настройка_адреса_панели_управления

Для ISPmanager Business начиная с версии 5.138 это можно сделать в настройках www-домена, включив у него "Nginx-прокси" и "Проксировать запросы в панель":
https://doc.ispsystem.ru/index.php/Nginx-прокси#.D0.9E.D0.B1.D0.BD.D0.BE.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_ISPmanager_.D0.B4.D0.BE_.D0.B2.D0.B5.D1.80.D1.81.D0.B8.D0.B8_5.138.0


Настройка адреса панели управления

Иерархия:COREmanager

Программные продукты ISPsystem 5-го поколения работают через встроенный веб сервер — ihttpd. ihttpd не имеет понятия «виртуальный сервер», то есть не может различать запросы по полю “Host” заголовка запроса. Все полученные запросы ihttpd передает ядру программного продукта.

За счет этого панель управления будет доступна по любому домену, который разрешается в ip адрес, где слушает ihttpd.

Например, на сервере ihttpd прослушивает адрес 10.10.10.10 и порт 1500. Если направить домен domain.com в днс на 10.10.10.10, то по адресу https://domain.com:1500/ будет открываться панель управления.

Nginx

При необходимости можно настроить чтобы панель управления работала через связку Nginx + ihttpd.

Для этого в файл конфигурации nginx добавляем server.

server {
	listen 10.10.10.10:443;
	server_name 10.10.10.10;
	ssl on;
	ssl_certificate /usr/local/mgr5/etc/manager.crt;
	ssl_certificate_key /usr/local/mgr5/etc/manager.key;
        client_max_body_size 20m;
 
	set $mgr_proxy "https://10.10.10.10:1500";
 
        location ^~ /manimg/ {
 		alias /usr/local/mgr5/skins/;
 	}
 	location / {
 		proxy_pass $mgr_proxy;
 		proxy_redirect $mgr_proxy /;
 		proxy_set_header Host $host:$server_port;
 		proxy_set_header X-Forwarded-For $remote_addr;
 		proxy_set_header X-Forwarded-Proto $scheme;
 		proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Secret <произвольный набор символов>;
  		chunked_transfer_encoding off;
  	}
 
 	location ^~ /mancgi/ {
 	        proxy_pass $mgr_proxy;
 	        proxy_redirect $mgr_proxy /;
 	        proxy_set_header Host $host:$server_port;
 	        proxy_set_header X-Forwarded-For $remote_addr;
 	        proxy_set_header X-Forwarded-Proto $scheme;
 	        proxy_set_header X-Real-IP $remote_addr;
 	        proxy_set_header X-Forwarded-Secret <произвольный набор символов>;
 	        chunked_transfer_encoding off;
 	}
 }

Директива client_max_body_size указывает, какого размера файла nginx сможет передать в панель (например это нужно для работы «Менеджера файлов» в ISPmanager). Укажите здесь нужное значение

В файл конфигурации COREmanager и в файл конфигурации панели управления следует добавить директиву ForwardedSecret.

Например:

ForwardedSecret mary123

ForwardedSecret — набор букв и цифр, которые представляют собой ключ, необходимый для того, чтобы ihttpd доверял запросам от nginx`у и писал в лог панели IP адрес клиента, а не сервера. Без данной директивы, любой будет иметь возможность подключиться к ihttpd и указать произвольный адрес клиента в запросе. Другими словами, ForwardedSecret необходим для защиты от подмены ip адреса клиента.

Обратите внимание, секретная фраза, указанная в файле конфигурации nginx (директива proxy_set_header X-Forwarded-Secret) должна совпадать с фразой, указанной в файлах конфигурации панелей управления (директива ForwardedSecret).

После выполнения изменений не забудьте перезапустить nginx и панель управления. Перезапустить панель управления можно командой

killall core

SPDY

Если используется spdy протокол, то для корректной работы следует добавить директивы

proxy_set_header User-Agent $http_user_agent;
proxy_set_header Accept $http_accept;
proxy_set_header Accept-Language $http_accept_language;
proxy_set_header ISP-Client $http_isp_client;
proxy_set_header Referer $http_referer;
proxy_set_header Content-Type $http_content_type;
proxy_set_header Cookie $http_cookie;
proxy_set_header Pragma $http_pragma;
proxy_set_header Cache-Control $http_cache_control;
proxy_set_header Accept-Encoding $http_accept_encoding;
RAW Paste Data

Apache

Возможно настроить работу панели управления через Apache с проксированием на ihttpd.

В Apache должны быть подключены модули:

  • proxy_module
  • proxy_connect_module
  • proxy_http_module

В файле конфигурации Apache создаем VirtualHost:

<VirtualHost 10.10.10.10:80>
        ServerName domain.com
        ServerAlias www.domain.com
        Redirect / https://domain.com/
</VirtualHost>
 
<VirtualHost 10.10.10.10:443>
        ServerName domain.com
        ServerAlias www.domain.com
 
        SSLProxyEngine on
        SSLProxyVerify none
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off
 
        SSLEngine On
        SSLCertificateFile /usr/local/mgr5/etc/manager.crt
        SSLCertificateKeyFile /usr/local/mgr5/etc/manager.key
 
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyVia full
 
        RequestHeader set X-Forwarded-Secret <произвольный набор символов>
        RequestHeader set X-Forwarded-For $remote_addr
 
        <proxy *>
        Order deny,allow
        Allow from all
        </proxy>
 
        ProxyPass / https://10.10.10.10:1500/
        ProxyPassReverse / https://10.10.10.10:1500/
</VirtualHost>

Чтобы применить конфигурацию Apache:

 apachectl graceful

В файл конфигурации COREmanager и панели упавления добавляем директиву ForwardedSecret.

Например:

ForwardedSecret mary123

Значение ForwardedSecret в файле конфигурации панели и COREmanager должно совпадать со значением, указанным в директиве RequestHeader set X-Forwarded-Secret , что в файле конфигурации Apache.

После изменений в файлах конфигурации COREmanager и панели управления, необходимо перезапустить панель командой

killall core

Для правильной работы с SSL-сертификатом панели в конфигурационном файле /usr/local/mgr5/etc/ihttpd.conf нужно прописать информацию о сертификате:

listen {
        ip 10.10.10.10
        redirect
        sni {
                domain_cert /usr/local/mgr5/etc/manager.crt
                domain_key /usr/local/mgr5/etc/manager.key
                domains domain.com
        }
}

По материлам syrog.ru

Ошибка 404 при заходе на phpmyadmin nginx

Нужно добавить в конфигурацию домена


include /etc/nginx/vhosts-includes/*.conf;
include /etc/nginx/vhosts-resources/домен.info/*.conf;

Бекап всей системы CentOS 7

Как сделать бэкап всей системы в CentOS

Если вам нужно создать backup всей вашей системы, то необходимо выполнить команду:

tar cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /

Этой команды хватит чтобы создать бекап.

Поговорим о том что же в этой команде написано:
1. Запускаем команду от рута и создадим так званый тарбол (утилита tar с опцией «c») и заархивируем его в архив gz (опция «z»). С опцией «–exclude» исключим из нашего архива все системные папки и файлы устройств и наш архив (чтобы он рекурсивно не начал запаковывать сам в себя). По окончанию, получим в корневой директории наш cжатый архив системы в файле backup.tgz.

Восстанавливаем из бекапа

Бекап мы то сделали, но наверное нужно еще и научится разворачивать его.Как это сделать? Ну, для начала, нужна будет всё-таки работающая система. Можно выполнить установку системы или просто загрузиться с Live CD/DVD). Я буду думать, что у всех есть уже готовая установленная и готова к работе система на которой хотим сделать развертку нашего архив backup. Для этого необходимо выполнить команду:

tar xvpfz /backup.tgz -C /

На этом тема «как сделать бэкап всей системы в centos» завершена.

По материалам 100.org.ua