Рассматриваемая сегодня команда по умолчанию имеется во всех дистрибутивах Linux, поэтому мы не будем устанавливать какие-либо рамки в плане сборок. Дополнительно отметим, что df выводит не только количество свободного места, но и название томов вместе с точками монтирования, что делает ее более функциональной. Теперь, когда вы знаете все о предназначении данной утилиты, рассмотрим подробнее ее синтаксис. Сразу отметим, что он довольно простой, и если вы планируете задействовать df на постоянной основе, потребуется всего несколько практических занятий, чтобы освоить все аргументы и опции.
Как пользоваться df
Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать:
df
Утилита отображает стандартный набор колонок, но понять в ее выводе что-то с первого раза сложно. Все данные выводятся в килобайтах. Теперь давайте попросим утилиту выводить данные в более читаемом формате:
df -h
Это самое популярное сочетание опций, потому что оно дает максимально понятную информацию и уже можно судить о том, что происходит на диске. Например, мы видим, что в домашней папке уже занято 87% места и, возможно, пора что-то удалить. Если задать опцию -a, вы можете получить информацию обо всех файловых системах известных ядру, которые были смонтированы:
df -a
Здесь отображается огромное количество виртуальных файловых систем ядра. Если вы хотите вывести только информацию про реальные файловые системы на жестком диске можно использовать опцию -x чтобы отфильтровать все tmpfs:
df -x tmpfs
Также можно отфильтровать две файловые системы:
df -x devtmpfs -x tmpfs
Или же указать файловую систему, которую нужно отображать:
df -t ext4
Также можно указать интересующий вас раздел, как вы видели в синтаксисе команды:
df -h /dev/sdb6
С помощью опции -i вы можете посмотреть информацию про состояние inode в вашей файловой системе:
df -hi /dev/sdb6
Видео, о том, как пользоваться утилитой df:
Стандартное действие команды
Как известно, практически все команды в Линукс отвечают за выполнение каких-то операций, если ввести их без дополнительных опций. К сегодняшней утилите это тоже относится. По сути, она выводит на экран всю необходимую информацию, однако прочесть ее быстро будет проблематично. Впрочем, давайте вкратце рассмотрим, как это выглядит.
Для начала, соответственно, придется запустить «Терминал». Сделайте это удобным для себя образом, например, через меню приложений или стандартную горячую клавишу Ctrl + Alt + T.
Здесь введите df и нажмите на Enter. Эта утилита корректно функционирует даже без прав суперпользователя, поэтому можно обойтись без аргумента sudo.
Через несколько секунд вы увидите множество строк, отображающих сведения о монтированных файловых системах и дисках. Обратите внимание на столбцы, чтобы понимать, какой из них за что отвечает.
Как заметно на предыдущем скриншоте, каждый показатель отображается в байтах, что и усложняет общее восприятие таблицы. Дополнительно отсутствует какая-либо фильтрация по файловым системам и устройствам. Именно поэтому и необходимо использовать отдельные опции, чтобы повысить комфорт взаимодействия с рассматриваемой утилитой.
Основные опции df
Как уже было сказано ранее, работать с df без опций можно, но это не принесет должного результата для тех, кто желает моментально получить интересующую информацию, поэтому и следует разобраться с синтаксисом. В нем нет ничего сложного, а все аргументы можно описать таким образом:
-a, –all. Этот аргумент следует вписывать только в том случае, если вы заинтересованы в отображении абсолютно всех существующих файловых систем, включая виртуальные, недоступные и эмуляторы.
-h обязателен к применению при желании получить сведения о размерах не в байтах, а в мегабайтах или гигабайтах.
-H — при этой опции мегабайты будут опускаться, а все размеры сформатируются в гигабайты.
-k — данная опция используется реже остальных, поскольку является заменой -h и -H и показывает цифры в килобайтах.
-P пригодится тем пользователям, кто заинтересован в получении информации формата POSIX.
-t, –type — это одна из опций-фильтров. Укажите -t, а затем введите название файловой системы, чтобы в результатах отображались только строки, связанные с ней.
-x функционирует примерно так же, но по методу исключения. Введенные файловые системы после этого аргумента отображаться не будут.
–output. На предыдущем скриншоте видно, что все сведения показываются в столбцах. Некоторые из них не нужны пользователю, в таком случае применяется данная опция. Используйте варианты ‘pcent’, ‘fstype’, ‘itotal’, ‘iused’, ‘iavail’, ‘source’, ‘size’, ‘used’, ‘ipcent’, ‘avail’, ‘target’, ‘pcent’ и ‘file’, чтобы составить собственные столбцы.
Теперь вы знаете абсолютно обо всех опциях, использующихся при написании рассматриваемой команды. Существует вариант с указанием конкретного раздела или диска, но об этом мы поговорим немного позже. Сейчас давайте более детально разберемся с каждым аргументом.
Начнем с упрощения читаемости полученных результатов. Для этого введите df -h, чтобы отобразить строки в гигабайтах или мегабайтах, о чем уже было сказано ранее.
Ознакомьтесь с появившимися строками. Как видите, таблица действительно стала понятнее.
Далее можно написать df – a, если хотите показать даже недоступные и виртуальные файловые системы.
Исключите одну ФС через df -x tmpfs.
Если необходимо создать фильтр сразу для нескольких файловых систем, придется писать каждую опцию отдельно, что выглядит так: df -x devtmpfs -x tmpfs.
Теперь затронем и отображение только выбранной системы. Для этого применяется опция -t, а команда имеет примерный вид df -t ext4, если речь идет о ФС ext4.
По текущему запросу вывелась только одна строка.
Ничего не помешает вам активировать сразу несколько опций, если это необходимо. Достаточно будет просто вводить их последовательно, отделяя пробелом так, как это было показано при массовом фильтре файловых систем.
Взаимодействие с разделами и дисками
Выше мы не уточнили одну важную деталь, поскольку решили вынести ее в отдельный раздел и рассказать подробнее. Дело в том, что к df можно применять не только опции, но и указывать определенные логические тома или жесткие диски. Тогда синтаксис обретает вид df + опции + устройство. Обратите внимание на скриншот ниже: там указана команда df -h /dev/sda1. Это означает, что при активации будет выведена информация в читабельном виде о файловой системе /dev/sda1. Если вы еще не знаете название своего диска, напишите просто df -h и определите его, отталкиваясь от свободного или общего пространства.
Сегодня вы узнали о стандартной утилите под названием df. Это довольно полезный инструмент, позволяющий быстро просмотреть список весь дисков и размер свободного пространства на них, применяя определенные опции. Если вас заинтересовала тема популярных команд в Linux, воспользуйтесь представленным по следующей ссылке руководством.
Команда du – синтаксис и опции
Disk Usage – именно так интерпретируется название команды du. Она была написана ещё в самой первой версии UNIX (в определённом роде предшественницы Linux), еще в стенах одной из лабораторий компании AT&T. Этот факт даёт понять, насколько важно следить за дисковым пространством, а также анализировать его при наличии специализированных программных инструментов, ведь du – одна из самых первых утилит из стандартного комплекта UNIX/Linux.
Итак давайте узнаем что у нас занимает место
du –max-depth=1 -h /
Более подробное описание команды du и ключей вы можете прочитать ниже. Вывод будет следующий
Отсюда мы видим что самый большой каталог у нас /var. Посмотрим что у на занимает место в каталоге /var
du –max-depth=1 -h /var
видим что это папка log
Теперь смотрим /var/log
du -ah /var/log
и вот здесь мы уже видим пять самых больших файлов с логами, именно они и заняли все место на диске. Давайте рассмотрим команду du подробнее.
Согласно описанию из официального man-руководства, утилита du суммирует использование дискового пространства набора элементов, рекурсивно с каталогами. Синтаксис команды не простой, а очень простой, поскольку представляет собой классический прототип команды Linux:
du [КЛЮЧ]… [что сканировать]…
Если дать команду du без параметров, то по-умолчанию будет выведен список всех каталогов и подкаталогов для текущего каталога. Также по-умолчанию единицей измерения объёма является 1024 байта или 512 байт, в зависимости от конфигурации используемой системы:
du code_text.txt 4 code_text.txt
Как видно, code_text.txt занимает 4 килобайта (т. к. 1024 байта = 1 килобайт) дискового пространства. То же самое и с папками, но по-умолчанию будет указан общий размер папки без детализации по файлам и подкаталогам. В следующей таблице приведены опции команды du:
Опция
Назначение
-a
Выводит объём для всех элементов, а не только для каталогов
—apparent-size
Выводит действительные размеры, но не занимаемое место а диске
-B,
—block-size=РАЗМЕР
Задаёт использование определённых единиц измерения объёма
-b,
—bytes
То же самое, что и «—block-size —apparent-size=1»
-с,
—total
Выводит общий результат
-D,
—dereference-args
Указывает обрабатывать только те символьные ссылке, которые перечислены в командной строке
-d, —max-depth=N
Выводит общий размер только до N-го уровня (включительно) дерева каталогов
-h,
—human-readable
Выводит размеры в удобном для человека виде
-k
Эквивалентно —block-size=1K
-L,
—dereference
Разыменовывает символьные ссылки
-l,
—count-links
Складывает размеры, если несколько жёстких ссылок
-m
Эквивалентно —block-size=1M
-t,
—threshold=РАЗМЕР
Исключает элементы, которые меньше РАЗМЕРА, если это значение положительно или размер которых больше, если это значение отрицательно
—time
Выводит время последнего изменения в каталоге и во всех подкаталогах
—time=АТРИБУТ
Выводит указанный атрибут времени (atime, access, use, ctime, status), а не время последнего изменения
—time-style=СТИЛЬ
Выводит время в указанном в СТИЛЬ формате: full-iso, long-iso, iso
-X,
—exclude-from=ФАЙЛ
Исключает все эдементы, которые совпадают с шаблоном из ФАЙЛа
—exclude=ШАБЛОН
Исключает элементы, совпадающие с шаблоном
-x,
—one-file-system
Пропускать каталоги из других систем
Используемые командой du единицы измерения размера (или объёма) задаются в формате «цифраБуква», где цифра — это коэффициент, а Буква — степень единицы измерения, например: 5K = 5 * 1024 = 5120 = 5 килобайт и по аналогии для M – мегабайт, G – гигабайт.
Примеры использования команды du
Узнать общий размер каталога (например с резервными копиями):
$ du -sh ~/home/backups 19G /home/john/backups
Вывод размеров всех подкаталогов (рекурсивно):
$ du -h ~/home/backups/ 3,2M /home/john/backups/vhosts/ssl 1,5M /home/john/backups/vhosts 5,0M /home/john/backups
С фильтрацией в зависимости от размера файла/каталога:
$ du -ha -t2M ~/home/backups/ 3,2M /home/john/backups/vhosts/ssl 5,0M /home/john/backups
Как видно, были отброшены файлы/каталоги размером меньше 2 мегабайт. Следующая команда, напротив — исключит из вывода только файлы/каталоги больше 2 мегабайт:
$ du -ha ~/home/backups/ 4,0K /home/john/backups/.directory 764K /home/john/backups/scheme.txt 1,5M /home/john/backups/vhosts
Свободное место на диске (df)
Для просмотра свободного и занятого места на разделах диска в Linux можно воспользоваться командой df.
Первым делом можно просто ввести команду df без каких-либо аргументов и получить занятое и свободное место на дисках. Но по умолчанию вывод команды не очень наглядный — например, размеры выводятся в КБайтах (1К-блоках).
Примечание: df не отображает информацию о не смонтированных дисках.
Размер конкретного диска
Команде df можно указать путь до точки монтирования диска, размер которого вы хотите вывести:
df -h /dev/sda9 Файл.система Размер Использовано Дост Использовано% Cмонтировано в /dev/sda9 174G 25G 141G 15% /
Размер папок на диске (du)
Для просмотра размеров папок на диске используется команда du. Если просто ввести команду без каких либо аргументов, то она рекурсивно проскандирует вашу текущую директорию и выведет размеры всех файлов в ней. Обычно для du указывают путь до папки, которую вы хотите проанализировать. Если нужно просмотреть размеры без рекурсивного обхода всех папок, то используется опция -s (–summarize). Также как и с df, добавим опцию -h (–human-readable).
Размер конкретной папки:
du -sh ./Загрузки 3,4G ./Загрузки
Размеры файлов и папок внутри конкретной папки:
du -sh ./Загрузки/* 140K ./Загрузки/antergos-17.1-x86_64.iso.torrent 79M ./Загрузки/ubuntu-amd64.deb 49M ./Загрузки/data.zip 3,2G ./Загрузки/Parrot-full-3.5_amd64.iso 7,1M ./Загрузки/secret.tgz Войдите, чтобы ставить лайкимне нравитсяЛайков: 0 войдите, чтобы ставить лайки
Отсортировать папки по объёму
du -s *| sort -nr
Покажет объём в килобайтах с сортировкой – самые большие папки/файлы сверху. Если нужно в мегабайтах:
du -sm *| sort -nr
К сожалению более удобный ключик h (“human” – автовыбор кило-мега-гига) в данном случае (du -sh *| sort -nr) не подойдёт, т.к. сортировка идёт по “числам” (не учитывая, что это KB/MB/GB). Для этого придётся использовать длинную команду:
du -s *|sort -nr|cut -f 2-|while read a;do du -hs $a;done
linux
Недавно добавленные
Как изменить пользователя для сайта и базы данных в VestaCP
Как изменить пользователя для сайта и базы данных в VestaCP
linux
VestaCP
Размеры папок и дисков в Linux. Команды df и du
Для просмотра свободного и занятого места на разделах диска в Linux можно воспользоваться командой df. Для просмотра размеров папок на диске используется команда du.
linux
Как обновить ImageMagick с 6.7 до 7.0 в Centos 7
В этом руководстве мы покажем вам, как обновить ImageMagick с 6.7 до 7.0 в Centos 7
Centos
ImageMagick
Регулярное выражение. Валидация номера телефона
Как проверить номер мобильного телефона? Проверка правильности, введенного номера телефона является не сложной, но важной задачей. Если пользователь введет некорректный номер, то смс сообщение до него не дойдет.
Регулярные выражения
PHP
примеры
Регулярные выражение для поиска IP адресов
Ниже представлены регулярные выражения, которые помогут найти все IP адреса в строке.
Данные регулярные выражения соответствуют шаблонам IPv4 и IPv6 адресов.
Какую бы методологию процессов разработки вы не использовали (водопадную, гибкую или их производные), GitLab эффективно поддержит любую модель коллективной работы. Делайте наглядным, используйте приоритеты, координируйте и отслеживайте ваш прогресс с помощью гибких инструментов управления проектами GitLab.
Разработка: Эффективно и безопасно пишите код в команде.
Консолидируйте исходный код в одной распределеной среде контроля версий, которой просто и эффективно управлять и поддерживать, не нарушая процессы разработки. Git репозиторий GitLab поставляется с полным набором инструментов для управления ветками и доступом к проектам, предоставляя единую надежную достоверную среду совместного доступа к коду и проектам.
Тестирование: Поставляйте софт качественнее и быстрее.
Находите ошибки раньше и сокращайте цикл исправлений с помощью инструментов ревью кода, тестирования кода, оценки качества кода и ревью приложений. Настраивайте свою собственную модель приемки качества, автоматически тестируйте код и устанавливайте изменения в среды тестирования с каждой модификацией кода. Компонента непрерывной интеграции GitLab – это самая популярная система тестирования нового поколения с автоматическим масштабированием для поддержки высокой проивзодительности тестирования.
Сборка: Управляйте различными образами контейнеров с легкостью.
Репозиторий контейнеров GitLab CI позволяет организовать безопасное хранилище кастомных образов контейнеров Docker без необходимости использования каких-либо дополнительных инструментов. Функции загрузки и скачивания образов GitLab CI интегрированы среду управления репозиторием Git.
Релиз: Минимизируйте сложность установки релиза со встроенными возможностями непрерывной доставки.
Не тратьте драгоценное время на конфигурацию и подготовку релиза поставки. Не важно, устанавливаете ли вы свой релиз на один сервер или на тысячу, встроенные компоненты GitLab поддержки технологий непрерывной доставки и развертывания помогут вам автоматизировать действия по сборке, автотестированию и установке релизов.
Конфигурация: Автоматизируйте управление конфигурацией
Автоматизируйте полный цикл разработки приложения от сборки до установки и мониторинга. Готовые шаблоны моделей с лучшими практиками AutoDevOps помогут вам сразу же начать работу без длительной конфигурации GitLab. Затем добавьте специфику вашего приложения в настройки каждого шага по сборке и развертыванию.
Мониторинг: Анализируйте свои мощности по разработке и мониторьте производительность приложений.
Измеряйте сколько времени у вас уходит на каждый этап разработки. Проверяйте, что ваше приложение всегда доступно и штатно функционирует. GitLab собирает и показывает множество метрик по вашим приложениям с использованием известного сервиса Prometheus, что позволяет реально увидеть как изменения в коде отразились на производительности промышленной среды.
1. Создание аккаунта
Для начала, зарегистрируемся на сайте GitLab. Для этого нужно перейти на вкладку Register, которая находится в правой части экрана. Появится форма, где нужно будет ввести имя, логин, электронную почту.
Далее вы получите на почту сообщение, где будет находиться ссылка для подтверждения аккаунта. После перехода по ней появится форма авторизации.
Путём ввода пароля и логина вы окажетесь на главной странице вашего профиля на GitLab. Сначала это будет страница приветствия, но позже здесь появится перечень ваших Git-репозиториев.
2. Создание репозитория
Чтобы добавить проект GitLab кликните по значку + по центру верхней панели и выберите New Project:
Здесь вам нужно ввести имя репозитория, его описание, а также выбрать уровень доступа:
Private – доступен только вам;
Internal – доступен всем зарегистрированным пользователям;
Public – доступен абсолютно всем.
Ещё вы можете установить галочку напротив Инициализировать репозиторий файлом README, но если вы хотите залить сюда файлы из уже существующего репозитория, делать этого не следует:
После нажатия на кнопку Create repo вы попадаете на страницу репозитория. Здесь GitLab уже предлагает первоначальный набор действий, чтобы проиниализировать ваш репозиторий. Например, вы можете создать здесь файлы или загрузить сюда файлы из вашего компьютера.
4. Загрузка файлов проекта
Давайте создадим новый локальный репозиторий на компьютере и загрузим его содержимое на GitLab. Для этого создайте папку репозитория, например, test-repo и инициализируйте в ней новый репозиторий командой git:
mkdir test-repo && cd test-repo
git init
Затем давайте создадим файл test.txt:
vi test.txt
This is test losst repo
И зафиксируем изменения:
git add test.txt git commit -m “Inital commit”
Дальше нам нужно добавить наш удаленный репозиторий с GitLab к нашему локальному. Для этого выполните:
Затем отправляем изменения в удаленный репозиторий:
git push origin master
Для отправки данных нужно ввести ваш логин и пароль на GitLab. Теперь, если вы обновите страницу репозитория на GitLab, то увидите там наш файл:
Важно отметить, что если удаленный репозиторий не пуст, то у вас не получиться так сделать. Вам нужно будет сначала скачать удаленный репозиторий, слить локальные изменения с ним, а потом уже отправить всё назад.
5. SSH ключи
Во время загрузки данных репозитория на GitLab нам нужно было ввести логин и пароль на сервере. Чтобы этого избежать можно использовать SSH ключи для авторизации. Сначала вам нужно создать такой ключ. Для этого откройте терминал и выполните:
ssh-keygen
Введите путь к файлу, куда нужно сохранить ключ, а пароль оставьте пустым. Будут созданы два файла – открытый ключ с расширением .pub и закрытый. Вам нужен открытый. Откройте его в текстовом редакторе и скопируйте его содержимое в буфер обмена:
vi /home/sergiy/.ssh/id-gitlab
Далее возвращайтесь к интерфейсу GitLab кликните по иконке профиля и выберите Settings:
Здесь на левой панели найдите пункт SSH Keys. В этом окне найдите поле Key и вставьте туда скопированный ключ. Далее сохраните изменения. Теперь ваш ключ добавлен:
Далее вернитесь в ваш репозиторий, найдите в правом верхнем углу кнопку Clone и кликните по ней. Нас интересует адрес Clone with SSH:
Возвращаемся к нашему локальному репозиторию, удаляем адрес https и добавляем ssh:
Настройка ssh GitLab завершена. Теперь все действия будут выполняться по SSH и у вас не будет необходимости вводить логин и пароль.
6. Ветки репозитория
Разберем использование gitlab для работы с ветками. По умолчанию у репозитория есть только одна ветка – это master. Но для реализации дополнительных функций разработку можно выносить в отдельные ветки. В интерфейсе GitLab ветки отображаются слева. Здесь можно выбрать нужную ветку:
Создать новую ветку можно кликнув по значку плюс и выбрав New branch. Но это не обязательно, так как если вы создадите ветку в git и зальете изменения в репозиторий, то ветка появится там автоматически.
Чтобы изменить ветку по умолчанию откройте Settings -> Repository, а потом просто выберите нужную ветку в разделе Default branch:
6. Слияние веток
Поскольку у нас есть ветки и в них разрабатывается функциональность может возникнуть необходимость перенести её из одной ветки в другую. Для этого используются запросы слияния (Merge request gitlab). Давайте добавим ветку new-feature, а в ней создадим файл new-feature с текстом:
Теперь, когда мы перейдем в новую ветку через интерфейс GitLab появится кнопка Create merge request. Нажмите на неё:
Здесь нужно написать описание Merge Request, который вы создаете, выбрать ветку источник и ветку цель. Также можно выбрать пользователя, которому будет оправлено уведомление о созданном запросе:
Далее запрос на слияние нужно одобрить. Вы можете посмотреть изменения нажав кнопку Open IDE или через терминал:
Далее просто нажмите кнопку Merge, если хотите слить ветки. Файлы ветки источника заменят файлы в ветке преемника, поэтому будьте осторожны, чтобы не потерять важные данные.
8. Добавление пользователей
Несмотря на то, что репозитории приватные, возможна работа с gitlab командой. Вы можете добавить к ним неограниченное количество разработчиков. Для этого откройте пункт Settings -> Members. Здесь в поле Select members to invite введите никнеймы или адреса электронной почты пользователей, которых надо пригласить, а в поле Choose a role permission выберите их уровень доступа:
Затем нажмите кнопку Add to project.
9. Удаление проекта
Чтобы удалить проект с Gitlab надо открыть Settings -> General -> Advanced и выбрать Remove Project в самом низу страницы:
После нажатия на кнопку вам нужно будет ввести имя проекта, после чего он будет удален:
GitLab CI
GitLab.com — это сервис, основанный на SAAS — одной из форм облачных вычислений, где вы без труда сможете разместить свои Git-репозиторий, отслеживать возможные проблемы и писать wiki с помощью языка разметки markdown. GitLab CI также позволяет вам настраивать непрерывную интеграцию с использованием любого из образов Docker, доступного на Docker Hub. Давайте рассмотрим это на примере!
GitLab CI YML
GitLab CI использует YAML файл .gitlab-ci.yml для определения конфигураций проекта, включающих в себя определение всех этапов, которые будут выполняться после того, как конвейер CI/CD запускается в ответ на git push/merge. В этом примере нам нужно провести unit-тест над простым Node.js проектом, чтобы убедиться, что в коде нет ошибок. Чтобы вым стало понятнее, попробуйте сами запустить данный репозиторий.
В вышеприведенном конфигурационном файле YAML мы все разбили на 3 этапа. Каждый из этапов это просто gulp.task, заданный в gulpfile.js . Так как у нас установлен Node.js, пользователь может по отдельности запускать любой из этапов. Но в GitLab CI требуется указать, какой из образов Docker вам нужен. В нашем случае, это узел:6.11.2. Кроме того, данный Docker-атрибут можно задать внутри определенного этапа, поэтому вы сможете использовать различные инструменты для любого из этапов.
Определение этапа
Глубже взглянем на этот этап.
Атрибуты before_script и script могут иметь несколько значений (array в .yml).Если выполнение скрипта завершится неудачей, весь этап будет классифицирован как неправильный.
Запуск Pipeline (процесс разработки)
В настройках, обратите внимание на вкладку Pipeline в меню CI/CD. Там вы сможете увидеть всю историю процесса разработки.
Детальнее разберем этот этап
Нажав на определенный Pipeline, вы можете прочитать подробный консольный вывод любого из этапов. Это полезно, когда появляются сбои в работе.
Преимущества использования GitLab CI совместно с Docker
Для различных проектов могут потребоваться различные платформы, такие как Node.js, Ant, Maven. Раньше, используя инструмент Jenkins, я должен был убедиться, что все платформы установлены на сервере. Используя Docker, вы можете ссылаться на зависимости, доступные на Docker Hub без запроса администратора сервера, для установки этих зависимостей на самом сервере. На самом деле, в Jenkins есть плагин для создания Pipeline и он также может работать с Docker. Но как я и утверждал ранее, вам постоянно придется следить за его обновлениями, что не так уж и хорошо с точки зрения затрат дополнительных усилий и времени.
Хоть я и предпочитаю использовать GitLab CI, это не значит, что он может полностью заменить инструмент Jenkins. Ведь в Jenkins есть одно огромное преимущество — это удобный и легконастраиваемый пользовательский интерфейс, который будет удобен не только для разработчиков, но и для QA (специалист по обеспечению качества), для выполнения определенных задач, таких как развертывание и проведение интеграционных тестов.
Выбирая подходящий инструмент, знайте, что он не должен быть идеальным
Ключ к успеху лежит не в выборе идеального инструмента. Главным элементом успеха являются люди, которые его используют. Поэтому перед тем как искать для себя новый инструмент или программу, попытайтесь сначала определить проблему, которую вы бы хотели решить в первую очередь.
DNS расшифровывается как Domain Name System. Это глобальное распределенное хранилище ключей и значений. Сервера по всему миру могут предоставить вам значение по ключу, а если им неизвестен ключ, то они попросят помощи у другого сервера.
Вот и все. Правда. Вы или ваш браузер запрашивает значение для ключа www.example.com, и получает в ответ 1.2.3.4.
Как изменить DNS
Чтобы переопределить DNS заходим в раздел «Центр управления сетями» классической панели управления.
Далее кликаем пункт «Изменение параметров адаптера» и щелкаем активное подключение. Щелкаем его правой кнопкой, переходим к пункту «Свойства».
Выбираем протокол TCP/IPv4, снова щелкаем «Свойства».
Выбираем альтернативный адрес DNS.
Базовые штуки
Большой плюс DNS в том, что это публичная услуга, и можно потыкать в сервера если хочется разобраться. Давайте попробуем. У меня есть домен petekeen.net, который хостится на машине web01.bugsplat.info. Команды, используемые ниже, можно запустить из командной строки OS X (ой, то есть macOS, — прим. пер.).
Давайте взглянем на маппинг между именем и адресом:
$ dig web01.bugsplat.info
Команда dig это такой швейцарский армейский нож для DNS-запросов. Крутой, многофункциональный инструмент. Вот первая часть ответа:
Здесь есть только одна интересная деталь: информация о самом запросе. Говорится, что мы запросили запись и получили ровно один ответ. Вот:
>;; QUESTION SECTION: ;web01.bugsplat.info. IN A
dig по-умолчанию запрашивает A-записи. A это address (адрес), и это один из фундаментальных видов записей в DNS. A содержит один IPv4-адрес. Есть эквивалент для IPv6-адресов — AAAA. Давайте взглянем на ответ:
>;; ANSWER SECTION: web01.bugsplat.info. 300 IN A 192.241.250.244
Тут говорится, что у хоста web01.bugsplat.info. есть один адрес A: 192.241.250.244. Число 300 это TTL, или time to live (время жизни). Столько секунд можно держать значение в кэше до повторной проверки. Слово IN означает Internet. Так сложилось исторически, это нужно для разделения типов сетей. Подробнее об этом можно почитать в документе IANA’s DNS Parameters.
В частности, здесь говорится, как долго сервер откликался, какой у сервера IP-адрес (192.168.1.1), на какой порт стучался dig (53, DNS-порт по-умолчанию), когда запрос был завершен и сколько байтов было в ответе.
Как видите, при обычном DNS-запросе происходит куча всего. Каждый раз, когда вы открываете веб-страницу, браузер делает десятки таких запросов, в том числе для загрузки всех внешних ресурсов вроде картинок и скриптов. Каждый ресурс отвечает за минимум один новый DNS-запрос, и если бы DNS не был рассчитан на сильное кэширование, то трафика генерировалось бы очень много.
Но в этом примере не видно, что DNS-сервер 192.168.1.1 связался с кучей других серверов чтобы ответить на простой вопрос: «куда указывает адрес web01.bugsplat.info?». Давайте запустим трейс чтобы узнать о всей возможной цепочке, которую пришлось бы пройти dig’у, если бы информация не был закэширована:
$ dig +trace web01.bugsplat.info ; <<>> DiG 9.7.6-P1 <<>> +trace web01.bugsplat.info ;; global options: +cmd . 137375 IN NS l.root-servers.net. . 137375 IN NS m.root-servers.net. . 137375 IN NS a.root-servers.net. . 137375 IN NS b.root-servers.net. . 137375 IN NS c.root-servers.net. . 137375 IN NS d.root-servers.net. . 137375 IN NS e.root-servers.net. . 137375 IN NS f.root-servers.net. . 137375 IN NS g.root-servers.net. . 137375 IN NS h.root-servers.net. . 137375 IN NS i.root-servers.net. . 137375 IN NS j.root-servers.net. . 137375 IN NS k.root-servers.net. ;; Received 512 bytes from 192.168.1.1#53(192.168.1.1) in 189 ms info. 172800 IN NS c0.info.afilias-nst.info. info. 172800 IN NS a2.info.afilias-nst.info. info. 172800 IN NS d0.info.afilias-nst.org. info. 172800 IN NS b2.info.afilias-nst.org. info. 172800 IN NS b0.info.afilias-nst.org. info. 172800 IN NS a0.info.afilias-nst.info. ;; Received 443 bytes from 192.5.5.241#53(192.5.5.241) in 1224 ms bugsplat.info. 86400 IN NS ns-1356.awsdns-41.org. bugsplat.info. 86400 IN NS ns-212.awsdns-26.com. bugsplat.info. 86400 IN NS ns-1580.awsdns-05.co.uk. bugsplat.info. 86400 IN NS ns-911.awsdns-49.net. ;; Received 180 bytes from 199.254.48.1#53(199.254.48.1) in 239 ms web01.bugsplat.info. 300 IN A 192.241.250.244 bugsplat.info. 172800 IN NS ns-1356.awsdns-41.org. bugsplat.info. 172800 IN NS ns-1580.awsdns-05.co.uk. bugsplat.info. 172800 IN NS ns-212.awsdns-26.com. bugsplat.info. 172800 IN NS ns-911.awsdns-49.net. ;; Received 196 bytes from 205.251.195.143#53(205.251.195.143) in 15 ms
Информация выводится в иерархической последовательности. Помните как dig вставил точку . после хоста, web01.bugsplat.info? Так вот, точка . это важная деталь, и она означает корень иерархии.
Корневые DNS-сервера обслуживаются различными компаниями и государствами по всему миру. Изначально их было мало, но интернет рос, и сейчас их 13 штук. Но у каждого из серверов есть десятки или сотни физических машин, которые прячутся за одним IP.
Итак, в самом верху трейса находятся корневые сервера, каждый определен с помощью NS-записи. NS-запись связывает доменное имя (в данном случае, корневой домен) с DNS-сервером. Когда вы регистрируете доменное имя у регистратора типа Namecheap или Godaddy, они создают NS-записи для вас.
В следующем блоке видно, как dig выбрал случайный корневой сервер, и запросил у него A-запись для web01.bugsplat.info. Видно только IP-адрес корневого сервера (192.5.5.241). Так какой именно корневой сервер это был? Давайте узнаем!
Флаг -x заставляет dig провести обратный поиск по IP-адресу. DNS отвечает записью PTR, которая соединяет IP и хост, в данном случае — f.root-servers.net.
Возвращаясь к нашему начальному запросу: корневой сервер F вернул другой набор NS-серверов. Он отвечает за домен верхнего уровня info. dig запрашивает у одного из этих серверов запись A для web01.bugsplat.info, и получает в ответ еще один набор NS-серверов, и потом запрашивает у одного из этих серверов запись A для web01.bugsplat.info.. И, наконец, получает ответ!
Уф! Сгенерировалось бы много трафика, но почти все эти записи были надолго закэшированы каждым сервером в цепочке. Ваш компьютер тоже кэширует эти данные, как и ваш браузер. Чаще всего DNS-запросы никогда не доходят до корневых серверов, потому что их IP-адреса почти никогда не изменяются («Наверно все таки речь идет о большом TTL для записей в их базе. Если у DNS сервера IP адрес вообще ни разу не изменялся, то это не означает, что его база навечно закеширована» — прим. от rrrav). Домены верхнего уровня com, net, org, и т.д. тоже обычно сильно закэшированы.
Другие типы
Есть еще несколько типов, о которых стоит знать. Первый это MX. Он соединяет доменное имя с одним или несколькими почтовыми серверами. Электронная почта настолько важна, что у нее есть свой тип DNS-записи. Вот значения MX для petekeen.net:
Заметьте, что MX-запись указывает на имя, а не на IP-адрес.
Еще один тип, который вам скорее всего знаком, это CNAME. Расшифровываетя как Canonical Name (каноническое имя). Он связывает одно имя с другим. Давайте посмотрим на ответ:
Сразу видно, что мы получили два ответа. Первый говорит, что www.petekeen.net указывает на web01.bugsplat.info. Второй возвращает запись A для того сервера. Можно считать, что CNAME это псевдоним (или алиас) для другого сервера.
Зачем нужны DNS-серверы
Система доменных имен функционирует не в виртуальном пространстве, а установлена и работает на определенных физических устройствах. Информация о доменах хранится в форме DNS-записей на множестве специальных компьютерах с соответствующим программным обеспечением. Каждое такое устройство называется сервер доменных имен, а также NS-сервер или DNS-сервер.
Назначение DNS-сервера
Хранение информации о доменах и предоставление ее по запросам;
Кэширования DNS-записей из остальных DNS-серверов.
Классификация серверов
Учитывая функции DNS-сервера, их можно поделить на несколько видов. При этом, сервер-преобразователь или «резолвер» (от англ. Resolver, «преобразователь»), непосредственно конвертирующий доменные имена в IP-адреса, может одновременно принадлежать к двум и более типам.
Ниже представлены определения основных типов DNS-серверов.
Авторитативный — DNS-сервер, который отвечает за определенную зону.
Первичный (Мастер) — сервер, уполномоченный вносить изменения в зону. Как правило, в зоне находится только один первичный сервер.
Вторичный (Слейв) — сервер без права применять изменения в зоны, получающий от «мастера» только уведомления об изменениях. В зоне может находиться неограниченное количество слейвов.
Кэширующий — отвечает за обслуживание пользователей. Он принимает рекурсивные запросы, а затем обрабатывает их с использованием нерекурсивных запросов или передает на вышестоящий сервер. Большинство серверов, работающих непосредственно с пользователями, является именно кэширующими.
Перенаправляющий (Прокси, Балансирующий) — кэширующий сервер, который не отдает данные напрямую, а перенаправляет запросы на связанную с ним цепь кэширующих серверов. Благодаря этому перераспределяется общая нагрузка и уменьшается вероятность даунтайма.
Корневой (Рут) — авторитативный сервер в корневой зоне. В мире расположено 13 таких серверов, их домены находятся в зоне root-servers.net.
Регистрирующий — принимает информацию об обновлениях от пользователей.
Кэширование
Чтобы понимать, как работает DNS-сервер, нужно детально рассмотреть, как в нем происходит процесс кэширования.
При обращениях к любому сайту (даже при переходе на внутренние страницы), серверам необходимо проверять связь домена и IP-адреса. Однако, посещаемый ресурс может храниться довольно далеко, поэтому постоянные запросы на первичный DNS-сервер могут сильно снизить скорость загрузки страниц.
Решить проблему со скоростью обработки запросов позволяет ближайший к компьютеру пользователя DNS-сервер, который становится кэширующим. На нем сохраняется информация о ранее отправленных запросах на IP-адреса. При следующем обращении на один и тот же сайт, данные по его адресу будут поступать оперативно, за счет их наличия в кэше.
Однако, для кэширования нужен источник, с которого будут поступать данные о сайте. Им являются первичные и вторичные DNS-сервера. Это означает, что при регистрации домена владелец сайта должен указывать адрес DNS-сервера, где будет сохранена информация о домене.
Как правило, для работы домена достаточно сохранить свои данные на двух DNS-серверах — первичном и вторичном. Хотя, гораздо лучше указывать большее их количество. Это повысит надежность работы веб-адреса, поскольку при отсутствии доступа к одному DNS-серверу, можно будет обработать запрос на следующем.
Когда и зачем возникает необходимость менять DNS-сервер
По умолчанию DNS-сервер назначается вашим провайдером, но бывают случаи перегрузки, когда конкретному сервису обращается слишком много клиентов. Из-за этого скорость загрузки и передачи пакетов данных может существенно падать. Также некоторые DNS-серверы имеют ограничения в связи с законодательством государства, в котором ведут свою деятельность. Случается, что правительства блокируют даже мировые социальные сети и мессенджеры. В отдельных случаях смена DNS может разрешить доступ к заблокированным ресурсам, а также увеличить скорость загрузки файлов и контента.
Принцип работы DNS-сервера — направить пользователя по правильному адресу интернета
Режим работы DNS
Серверы DNS могут работать в двух режимах:
Итеративный, если сервер отвечает за ту зону для который пришел запрос он присылает ответ, а если нет то он присылает адрес другого сервера, к которому нужно обратиться с запросом.
Рекурсивный, в этом режиме DNS-сервер сам отправляет необходимые запросы всем DNS серверам пока не найдет необходимый сервер, получит от него ответ и этот ответ возвращается к клиенту.
Инфраструктура DNS
Два режима работы необходимы, потому что в системе DNS используются два типа серверов. DNS серверы, которые хранят информацию об отображении доменных имен в ip-адресах, работают в интеративном режиме, так как к этим серверам, особенно к корневым серверам или серверам первого уровня, приходит большое количество запросов, и у них не хватит производительности для работы в рекурсивном режиме.
И есть серверы, которые занимаются разрешением имен для клиентов Эти серверы работают в рекурсивном режиме, получают запрос от клиента, выполняют поиск в дереве серверов DNS, получают ответ и возвращают его клиенту.
Сервер разрешения имен DNS
Сервер разрешения имен находится в локальной сети, он предоставляется либо вашим провайдером, либо вашей организации. Часто адреса таких серверов компьютеры получают автоматически, вместе с ip- адресом по протоколу DHCP.
Другой вариант это использовать открытый сервер разрешения имен, которые предоставляют некоторые компании. Например, широко известен общедоступный DNS сервер компании Google с адресом 8.8.8.8, который может использовать кто угодно. Зачем может понадобиться использовать открытый сервер, вместо серверов вашей локальной сети? Некоторые такие серверы, например, сервер компании Яндекс с таким адресом 77.88.8.7 блокирует контент для взрослых.
Кэширование
После того, как DNS resolver нашел ip-адрес для некоторого доменного имени, он записывает его в кэш, с одной стороны это хорошо так как повышают производительность работы, с другой стороны администратор зоны может поменять ip-адрес для некоторого компьютера, и если он у нас сохранен в кэше, то об изменении мы узнаем только через некоторое время.
Иногда, это время может составлять несколько дней или даже недель в зависимости от настроек DNS resolver. Поэтому не удивляйтесь, если вы внесли изменения в DNS записи, но они пока не видны.
Типы ответов DNS
В DNS есть два типа ответов:
Авторитетный или как пишется в утилите nslookup windows — authoritative «заслуживающий доверие», это ответ, который получен от DNS сервера, который ответственный за данную зону. Ответ получен из конфигурационных файлов на диске сервера, и точно является актуальным.
Неавторитетный (non-authoritative) или «не заслуживающий доверия ответ», это ответ который получен от сервера, который не является ответственным за эту зону. Как правило, это DNS resolver, который закэшировал полученный ранее ответ. С момента создания записи в кэше данные могли измениться, поэтому ответ называется не заслуживающим доверия, но как правило в кэше находятся верные данные.
Протокол DNS
Протокол DNS использует модель клиент-сервер, причем в качестве клиента может выступать, как клиент DNS, так и сервер DNS, которые работают в рекурсивном режиме. В этом случае сервер DNS пересылают запросы другим серверам DNS и выступает в качестве клиента. Взаимодействие ведется в режиме запрос-ответ, соединение не устанавливается, используется протокол UDP, номер порта 53.
Формат пакета DNS
Пакет DNS состоит из двух частей заголовок и данные. Заголовок свою очередь состоит из шести полей.
Первое поле это идентификатор запроса, любое целое число должно быть одинаково в запросе и ответе.
Поле флаги мы его рассмотрим подробнее.
И четыре поля, которые указывают сколько у нас данных в пакете. Количество DNS запросов, количество DNS ответов, количество ответов об авторитетных серверах и количество дополнительных ответов.
В поле данных у нас содержится информация о запросах DNS, где мы указываем доменное имя компьютера для которого хотим узнать ip-адрес.
Ответов DNS в которых содержится ip-адрес необходимого нам компьютера.
Поле авторитетные серверы используется ветеративном режиме работы, здесь указываются ip-адреса серверов, которые отвечают за интересующую нас DNS зону.
И в поле дополнительной информации указываются некоторые дополнительные записи, которые могут быть нам полезны.
В одном и том же DNS пакете может быть несколько запросов DNS и несколько ответов, в том числе несколько ответов на один запрос, если одному доменному имени соответствует несколько ip-адресов.
Флаги
Поле флаги состоит из нескольких полей:
Поле QR — тип операции запрос (0) или ответ (1).
Поле OPCODE (4 бита) — тип запроса, но на практике используются только 0-стандартный запрос.
Флаг AA указывает, является полученный ответ авторитетным (1) или нет (0).
Флаг TC говорит о том был пакет обрезан (1) или не был (0).
Флаг RD указывается только в запросах, если этот флаг установлен, клиент просит сервер работать в рекурсивном режиме.
Флаг RA используется только в ответах, с помощью этого флага сервер сообщает, что он может работать в рекурсивном режиме.
Флаг Z зарезервирован для будущего использования.
RCODE (4 бита) последние четыре бита это статус выполнение операции, статус 0 говорит о том что операция прошла успешно, любые другие коды говорят о том что произошла какая-то ошибка.
Формат запроса DNS
Формат DNS запроса очень простой, содержит имя, тип и класс записи.
Например, имя www.yandex.ru, тип записи 1, (запись типа A) отображение доменного имени в ip- адрес. В системе DNS также используются другие типы записей. Класс записи 1 (IN, Интернет) код единица, других классов записей в системе DNS сейчас не используется.
Формат ответа DNS
Формат DNS ответа более сложный, первые три поля точно такие же имя, тип записи и класс записи. Затем указывается время жизни, это время на которые запись может сохранить в кэше DNS resolver, затем указывается длина данных и собственно данные ответа.
Пример, ответа DNS имя www.yandex.ru, запись типа A, класс записи интернет, время жизни 90 секунд, однако администратор DNS resolver может принудительно установить другое время жизни. Длина данных измеряется в байтах, 4 байта и ip-адрес сервера www.yandex.ru.
Типы записей DNS
До сих пор мы рассматривали единственное применение системы dns это определение IP-адреса по доменному имени компьютера, но кроме этого DNS выполняет много других функций, которые необходимы для работы сети интернет. Для их реализации используются разные типы записей DNS.
Каждая запись dns по-английский (Resource Record, RR) имеет тип записи и класс записи. Тип записей говорит о том для чего эта запись предназначена, а класс указывает в каких сетях эта запись может использоваться. Сейчас DNS применяется только в сетях интернет, поэтому в классе записи вы почти всегда увидите IN, сокращение от интернета.
Записи, которые используются для определения ip адреса компьютера (IPv4) по доменному имени имеют тип A, для адресов IPv6 используется тип запись 4 раза (AAAA ).
Запрос записей разных типов
В утилите nslookup можно указать тип записи, который вы запрашиваете с помощью ключа минус type, например если вы укажете -type=A, нужно узнать Ipv4 адрес для доменного имени www.yandex.ru, то получите адреса ip версии 4.
А если указать тип записей четыре раза A, то получим адрес IPv6 для того же самого доменного имени.
DNS псевдонимы
Для одного и того же IP-адреса можно задавать несколько доменных имен. Есть два варианта, как это можно сделать.
Первый вариант использовать DNS запись типов CNAME (Canonical Name каноническое имя) эта запись определяет псевдоним для доменного имени. Например, доменное имя ftp.zvondozvon.ru является псевдонимом www.zvondozvon.ru, то есть два этих имени указывают на один и тот же IP-адрес. Канонических имен для одного и того же доменного имени можно создавать очень много. Для того чтобы такие имена работали необходимо, чтобы для доменного имени на которые они указывают существовала запись, которая определяет IP-адрес для этого доменного имени.
Альтернативный способ, создать большое количество A записей, которые указывают на один и тот же ip адрес. Но это не всегда удобно, например если вы хотите поменять IP адрес, то вам придется менять его в разных местах. С другой стороны на применение записей типа CNAME есть ряд технических ограничений со стороны системы DNS например, нельзя определять цепочки из канонических имен, которые ссылаются друг на друга, о других ограничениях можно подробно посмотреть в документах RFC, которые описывают работу DNS.
Адрес почтового сервера
Система DNS активно используются при работе электронной почты предположим, что мы хотим отправить электронное письмо на некоторый адрес в домене gmail.com, но как мы узнаем адрес почтового сервера, который принимает почту для этого домена?
Это можно сделать с помощью DNS. Для этого в DNS есть запись специального типа MX (Mail eXechange), например для домена gmail.com есть целых пять записей типа MX, которые задают пять серверов, принимающие почту в домене Google.
Запись MX содержит два поля. Первое поле это приоритет, а второе это адрес сервера принимающего почту для данного домена. Чем ниже значение, тем более высокий приоритет. Самый высокий приоритет у сервера, у которого значение приоритета пять и самый низкий приоритет у сервера со значением 40. Таким образом, при отправке электронной почты сначала будет выбираться сервер с наименьшим приоритетом, если по каким-либо причинам он будет недоступен, следующий сервер и так далее.
Адреса сетевых сервисов
Для некоторых типов сервисов интернет, можно указывать не только IP адрес, но и порт на котором этот сервис работает. Для этого используются DNS записи типа SRV (Service record). Структуры этой записи достаточно сложны, вместо доменного имени указывается строка с описанием сервисов в специальном формате (_сервис._протокол.имя.-˃ приоритет вес порт имя).
Например, если мы хотим узнать на каком компьютере и на каком порту работает jabber сервер работающий по протоколу tcp в домене example.com мы получим вот такую запись (0 5 5269 xmpp.example.com). Проще всего разбирать её с конца. Сервис работает на компьютере с доменным именем xmpp.example.com порт 5269, приоритет 0, вес 5. Так же как и с почтовыми серверами, чем меньше значение приоритета, тем более высокий приоритет у сервера.
Резервный jabber сервер для этого домена работает на компьютере backup_xmpp.xample.com порт 5269 приоритет 20, вес 0. Вес используются для распределения нагрузки между разными серверами, которые имеют один и тот же приоритет.
Делегирование ответственности
В DNS важным понятием является делегирование ответственности. Информация о компьютерах входящая в ту или иную доменную зону хранится на DNS сервере, который отвечает за работу этой зоны. Но нам необходимо знать, какие серверы отвечают за ту или иную зону.
Записи серверов имен
Для этого используются dns-записи типа NS (Name Server). Например, за доменную зону yandex.ru отвечают серверы ns1.yandex.ru и ns2.yandex.ru, а за доменную зону urfu.ru отвечает целых 3 сервера. Записи типа ns задаются на домене более высокого уровня в нашем случае на сервере, который отвечает за зону ru. Именно этот сервер содержит записи ns для домена yandex.ru и для домена urfu.ru.
Но нам недостаточно знать только доменные имена dns-серверов, необходимо знать их IP адреса. Для этого используются «приклеенные» записи А, которые указывают IP-адреса. Вся остальная информация о делегированных доменных зонах хранится на этих dns серверах.
Определение имени по IP-адресу
Кроме определения ip адреса по компьютеру, по доменному имени, система dns может использоваться для обратной задачи определения доменного имени компьютера по его IP адресу. Для этого используются специальные зоны, называются обратные (reverse) или реверсивные.
Реверсивная зона содержит записи типа PTR (Pointer), которые ставят в соответствии IP-адрес компьютера доменному имени. Однако из-за технических ограничений DNS не может работать напрямую с IP адресами, поэтому для обратных зон был придуман обходной путь, представлять IP адрес в виде доменного имени. Для этих целей создан специальный домен in-addr.arpa и в этом домене IP адреса записываются в обратном порядке, например адрес 77.88.55.66 в обратной зоне будет записан следующим образом 66.55.88.77.in-addr.arpa.
Видео про типы записей DNS
Настройка сетевого адаптера для DNS-сервера
Установка DNS-сервера предполагает наличие доменной зоны, поэтому необходимо создать частную сеть в личном кабинете и подключить к ней виртуальные машины.
После того, как машина будет присоединена к двум сетям, важно не перепутать, какое из подключений требует настройки. Первичный сетевой адаптер настроен автоматически с самого начала, через него открыт доступ к интернету, в то время как на дополнительно подключенных сетевых адаптерах доступа в интернет нет, пока не будет произведена ручная настройка:
Наведя курсор на значок сети в системном трее, можно вызвать всплывающую подсказку с краткими сведениями о сетях. Из примера выше видно, что присоединённая сеть это Network 3.
Далее предстоит проделать цепочку действий:
Нажать правой клавишей мыши Пуск, в выпадающем меню выбрать пункт Сетевые подключения;
Правой кнопкой мыши нажать на необходимый сетевой адаптер, в меню выбрать Свойства;
В окне свойств выбрать IPv4 и нажать на кнопку Свойства;
Заполнить соответствующие поля необходимыми данными:
Здесь в качестве предпочитаемого DNS-сервера машина назначена сама себе, альтернативным назначен dns.google [8.8.8.8].
Установка роли DNS-сервера
Для установки дополнительных ролей на сервер используется Мастер Добавления Ролей и Компонентов, который можно найти в Диспетчере Сервера.
На верхней навигационной панели Диспетчера сервера справа откройте меню Управление, выберите опцию Добавить Роли и Компоненты:
Откроется окно Мастера, в котором рекомендуют убедиться что:
1. Учётная запись администратора защищена надёжным паролем.
2. Настроены сетевые параметры, такие как статические IP-адреса.
3. Установлены новейшие обновления безопасности из центра обновления Windows.
Убедившись, что все условия выполнены, нажимайте Далее;
Выберите Установку ролей и компонентов и нажмите Далее:
Выберите необходимый сервер из пула серверов и нажмите Далее:
Отметьте чек-боксом роль DNS-сервер и перейдите Далее:
Проверьте список компонентов для установки, подтвердите нажатием кнопки Добавить компоненты:
Оставьте список компонентов без изменений, нажмите Далее:
Прочитайте информацию и нажмите Далее:
В последний раз проверьте конфигурацию установки и подтвердите решение нажатием кнопки Установить:
Финальное окно Мастера сообщит, что установка прошла успешно, Мастер установки можно закрыть:
Создание зон прямого и обратного просмотра
Доменная зона — совокупность доменных имён в пределах конкретного домена.
Зоны прямого просмотра предназначены для сопоставления доменного имени с IP-адресом.
Зоны обратного просмотра работают в противоположную сторону и сопоставляют IP-адрес с доменным именем.
Создание зон и управление ими осуществляется при помощи Диспетчера DNS.
Перейти к нему можно в правой части верхней навигационной панели, выбрав меню Средства и в выпадающем списке пункт DNS:
Создание зоны прямого просмотра
Выделите каталог Зоны Прямого Просмотра, запустите Мастер Создания Новой Зоны с помощью кнопки Новая зона на панели инструментов сверху:
Откроется окно Мастера с приветствием, нажмите Далее:
Из предложенных вариантов выберите Основная зона и перейдите Далее:
Укажите имя зоны и нажмите Далее:
При необходимости поменяйте название будущего файла зоны и перейдите Далее:
Выберите, разрешить динамические обновления или нет. Разрешать не рекомендуется в силу значимой уязвимости. Перейдите Далее:
Проверьте правильность выбранной конфигурации и завершите настройку, нажав кнопку Готово:
Создание зоны обратного просмотра
Выделите в Диспетчере DNS каталог Зоны Обратного Просмотра и нажатием кнопки Новая зона на панели инструментов сверху запустите Мастер Создания Новой Зоны:
Выберите тип Основная Зона, перейдите Далее:
Выберите назначение для адресов IPv4, нажмите Далее:
Укажите идентификатор сети (первые три октета сетевого адреса) и следуйте Далее:
При необходимости поменяйте название будущего файла зоны и перейдите Далее:
Выберите, разрешить динамические обновления или нет. Разрешать не рекомендуется в силу значимой уязвимости. Перейдите Далее:
Проверьте правильность выбранной конфигурации и завершите настройку, нажав кнопку Готово:
Создание A-записи
Данный раздел инструкции в большей степени предназначен для проверки ранее проделанных шагов.
Ресурсная запись — единица хранения и передачи информации в DNS, заключает в себе сведения о соответствии какого-либо имени с определёнными служебными данными.
Запись A — запись, позволяющая по доменному имени узнать IP-адрес.
Запись PTR — запись, обратная A записи.
В Диспетчере DNS выберите каталог созданной ранее зоны внутри каталога Зон Прямого Просмотра. В правой части Диспетчера, где отображается содержимое каталогов, правой кнопки мыши вызовите выпадающее меню и запустите команду «Создать узел (A или AAAA)…»:
Откроется окно создания Нового Узла, где понадобится вписать в соответствующие поля имя узла (без доменной части, в качестве доменной части используется название настраиваемой зоны) и IP-адрес. Здесь же имеется чек-бокс Создать соответствующую PTR-запись — чтобы проверить работу обеих зон (прямой и обратной), чек-бокс должен быть активирован:
Если поле имени остается пустым, указанный адрес будет связан с именем доменной зоны.
Также можно добавить записи для других серверов:
Добавив все необходимые узлы, нажмите Готово.
Проверка
Проверьте изменения в каталогах обеих зон (на примере ниже в обеих зонах появилось по 2 новых записи):
Откройте командную строку (cmd) или PowerShell и запустите команду nslookup:
Из вывода команды видно, что по умолчанию используется DNS-сервер example-2012.com с адресом 10.0.1.6.
Чтобы окончательно убедиться, что прямая и обратная зоны работают как положено, можно отправить два запроса:
Запрос по домену;
Запрос по IP-адресу:
В примере получены подходящие ответы по обоим запросам.
Можно попробовать отправить запрос на какой-нибудь внешний ресурс:
В дополнение к имени домена и адресам появилась строчка «Non-authoritative answer», это значит, что наш DNS-сервер не обладает необходимой полнотой информации по запрашиваемой зоне, а информация выведенная ниже, хоть и получена от авторитетного сервера, но сама в таком случае не является авторитетной.
Для сравнения все те же запросы выполнены на сервере, где не были настроены прямая и обратная зоны:
Здесь машина сама себе назначена предпочитаемым DNS-сервером. Доменное имя DNS-сервера отображается как неопознанное, поскольку нигде нет ресурсных записей для IP-адреса (10.0.1.7). По этой же причине запрос 2 возвращает ошибку (Non-existent domain).
Как настроить/изменить DNS
Почему DNS-сервер недоступен: как решить проблему
При изменении или дополнительной настройке не потребуется совершать много действий. Необходимо использовать окно, открытое ранее, зайти в пункт «Дополнительно». Здесь производится детальная наладка обращения к DNS-серверам. В Windows 7 это все возможно настроить самостоятельно. Поэтому вопрос, как самим изменить dns-сервер, не вызовет проблем.
Еще для управления доступны DNS-суффиксы. Рядовому пользователю они не требуются. Эта настройка, помогающая удобно разделять ресурсы, создана для провайдеров.
На wi-fi роутере
При использовании роутера в опциях ДНС необходимо выставить его IP-адрес. Чтобы выполнить эти манипуляции, потребуются включенные DNS-relay и DHCP-server.
Интерфейс роутера предназначен для проверки и последующих детальных настроек. Сначала необходимо проверить ДНС в WAN-порте. DNS-relay активируется в параметрах LAN-порта.
На компьютере
Настройка ДНС-сервера в Windows 10 схожа с аналогичной ситуацией в ранних версиях ОС. Сначала нужно выбрать свойства «Протокола интернета версии 4 (TCP/IPv4)». Перейти в дополнительные опции и настроить список серверов.
Настройка сервера ДНС на компьютере и на ноутбуке одинаковая.
На планшете
В зависимости от установленной «операционки» действия несколько различаются, но их все объединяют следующие моменты:
Открыть меню «Wi-Fi», находящееся в «Настройках».
Зайти в свойства текущего подключения к интернету.
Кликнуть «Изменить сеть», после – «Показать дополнительные параметры».
Пролистать до пункта ДНС-серверов, потом их прописать.
На смартфоне
Так как сейчас особой разницы между операционными системами телефона и планшета нет, чтобы настроить нужные dns-серверы, достаточно знать инструкции, описанные выше.
Как узнать прописанный адрес DNS-сервера и как его изменить
Сейчас мировой тренд провайдеров заключается в автоматическом определении DNS-сервера, то есть, его не нужно изначально. Но все же узнать его довольно просто, всего в несколько кликов мышкой.
Windows
Узнать свой DNS-сервер и заменить его можно в соответствующей графе «Панели управления».
Нажимаем комбинацию клавиш Win+R, в поле «Выполнить» прописываем control и запускаем команду в действие кнопкой OK или Enter на клавиатуре.
Запускаем «Панель управления» через исполняющую программу
Меняем вид с «Категории» на «Значки» и щёлкаем по пункту «Центр управления сетями и общим доступом».
Выбираем элемент «Центр управления сетями и общим доступом»
Откроется окно с активными (действующими, подключёнными) сетями. Нажимаем на ссылку напротив той, которая имеет доступ к интернету.
Просматриваем список активных сетей в «Центре управления сетями и общим доступом»
Откроется окно состояния сети. Кликаем кнопку «Сведения…».
В окне «Состояние» нажимаем кнопку «Сведения»
Появится ещё одно окно со всеми данными подключённой сети. В графе «DNS-серверы IPv4» знакомимся с действующими адресами сервисов, которые использует подключение в данный момент.
Просматриваем подключенные DNS-серверы
Заменить DNS-сервер также просто. Для начала возвращаемся в окно «Состояние».
Нажимаем кнопку «Свойства», что в графе «Активность».
Нажимаем кнопку «Свойства», что в графе «Активность»
В окне компонентов выделяем пункт «IP версии 4», после чего нажимаем кнопку «Свойства».
Открываем протокол «IP версии 4»
Откроется последнее окно настроек. Ставим галочку у пункта «Использовать следующие адреса DNS-серверов», прописываем IP-адреса сервисов, которые вы хотите использовать. Затем сохраняем все изменения во всех окнах кнопкой OK.
Чтобы прописать адрес DNS-сервера, ставим галочку на «Использовать следующие адреса DNS-серверов»
В итоге мы имеем доступ к заданному сервису преобразования доменных имён.
Ubuntuк
Чтобы изменить настройки DNS в операционных системах Ubuntu можно пользоваться разными способами. Самый простой — при помощи интерфейса.
В правом верхнем углу выпадающее меню сети. Нажимаем на соответствующий значок, выбираем пункт «Изменить соединение…».
Открываем выпадающее меню сети и нажимаем «Изменить соединение…»
Выбираем активное соединение с интернетом и нажимаем «Изменить».
Выбираем подключение к интернету и нажимаем кнопку «Изменить»
Переходим во вкладку «Параметры IPv4».
Переходим во вкладку «Параметры IPv4»
Меняем фильтр «Способ настройки» на «Автоматически (DHCP, только адрес)».
Меняем фильтр «Способ настройки» на «Автоматически (DHCP, только адрес)»
В графе «Серверы DNS» прописываем нужные адреса через запятую. Затем нажимаем кнопку «Сохранить» и закрываем окно.
В поле «Серверы DNS» прописываем соответствующие адреса
Чтобы узнать нынешний DNS-сервер в ОС Ubuntu, необходимо в терминале ввести команду $ cat /etc/resolv.conf. Это выдаст всю информацию по сети: графа nameserver и содержит доменный адрес.
На роутере
Сразу стоит отметить, что не все модели роутеров дают возможность изменять в своих настройках адрес DNS-серверов. Некоторые устройства позволяют заменить на известные сервисы, к примеру «Яндекс-DNS» или DNS Google.
Для начала необходимо перейти на страницу управления роутером. Для этого в адресной строке любого браузера вводим 192.168.1.1 и нажимаем клавишу Enter.
В зависимости от марки роутера дальнейшие инструкции имеют варианты. В некоторых случаях дополнительные настройки и сведения могут находиться уже на основной странице. Но чаще всего необходимо нажать некую кнопку для перехода в сопутствующее меню. Кнопка может называться Advansed, Setup, «Настройки» и так далее. Нажимаем на эту кнопку, чтобы перейти в дополнительное меню.
На главной странице управления роутером переходим в дополнительные настройки
Зачастую в первой графе сведений уже виден DNS-адрес.
Среди сведений знакомимся с адресом DNS-сервера
Для смены сервиса есть несколько вариантов:
среди пунктов меню может быть «Динамический DNS». Включение этой функции запустит автоматическую смену сервера, если работающий в данный момент по какой-либо причине перестанет отвечать на запросы пользователя. Переставляем галочку в активное состояние или пункт «Включить» и сохраняем изменения;
В некоторых роутерах есть возможность настройки динамического доменного сервиса
В некоторых роутерах уже вписан качественный DNS-сервер от корпораций гигантов, таких как Яндекс или Google. Эти сервисы работают практически без сбоев.
В некоторых роутерах уже вписан качественный DNS-сервер от Яндекс и/или Google
Основные причины возникновения ошибки
Причиной закрытого доступа в Интернет может быть оборудование пользователя или неисправности на другом конце «провода». Рекомендуется провести первичную диагностику, чтобы определить план дальнейших действий. Здесь возможны несколько вариантов:
Доступа нет только к конкретному сайту. Проблема на стороне этого интернет-ресурса. Рекомендуем подождать, пока сервер не восстановит свою работу.
Не работают все сайты на персональном компьютере и мобильных устройствах, подключённых через Wi-Fi. Попробуйте подключить Интернет к ПК напрямую, минуя маршрутизатор. Если доступа не появилось, проблемы могут быть у провайдера. Звоните в техподдержку.
Сайт не работает только на компьютере, а с мобильного и планшета все ресурсы открываются. Здесь уже придется диагностировать ПК с помощью советов, о которых будет рассказано далее.
Способы устранения
Представленные рекомендации актуальны для последних операционных систем Windows 7, 8 и 10.
Общие советы
Прежде чем лезть в настройки операционной системы или роутера, рекомендуем попробовать стандартный «минимум». Используйте другой браузер. Рекомендуем иметь на компьютере стандартный набор из Google Chrome, Opera и Firefox. Это позволит исключить некорректные настройки самого браузера. Попробуйте очистить кэш в настройках. Подробную инструкцию вы можете получить в справке к каждому браузеру.
Следующими шагами идет перезагрузка роутера (при его наличии) и компьютера. Мелкие сбои могут возникать в ходе работы ОС. При перезагрузке многие параметры сбрасываются, устраняя различные сбои. Проверьте свой фаервол или антивирус. Эти программы способны автоматически блокировать доступ к ресурсам, которые они считают потенциально опасными. Если вы уверены, что сайт безопасен (например, вы пытаетесь войти в свой профиль социальной сети), то отключите на время антивирус, а затем попробуйте зайти повторно.
Проблемы на стороне провайдера
Это самый простой вариант, ведь со стороны пользователя никаких действий делать не нужно. Повлиять на ситуацию можно только регулярными звонками в техподдержку. Многие провайдеры предлагают фирменное ПО для диагностики сети, где показывается наличие сигнала и исходящий/входящий трафик. Если у вас имеется такой софт, проверьте через него работоспособность всей сети. При отсутствии трафика, естественно, звоните операторам.
Смена DNS-адресов
Следует сделать небольшой экскурс в тему DNS-сервера для понимания методики исправления ошибки. Когда человек пытается получить доступ к сайту, он вводит его название в поисковой строке или просто нажимает на ссылку из Google или «Яндекс». При этом в сети каждый сайт имеет цифровое обозначение (применяется IP-адресация). Для сопоставления названия сайта с его уникальным IP-адресом используются DNS-сервера. В них хранятся многострочные таблицы, где каждому адресу соответствует IP.
Когда вы пытаетесь зайти на сайт, происходит запрос к такому серверу на выявление соответствия. Если система по каким-либо причинам не получила ответа, появляется уже знакомая вам ошибка. К какому DNS-серверу обратиться, система выбирает самостоятельно, но не всегда корректно. Попробуйте выполнить ручную настройку, четко прописав нужный IP.
В свойствах подключения
Сменить адрес DNS можно через интерфейс Windows. Для этого проделайте ряд действий:
Зайдите в «Центр управления сетями» через иконку Интернета в трее (правый нижний гол).
Кликните по активному адаптеру правой кнопкой мыши, а затем нажмите по строке «Свойства».
Из списка выделите строку IPv4. Нажмите на кнопку «Свойства». Установите активным пункт для ввода адресов вручную и запишите цифры, как это показано на изображении.
Не забудьте подтвердить свои действия, нажав ОК. Это стандартные DNS компании Google. Рекомендуется после выполнения действий перезагрузить компьютер. Если положительного эффекта установка не дала, попробуйте установить DNS в маршрутизаторе.
В настройках роутера
Аналогично интерфейсу «Виндовс» в модеме имеется раздел для ручной установки адресов DNS. Мы приведем инструкцию на примере роутера компании TP-Link:
Зайдите в веб-интерфейс устройства (нужно узнать IP-адрес роутера, логин и пароль для входа на этикетке, прикрепленной к корпусу).
Найдите раздел «Сеть», подраздел WAN. Установите галочку у строки «Использовать следующие настройки DNS». Пропишите адреса, описанные в предыдущем подпункте.
Нажмите кнопку «Сохранить» и перезапустите маршрутизатор.
В этом случае выполнять настройки в ОС не нужно.
Перезапуск службы «DNS-клиент»
В «Виндовс» за работу ДНС отвечает специальная служба. При появлении ошибки поиска сервера рекомендуется перезапустить ее. Делается это в соответствующем разделе по инструкции:
Нажмите ПКМ по иконке вашего Компьютера. Кликните по строке «Управление».
Откройте раздел «Службы».
Найдите в списке DNS-клиент.
Выделите строку и нажмите «Перезапустить».
Убедитесь, что активация службы установлена «автоматически».
Очистка кэша DNS
Многие службы в ходе функционирования создают различные временные файлы – кэш. Как и в браузере, у ДНС его можно почистить. Это выполняется через командную строку. Запустите ее через «выполнить». Вам необходимо ввести cmd, а затем нажать Enter. После этого для очистки кэша DNS введите команду, показанную на изображении.
Если процедура будет выполнена успешно, вы увидите соответствующее сообщение в окне.
Сброс параметров TCP/IP
В редких случаях происходят сбои стека TCP/IP, которые влияют на доступ к Интернету. Через консоль пользователи Windows могут выполнить сброс параметров. Включив командную строку от имени администратора, выполните последовательно две команды:
Если они прошли без сбоя, выполните перезагрузку компьютера, а затем попробуйте заново получить доступ к необходимому сайту.
Отключение антивируса и фаервола
Ранее был предложен вариант с отключением антивируса или фаервола. Рекомендуем попробовать его, но при отключении защиты не посещайте посторонних и сомнительных ресурсов. Встроенная защита Windows не убережет компьютер от заражения. Для деактивации антивируса достаточно зайти в его настройки, а затем отключить все уровни защиты. На изображении пример переключателей для Eset Smart Security.
Отключение стандартного Firewall выполняется через настройки Windows:
перейдите через пуск в «Панель управления»;
найдите раздел брандмауэр Windows;
нажмите на строку «Включение и отключение…»;
деактивируйте пункты, как это показано на картинке.
При наличии антивируса firewall можно отключить навсегда.
Удаление вирусов
Вредоносное программное обеспечение может заблокировать доступ к Интернету и даже вымогать средства. Рекомендуется проверить всю систему на наличие вирусов. Справиться с этой задачей способна бесплатная утилита Dr. Web Cure It. Скачать ее можно на официальном сайте разработчиков антивируса «Доктор Веб». Софт обладает несколькими преимуществами:
портативность (не требует инсталляции, можно использовать прямо с флешки);
проводит анализ, сравнивая подозрительные файлы с многомиллионной базой вирусов;
есть выбор области проверки (оперативная память, временные или системные файлы, конкретный логический диск или весь компьютер).
Будьте готовы, что сканирование большого объема данных может занять сутки или больше. Предварительно закройте все приложения и окна, чтобы не создавать дополнительную нагрузку на систему.
Проверка файла hosts
Некоторые вирусы блокируют доступ или подменяют адреса на ложные через системный файл hosts. Рекомендуем проверить его на наличие посторонних записей. Для этого перейдите по пути, указанном на скриншоте, и откройте файл через текстовый редактор (используйте стандартный «блокнот» или другой).
Стандартный файл без стороннего вмешательства выглядит следующим образом:
Если вы заметили другие строки, то удалите их, а затем сохраните файл.
Удаление недавних обновлений
Последние версии ОС Windows регулярно получают различные обновления, которые улучшают стабильность и безопасность системы. Некоторые из них работают некорректно на определенном «железе». Это приводит к широкому спектру проблем. Если вы точно знаете, какое обновление вызывает неполадки, то можно его удалить следующим образом:
Перейдите в центр управления Windows. Нажмите на гиперссылку журнала обновлений.
В открывшемся окне нажмите строку «Удалить обновления».
Выделите нужное обновление и кликните по «Удалить».
Будьте крайне осторожны, так как без некоторых обновлений у вас не будут работать программы. Также настоятельно не рекомендуется стирать обновления безопасности.
Восстановление системы
Крайние меры, когда ничего не помогает, – выполнить восстановление системы. Эта процедура откатывает состояние ОС до определенного числа (в зависимости от того, когда создавались «точки восстановления»). Все настройки и параметры будут возвращены к той дате, которая будет указана в точке восстановления. Чтобы запустить процесс, вам необходимо сделать следующее:
Перейдите к мастеру восстановления.
Жмите далее до выбора точки. После этого кликните по нужной.
Подтвердите запуск и дождитесь окончания, нажав «Далее» и «Готово».
Пользовательские данные при этом затронуты не будут, однако рекомендуется перед стартом сделать резервную копию важных документов.
Рекомендуется также регулярно раз в месяц или раз в неделю создавать контрольные точки. Это необходимо, чтобы вы имели разброс по времени. Создавать точки можно как автоматически через заданный период, так и вручную. Также пользователь может выбрать логические диски для восстановления. По умолчанию это системный диск (C), но допускается добавить в список и любые другие носители. Дополнительно настройте объем пространства, доступного для утилиты восстановления. В «Виндовс» 10 рекомендуется устанавливать бегунок на уровне не меньше 20 гигабайт.
Если проблема DNS-сервера не связана с провайдером, рекомендуем последовательно опробовать каждый из методов. Все инструкции выполнить в домашних условиях смогут даже неопытные пользователи. Если доступ к Интернет не появился, рекомендуем вызвать специалиста.
Видео: как исправить ошибки, связанные с DNS-сервером
Изменить DNS-сервер просто. В случае необходимости вы сможете без труда восстановить скорость работы любимых сайтов. Пользуйтесь инструкциями выше, и у вас не возникнет никаких проблем с сёрфингом в сети.
Google Public DNS
Пожалуй, самый популярный сервер, работающий уже почти 8 лет. Его адреса известны всем – 8.8.8.8 и 8.8.4.4. Вместе с Google Public DNS ваша безопасность в Сети будет высокой, а скорость серфинга – оптимальной, так как ближайший к вам сервер будет определен с помощью технологии Anycast. Кроме того, этот сервис от Google обладает повышенной устойчивостью к хакерским атакам.
OpenDNS
Служба DNS-серверов, работающая с 2006 года. Имеет платный (корпоративный) и бесплатный (домашний) режимы работы. Домашняя версия также обеспечит родительский контроль и защитит от фишинга. Адреса серверов следующие:
67.222.222;
67.220.220;
67.222.220;
67.220.222.
DNS.WATCH
Очень быстрый и минималистичный сервис DNS, с основным акцентом на скорость работы и на просмотр заблокированных цензурой сайтов. Адреса серверов — 82.200.69.80 и 84.200.70.40.
Level3 DNS
Надежная и производительная DNS-служба. Конечно же, он намного меньше Google, тем не менее, с развитой инфраструктурой серверов скорость вашего серфинга будет максимальной. Level3 доступен по адресам 209.244.0.3 и 209.244.0.4.
Comodo Secure DNS
Эта служба предлагается известным разработчиком программ для защиты компьютера. Система выберет наиболее близкий к вам сервер так, чтобы обеспечить максимально быстрый и безопасный серфинг. Адреса Comodo Secure DNS – 8.26.56.26 и 8.20.247.20.
OpenNIC DNS
Если ваш провайдер ограничивает доступ к сайтам, отличным решением станет установка OpenNIC DNS. Сервис имеет очень большую инфраструктуру, и поэтому перед его использованием вам сначала нужно будет зайти на проекта. Там система подберет наилучшие сервера в зависимости от вашего текущего местоположения.
Yandex DNS
Своя служба DNS есть и у Яндекса. География размещения серверов достаточно широкая, что обеспечивает высокую скорость работы. Имеется три варианта:
Базовый (77.88.8.8 и 77.88.8.1)
Безопасный (88.8.88 и 77.88.8.1) обеспечит дополнительную защиту от вредоносных сайтов;
Семейный (77.88.8.7 и 77.88.8.3)предоставит дополнительную защиту от «взрослых» сайтов.
Norton ConnectSafe
Адреса: 199.85.126.10; 199.85.127.10
Тоже не «просит» предварительную регистрацию, надежно хранит данные пользователя. Создан разработчиками антивируса Norton, не требуя себе дополнительной рекламы.
Вместо послесловия
Каждый из рассмотренных нами DNS-серверов имеет свои плюсы и минусы, и наверняка какой-нибудь вам понравится, и вы будете его использовать. И, напоследок, самое главное – изменив настройки DNS в Windows, обязательно очистите DNS-кэш, иначе вы можете не ощутить сделанных изменений.
CURL – это библиотека функций PHP, с помощью которой можно посылать запросы, например, HTTP, из PHP скрипта. CURL поддерживает такие протоколы как HTTP, HTTPS, FTP и другие. Посылать HTTP запросы можно методами GET, POST, PUT.
CURL может пригодиться в случаях когда необходимо вызвать удаленный скрипт и получить результат или просто сохранить HTML код вызываемой страницы, в общем каждый может найти свое применение но смысл один это то что можно послать запросы в процессе выполнения скрипта.
Команда curl
Перед тем как перейти к описанию того как может использоваться команда curl linux, давайте разберем саму утилиту и ее основные опции, которые нам понадобятся. Синтаксис утилиты очень прост:
$ curlопции ссылка
Теперь рассмотрим основные опции:
-# – отображать простой прогресс-бар во время загрузки;
-0 – использовать протокол http 1.0;
-1 – использовать протокол шифрования tlsv1;
-2 – использовать sslv2;
-3 – использовать sslv3;
-4 – использовать ipv4;
-6 – использовать ipv6;
-A – указать свой USER_AGENT;
-b – сохранить Cookie в файл;
-c – отправить Cookie на сервер из файла;
-C – продолжить загрузку файла с места разрыва или указанного смещения;
-m – максимальное время ожидания ответа от сервера;
-d – отправить данные методом POST;
-D – сохранить заголовки, возвращенные сервером в файл;
-e – задать поле Referer-uri, указывает с какого сайта пришел пользователь;
-E – использовать внешний сертификат SSL;
-f – не выводить сообщения об ошибках;
-F – отправить данные в виде формы;
-G – если эта опция включена, то все данные, указанные в опции -d будут передаваться методом GET;
-H – передать заголовки на сервер;
-I – получать только HTTP заголовок, а все содержимое страницы игнорировать;
-j – прочитать и отправить cookie из файла;
-J – удалить заголовок из запроса;
-L – принимать и обрабатывать перенаправления;
-s – максимальное количество перенаправлений с помощью Location;
-o – выводить контент страницы в файл;
-O – сохранять контент в файл с именем страницы или файла на сервере;
-p – использовать прокси;
–proto – указать протокол, который нужно использовать;
-R – сохранять время последнего изменения удаленного файла;
-s – выводить минимум информации об ошибках;
-S – выводить сообщения об ошибках;
-T – загрузить файл на сервер;
-v – максимально подробный вывод;
-y – минимальная скорость загрузки;
-Y – максимальная скорость загрузки;
-z – скачать файл, только если он был модифицирован позже указанного времени;
-V – вывести версию.
Это далеко не все параметры curl linux, но здесь перечислено все основное, что вам придется использовать.
Проверка Версии Curl
Прежде чем мы начнём работать с Curl, нам нужно войти в наш VPS. Если вам нужна помощь, ознакомьтесь с этим руководством по SSH.
Сначала давайте проверим её доступною версию, с помощью следующей команды:
curl –version
В выводе вы должны увидеть версию и список поддерживаемых протоколов. Теперь мы можем взглянуть на некоторые примеры команд Curl.
Основной Синтаксис Команды Curl
Итак, давайте узнаем, как пользоваться утилитой. Основной синтаксис Curl выглядит следующим образом:
curl [OPTIONS] [URL]
Самый простой пример использования Curl — для отображения содержимого страницы. Приведённая ниже команда отобразит домашнюю страницу testdomain.com.
curl testdomain.com
Эта команда отобразит полный исходный код домашней страницы домена. Если протокол не указан, Curl интерпретирует его как HTTP.
Как пользоваться curl?
Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.
Загрузка файлов
Самая частая задача – это загрузка файлов linux. Скачать файл очень просто. Для этого достаточно передать утилите в параметрах имя файла или html страницы:
Здесь нужно указать количество килобайт в секунду, которые можно загружать. Также вы можете разорвать соединение если скорости недостаточно, для этого используйте опцию -Y:
Загрузка файлов, это достаточно просто, но утилита позволяет выполнять и другие действия, например, отправку файлов на ftp сервер. Для этого существует опция -T:
В ответе утилита сообщит где вы можете найти загруженный файл.
Отправка данных POST
Вы можете отправлять не только файлы, но и любые данные методом POST. Напомню, что этот метод используется для отправки данных различных форм. Для отправки такого запроса используйте опцию -d. Для тестирования будем пользоваться тем же сервисом:
Здесь мы передаем формой поле password, с типом обычный текст, точно так же вы можете передать несколько параметров.
Передача и прием куки
Куки или Cookie используются сайтами для хранения некой информации на стороне пользователя. Это может быть необходимо, например, для аутентификации. Вы можете принимать и передавать Cookie с помощью curl. Чтобы сохранить полученные Cookie в файл используйте опцию -c:
Не всегда нам обязательно нужно содержимое страницы. Иногда могут быть интересны только заголовки. Чтобы вывести только их есть опция -I:
curl -I https://losst.ru
А опция -H позволяет отправить нужный заголовок или несколько на сервер, например, можно передать заголовок If-Modified-Since чтобы страница возвращалась только если она была изменена:
Если на сервере требуется аутентификация одного из распространенных типов, например, HTTP Basic или FTP, то curl очень просто может справиться с такой задачей. Для указания данных аутентификации просто укажите их через двоеточие в опции -u:
Точно так же будет выполняться аутентификация на серверах HTTP.
Использование прокси-сервера
Если вы подключены через прокси-сервер, нужно указать его команде curl при помощи следующих опций (в данном примере имя сервера proxy.yourdomain.com, порт 8080, имя пользователя user, пароль qwerty1234):
Если ваш прокси-сервер не требует аутентификации, опцию -U user:qwerty1234 указывать не нужно.
Команды Curl для HTTP
Curl также можно использовать c прокси-сервером. Если вы находитесь за прокси-сервером, прослушивающим порт 8090 на sampleproxy.com, загрузите файлы, как показано ниже:
В приведённом выше примере вы можете выбросить -U username:password, если прокси-сервер не требует метода аутентификации.
Типичный HTTP-запрос всегда содержит заголовок. Заголовок HTTP отправляет дополнительную информацию об удалённом веб-сервере вместе с фактическим запросом. С помощью инструментов разработчика в браузере вы можете посмотреть сведения о заголовке, а проверить их можно с помощью команды curl.
Пример ниже демонстрирует, как получить информацию о заголовке с веб-сайта.
curl -I www.testdomain.com
Используя curl, вы можете сделать запрос GET и POST. Запрос GET будет выглядеть следующим образом:
Команда содержит запрос POST, за которым следует запрос GET.
Каждый HTTP-запрос содержит агент пользователя, который отправляется как часть запроса. Он указывает информацию о браузере клиента. По умолчанию запрос содержит curl и номер версии в качестве информации об агенте пользователя. Пример вывода показан ниже:
“GET / HTTP/1.1” 200 “_” ”curl/7/29/0”
Вы можете изменить дефолтную информацию об агенте пользователя, используя следующую команду:
curl -I http://mydomain.com –-user-agent “My new Browser”
Теперь вывод будет выглядеть так:
“GET / HTTP/1.1” 200 “_” ”My new Browser”
Команда Curl и Cookies
Утилиту можно использовать для проверки того, какие файлы cookie загружаются по URL. Допустим вы зашли на https://www.samplewebsite.com, вы можете вывести и сохранить файлы cookie в файл, а затем получить к ним доступ, используя команду cat или редактор Vim.
В приведённой выше команде ftp://sampleftpserver — это FTP-сервер, который принимает соединения. Вы можете не указывать имя пользователя и пароль для анонимных FTP-соединений. Введите команду и посмотрите, как заполняется индикатор выполнения.
Вы также можете загружать файлы с помощью этой команды:
Опять же таки, мы можем пропустить имя пользователя и пароль для анонимных FTP-соединений.
Ограничение Скорости Скачивания
Скачивая или загружая данные с помощью Curl, вы не можете знать, насколько большим будет вывод. Вы можете ограничить скорость скачивания, чтобы убедиться, что Curl не ограничивает пропускную способность канала.
Команда ниже ограничивает скорость скачивания до 100К:
Если использовать curl вместе с командой xargs, можно скачивать файлы в соответствии со списком URL, заданном в файле (в данном примере listurls.txt):
$ xargs -n 1 curl < listurls.txt
Отправка файлов cookie на сайт
Полученные в предыдущем примере файлы cookie можно использовать в дальнейших запросах к тому же самому сайту:
$ curl –cookie cookies.txt https://itproffi.ru
Изменение разрешения имен
Если вы веб-разработчик и хотите протестировать локальную версию сайта, прежде чем загружать его на сервер, при помощи опции —resolve можно указать curl выполнять разрешение имени вашего сайта на адрес локального узла, например:
Таким образом, при запросе на http://www.yourdomain.com curl будет запрашивать сайт с локального узла, а не использовать DNS или файл /etc/hosts.
Подключение библиотеки CURL в PHP
Для того чтобы использовать библиотеку CURL ее соответственно нужно подключить.
Примечание!В качестве примера мы будем использовать PHP 5.4.39 на Windows 7, а в качестве Web-сервера у нас будет выступать Apache 2.2.22.
Первое что нужно сделать, это скопировать библиотеки ssleay32.dll, libeay32.dll, libssh2.dll они расположены в директории с PHP, в системный каталог Windows, а именно в C:WindowsSystem32.
Затем в php.ini подключить библиотеку php_curl.dll, т.е. раскомментировать следующую строку
Библиотека не подключена
>;extension=php_curl.dll
Библиотека подключена
extension=php_curl.dll
Все, перезапускаем Apache, вызываем функцию phpinfo() и в случае успешного подключения у Вас должен появиться раздел curl
Если его нет, то это означает только одно, что библиотека не загрузилась, самая распространенная причина этого небыли скопированы вышеперечисленные DLL в системный каталог Windows.
Пример CURL – запрашиваем удаленную страницу для вывода на экран
В данном примере мы просто запросим удаленную страницу по протоколу HTTP методом GET и выведем ее содержимое на экран.
У нас имеется каталог test в нем 2 PHP файла это test_curl.php и test.php, где test_curl.php и есть скрипт где мы будем использовать curl, а test.php удаленный скрипт который мы будем вызывать. Код я подробно прокомментировал.
Код test_curl.php
Код test.php
Заголовок 1н1>»;
break;
case 2:
echo «Заголовок 2н2>»;
break;
case 3:
echo «Заголовок 3н3>»;
break;
}
}
?>
В итоге если вы запустите test_curl.php у Вас выведется на экран надпись «Заголовок 1», можете поэкспериментировать с передачей параметров id (в данном случае 2 или 3).
Пример CURL – вызываем удаленный скрипт и получаем результат
Сейчас давайте попробуем вызвать скрипт и получить результат, для того чтобы потом его обработать, для примера давайте использовать метод POST. Названия файлов оставим такими же.
Код test_curl.php
Код test.php
И если мы запустим test_curl.php то на экран у нас выведется 111, т.е. 1.11 полученное в результате обращения к удаленному скрипту, умноженное на 100.
А теперь давайте поговорим о функциях и константах к ним.
Часто используемые функции CURL и константы
curl_init — Инициализирует сеанс;
curl_close — Завершает сеанс;
curl_exec — Выполняет запрос;
curl_errno — Возвращает код ошибки;
curl_setopt — Устанавливает параметр для сеанса, например:
CURLOPT_HEADER – значение 1 означает, что необходимо вернуть заголовки;
CURLOPT_INFILESIZE — параметр для указания ожидаемого размера файла;
CURLOPT_VERBOSE — значение 1 означает что CURL будет выводить подробные сообщения о всех производимых операциях;
CURLOPT_NOPROGRESS – отключение индикатора прогресса операции, значение 1;
CURLOPT_NOBODY – если Вам не нужен документ, а нужны только заголовки, то поставьте значение 1;
CURLOPT_UPLOAD — для закачки файла на сервер;
CURLOPT_POST – выполнить запрос методом POST;
CURLOPT_FTPLISTONLY — получение списка файлов в директории FTP сервера, значение 1;
CURLOPT_PUT — выполнить запрос методом PUT, значение 1;
CURLOPT_RETURNTRANSFER — возвратить результат, не выводя в браузер, значение 1;
CURLOPT_TIMEOUT – максимальное время выполнения в секундах;
CURLOPT_URL – указание адреса для обращения;
CURLOPT_USERPWD — строка с именем пользователя и паролем в виде [username]:[password];
CURLOPT_POSTFIELDS – данные для POST запроса;
CURLOPT_REFERER — задает значение HTTP заголовка «Referer: »;
CURLOPT_USERAGENT — задает значение HTTP заголовка «User-Agent: »;
CURLOPT_COOKIE — содержимое заголовка «Cookie: », который будет отправлен с HTTP запросом;
CURLOPT_SSLCERT- имя файла с сертификатом в формате PEM;
CURLOPT_SSL_VERIFYPEER – значение 0, для того чтобы запретить проверку сертификата удаленного сервера (по умолчанию 1);
CURLOPT_SSLCERTPASSWD — пароль к файлу сертификата.
curl_getinfo — Возвращает информацию об операции, вторым параметром может выступать константа для указания, что именно нужно показать, например:
CURLINFO_EFFECTIVE_URL — последний использованный URL;
CURLINFO_HTTP_CODE — последний полученный код HTTP;
CURLINFO_FILETIME — дата модификации загруженного документа;
CURLINFO_TOTAL_TIME — время выполнения операции в секундах;
CURLINFO_NAMELOOKUP_TIME — время разрешения имени сервера в секундах;
CURLINFO_CONNECT_TIME — время, затраченное на установку соединения, в секундах;
CURLINFO_PRETRANSFER_TIME — время, прошедшее от начала операции до готовности к фактической передаче данных, в секундах;
CURLINFO_STARTTRANSFER_TIME — время, прошедшее от начала операции до момента передачи первого байта данных, в секундах;
CURLINFO_REDIRECT_TIME — время, затраченное на перенаправление, в секундах;
CURLINFO_SIZE_UPLOAD — количество байт при закачке;
CURLINFO_SIZE_DOWNLOAD — количество байт при загрузке;
CURLINFO_SPEED_DOWNLOAD — средняя скорость закачки;
CURLINFO_SPEED_UPLOAD — средняя скорость загрузки;
CURLINFO_HEADER_SIZE — суммарный размер всех полученных заголовков;
CURLINFO_REQUEST_SIZE — суммарный размер всех отправленных запросов;
CURLINFO_SSL_VERIFYRESULT — результат проверки SSL сертификата, запрошенной с помощью установки параметра CURLOPT_SSL_VERIFYPEER;
CURLINFO_CONTENT_LENGTH_DOWNLOAD — размер загруженного документа, прочитанный из заголовка Content-Length;
CURLINFO_CONTENT_LENGTH_UPLOAD — размер закачиваемых данных;
CURLINFO_CONTENT_TYPE — содержимое полученного заголовка Content-type, или NULL в случае, когда этот заголовок не был получен.
Подробнее о функциях CURL и константах к ним можете посмотреть на официальном сайте PHP — php.net
На этом все, для начинающих я думаю достаточно Удачи!
POST запрос с помощью CURL
Давайте напишем наш первый скрипт, который отправит данные методом POST на какую-нибудь страницу и посмотрит, что отобразилось на этой странице.
Сначала нам нужен файл, который бы принял наши данные и что-то вывел на страницу. Я расположил его по адресу https://intop24.ru/demo/curl/post.php. В нем содержится следующий код:
if (isset($_POST) && sizeof($_POST) > 0) { print_r($_POST); }
Смысл здесь абсолютно такой же, как и в запросе POST.
Файл, который примет данные: https://intop24.ru/demo/curl/upload_file.php.
print_r($_FILES); print_r($_POST);
Теперь попробуем передать туда какие-то данные:
$upload = ‘test_file.jpg’; $postdata = array( ‘name’ => ‘German’, ’email’ => ‘krutovgerman2007@ya.ru’, ‘message’ => ‘Какое-то сообщение от пользователя German’, ‘upload’ => “@”.$upload ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, ‘https://intop24.ru/demo/curl/upload_file.php’); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $output = curl_exec($ch); if ($output === FALSE) { // Тут-то мы о ней и скажем echo “cURL Error: ” . curl_error($ch); return; } print_r($output); curl_close($ch);
Результат можно посмотреть здесь: curl_post_file.php
Загрузка файла – это тот же самый POST-запрос, однако перед путем к файлу стоит знак “@”, что и обозначает, что нужно это передать не как $_POST, а как $_FILES.
HTTP аутентификация с помощью CURL
Довольно полезная штука.
$url = “https://www.site.com/”; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Указываем имя и пароль curl_setopt($ch, CURLOPT_USERPWD, “krutovgerman2007@yandex.ru:mypassword”); // Если перенаправление разрешено curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // То сохраним наши данные в cURL curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1); $output = curl_exec($ch); curl_close($ch);
Для изменения владельца и группы файла используется команда chown.
Для изменения владельца файла используется следующий синтаксис:
chown новый_владелец имя_файла
Например, установим для файла myfile нового владельца vasya:
chown vasya myfile
Для изменения владельца и группы файла используется следующий синтаксис:
chown новый_владелец:новая_группа имя_файла
Например, установим для файла myfile нового владельца vasya и группу sambashare:
chown vasya:sambashare myfile
Команда chgrp — изменение группы
Есть еще одна команда — chgrp. Она позволяет изменить только группу. Например:
chgrp sambashare myfile
Параметры chmod
-c, –changes Подобно –verbose, но выдает подробный вывод только тогда, когда изменение действительно сделано.
-f, –silent, –quiet Бесшумный режим; подавлять большинство сообщений об ошибках.
-v, –verbose Подробный режим; вывести диагностическое сообщение для каждого обработанного файла.
–no-preserve-root Не обрабатывать ‘/’ (корневой каталог) каким-либо особым образом, который является настройкой по умолчанию.
–preserve-root Не работать рекурсивно на «/».
–reference=RFILE Установить разрешения, соответствующие разрешениям файла RFILE, игнорируя любой указанный РЕЖИМ.
-R, –recursive Менять файлы и каталоги рекурсивно.
–help Показать справочное сообщение и выйти.
–version Вывести информацию о версии и выйти.
Синтаксис
chmod [параметры] [права] путь
Основные параметры:
-c – показать информация обо всех изменениях.
-f – не показывать ошибки.
-v – вывод полной информации.
-R – рекурсивно обрабатывать файлы и каталоги.
–help – показать справочную информацию.
–version – информация о версии.
Применят часто символьную запись прав:
-r – на чтение
-w – на запись
-x – на выполнение, права на запуск
-s – на выполнение от супер пользователя root.
ВАЖНО! Записывают права в таком порядке: чтение–>запись–>выполнение.
Категории пользователей:
-u (owner) – владелец.
-g (group) – группа.
-o (others)- другие.
Каждый кто имеет доступ к документу имеет свой набор правил. Например владелец имеет неограниченный доступ, группа только писать, другие выполнять.
Чтобы прибавить права используется знак “+”, убавить “-“. chmod ugo+rwx file
Вместо букв можно назначать права с помощью цифр от нуля до семи:
0 – все запрещено
1 – выполнение, разрешено запускать документ
2 – запись, изменение.
3 – выполнение и запись.
4 – разрешено читать.
5 – читать и выполнять
6 – читать и писать
7 – все разрешено, писать, читать, выполнять.
chmod 777 file
Здесь 777:
первая цифра назначает разрешения для владельца документа;
вторая цифра – для группы;
третья – для всех остальных.
Примеры прав на директорию:
744 – первая цифра говорит, что имеет полный доступ владельц, вторая цифра четыре – чтение для группы, третья цифра четыре – всем другим можно читать;
765 – для владельца – полные права, для группы – читать, писать и другим читать, выполнять;
774 – полный доступ для владельца, полный доступ для группы, чтение для остальных;
777 – всем все разрешено.
Техническое описание
chmod изменяет режим файла каждого указанного ФАЙЛА в соответствии с MODE, который может быть либо символическим представлением вносимых изменений, либо восьмеричным числом, представляющим битовую комбинацию для битов нового режима.
Формат символического режима:
[ugoa…][[+-=][perms…]…]
где perms – это ноль или более букв из набора r, w, x, X, s и t, или одна буква из набора u, g и o. Можно указать несколько символьных режимов, разделенных запятыми.
Комбинация букв u, g, o и элементов управления, которые изменят доступ пользователей к файлу: пользователь, которому он принадлежит (u), другие пользователи в группе файла (g), другие пользователи, которых нет в файле группа (o) или все пользователи (a). Если ничего из этого не дано, эффект будет таким, как если бы был задан a, но биты, которые установлены в umask, не затрагивались.
Оператор (+) вызывает добавление выбранных битов режима файла к существующим битам режима файла каждого файла; ” -” вызывает их удаление; и “=” вызывает их добавление и приводит к удалению не упомянутых битов, за исключением того, что неизменяемые установленные пользователем биты каталога и идентификаторы группы не затрагиваются.
Буквы r, w, x, X, s и t выбирают биты режима файла для затронутых пользователей: чтение (r), запись (w), выполнение (x), выполнение только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя (X) установите идентификатор пользователя или группы при выполнении (s), флаг ограниченного удаления или фиксированный бит (t). Для каталогов параметры выполнения X и X определяют разрешение на просмотр содержимого каталога.
Вместо одной или нескольких из этих букв вы можете указать одну из букв u, g или o: разрешения, предоставленные пользователю, которому принадлежит файл (u), разрешения, предоставленные другим пользователям, которые являются членами группы файла (g) и разрешения, предоставленные пользователям, которые не входят ни в одну из двух предыдущих категорий (o).
Числовой режим – от одной до четырех восьмеричных цифр (0-7), полученных путем сложения битов со значениями 4, 2 и 1. Предполагается, что пропущенные цифры являются ведущими нулями. Первая цифра выбирает заданный идентификатор пользователя (4) и заданный идентификатор группы (2) и атрибуты ограниченного удаления или закрепления (1). Вторая цифра выбирает права доступа для пользователя, которому принадлежат операции чтения (4), записи (2) и выполнения (1); третий выбирает права доступа для других пользователей в группе файла с теми же значениями; и четвертый для других пользователей, не входящих в группу файла, с теми же значениями.
chmod никогда не меняет права доступа к символическим ссылкам; системный вызов chmod не может изменить их разрешения. Но это не проблема, поскольку разрешения символических ссылок никогда не используются. Однако для каждой символической ссылки, указанной в командной строке, chmod изменяет права доступа к указанному файлу. Напротив, chmod игнорирует символические ссылки, встречающиеся во время рекурсивных обходов каталогов.
Биты Setuid и Setgid
chmod очищает бит set-group-ID обычного файла, если идентификатор группы файла не совпадает с эффективным идентификатором группы пользователя или одним из идентификаторов дополнительной группы пользователя, если только у пользователя нет соответствующих привилегий. Дополнительные ограничения могут привести к игнорированию битов set-user-ID и set-group-ID в MODE или RFILE. Это поведение зависит от политики и функциональности основного системного вызова chmod. В случае сомнений проверьте поведение системы.
chmod сохраняет биты set-user-ID и set-group-ID каталога, если вы не укажете иное. Вы можете установить или очистить биты с помощью символических режимов, таких как u + s и g-s, и вы можете установить (но не очистить) биты с помощью числового режима.
Флаг ограниченного удаления (или «Sticky Bit»)
Ограниченный флаг удаления или закрепленный бит – это один бит, интерпретация которого зависит от типа файла. Это предотвращает удаление или переименование файла в каталоге пользователям, которые не владеют файлом или каталогом; это называется флагом ограниченного удаления для каталога и обычно встречается в каталогах, доступных для записи во всем мире, таких как / tmp. Для обычных файлов в некоторых старых системах этот бит сохраняет текстовое изображение программы на устройстве подкачки, поэтому при запуске он загружается быстрее; это называется липким битом.
Как посмотреть разрешения файла
Быстрый и простой способ составить список прав доступа к файлу с помощью опции длинного списка (-l) команды ls. Например, чтобы просмотреть разрешения для file.txt, вы можете использовать команду:
ls -l file.txt
… который будет отображать вывод, который выглядит следующим образом:
rwxrw-r– 1 user usergroup 123 Feb 03 15:36 file.txt
Примеры использования chmod
chmod 644 file.htm
Устанавливает для файла file.htm права «владелец может читать и писать; группа может только читать; другие могут только читать».
chmod -R 755 myfiles
Рекурсивно (-R) меняет разрешения для каталога myfiles и всех его папок и файлов на режим 755. Пользователь может читать, записывать и выполнять; члены группы и другие пользователи могут читать и выполнять, но не могут писать.
chmod u=rw example.jpg
Меняет разрешения для владельца example.jpg, чтобы владелец мог читать и записывать файл. Не меняет права доступа для группы или для других.
chmod u+s comphope.txt
Устанавливает бит «Set-User-ID» файла comphope.txt, чтобы каждый, кто пытается получить доступ к этому файлу, сделал это так, как если бы он был владельцем файла.
Устанавливает разрешения для file.cgi на «чтение, запись и выполнение владельцем» и «чтение и выполнение группой и всеми остальными».
chmod 666 file.txt
Устанавливает разрешение file.txt на «чтение и запись всеми».
chmod a=rw file.txt
Выполняет то же самое, что и вышеприведенная команда, используя символическую запись.
Изменение прав доступа командой chmod
Запись прав доступа числом
Пример:
chmod 764 myfile
В данном формате права доступа задаются не символами rwx, как описано выше, а трехзначным числом. Каждая цифра числа означает определенный набор прав доступа.
Первая цифра используется для указания прав доступа для пользователя.
Вторая цифра для группы.
Третья для всех остальных.
В таблице ниже приводятся все возможные комбинации разрешений rwx и соответсвующие им числа (которые используются в команде chmod):
ЧислоРазрешенияСимвольное обозначение
0
разрешения отсутствуют
—
1
x — запуск
–x
2
w — изменение
-w-
3
x+w — запуск+изменение
-wx
4
r — чтение
r–
5
r+x — чтение+запуск
r-x
6
r+w — чтение+изменение
rw-
7
r+w+x — чтение+изменение+запуск
rwx
Рассмотрим использование команды chmod с записью прав доступа числом на примере. Установим для файла права доступа 764:
chmod 764 myfile
Это означает (см. таблицу выше), что для файла myfile мы устанавливаем права доступа 764, которые означают:
7 — права для владельца-пользователя. Владелец файла может читать, изменять и запускать файл (r+w+x).
6 — права для группы. Пользователи, которые принадлежат группе могут читать и изменять файл (r+w).
4 — права для всех остальных. Все остальные могут только читать файл (r).
Если записать 764 с помощью символов (см. таблицу), то мы получим: «rwxrw-r-».
В таблице ниже приведены некоторые часто используемые значения числовых значений прав доступа:
Числовое обозначение”rwx”-обозначениеОписание
400
-r——–
Владелец файла может только читать файл. Для всех остальных все действия с файлом запрещены.
644
-rw-r–r–
Все пользователи могут читать файл. Владелец может изменять файл.
660
-rw-rw—-
Владелец и группа могут читать и изменять файл. Для всех остальных все действия с файлом запрещены.
664
-rw-rw-r–
Все могут читать файл. Владелец и группа могут изменять.
666
-rw-rw-rw-
Все могут читать и изменять файл.
700
-rwx——
Владелец может читать, изменять и запускать файл. Для всех остальных все действия с файлом запрещены.
744
-rwxr–r–
Все могут читать файл. Владелец может также изменять и запускать файл.
755
-rwxr-xr-x
Все могут читать и запускать файл. Владелец может также изменять файл.
777
-rwxrwxrwx
Все пользователи могут читать, изменять и редактировать файл.
Как вы можете видеть, в данном формате права доступа задаются символами rwx, но в синтаксисе используются и другие вспомогательные символы, например, математические операции «+» и «-» и такие символы как, например, «g» или «u».
Добавляет к текущим правам доступа новое разрешение.
–
Удаляет из текущих прав доступа определенное разрешение.
=
Устанавливает полностью новые разрешения (предыдущие перезаписываются новыми).
В одной команде можно перечислять владельцев и их разрешения через запятую (см. пример ниже).
Рассмотрим примеры:
chmod +x myfile1
В данном случае мы не используем обозначения для владельцев, а значит разрешения устанавливаются для всех пользователей. «+x» означает — установить разрешение на запуск (x) файла для всех пользователей. Это эквивалентно выполнению команды: chmod a+x myfile1.
chmod g=rw myfile2
Здесь используется обозначение g и символ равенства «=». Это означает, что для группы мы устанавливаем права доступа на чтение и запись файла (rw).
chmod u-w myfile3
Для владельца файла (u) мы удаляем разрешение на изменение (w) файла.
chmod ug+x myfile2
Разрешаем владельцу (u) и группе (g) запускать файл (x).
chmod u+x,g-w,o-r myfile3
Это как раз тот случай, когда мы перечисляем владельцев через запятую и устанавливаем для них разрешения. Для владельца файла (u) мы разрешаем запуск файла, для группы (g) мы запрещаем изменять файл, для всех остальных (o) мы запрещаем читать файл.
Рекурсивное изменение прав доступа
Если необходимо изменить права доступа на все файлы в директории, включая вложенные директории, то для этого существует опция -R, что означает рекурсивное изменение прав доступа для директорий и их содержимого. Например, изменим права доступа у всех файлов в директории Mydir:
chmod -R 644 Mydir
И еще один момент. Если пользователь не является владельцем файла, но ему нужно изменить права доступа у данного файла, то команду chmod необходимо выполнять с использованием sudo, например:
sudo chmod 644 file
Видео-обзор команды chmod
Понимание прав доступа к файлам Linux
В Linux доступ к файлам контролируется операционной системой, используя права доступа к файлам, атрибуты и права собственности. Понимание модели разрешений файловой системы Linux позволяет ограничить доступ к файлам и каталогам только авторизованным пользователям и процессам и сделать вашу систему более безопасной.
Каждый файл принадлежит конкретному пользователю и группе и ему назначены права доступа для трех разных классов пользователей:
Владелец файла.
Участники группы.
Другие (все остальные).
Существует три типа прав доступа к файлам, которые применяются к каждому классу пользователей и позволяют указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл. Одинаковые атрибуты разрешений применяются как к файлам, так и к каталогам с различным значением:
Разрешение на чтение.
Файл доступен для чтения. Например, когда установлено разрешение на чтение, пользователь может открыть файл в текстовом редакторе.
Содержимое каталога можно просмотреть. Пользователь может перечислить файлы внутри каталога с помощью команды ls.
Разрешение на запись.
Файл может быть изменен или изменен.
Содержимое каталога может быть изменено. Пользователь может создавать новые файлы , удалять существующие файлы , перемещать файлы , переименовывать файлы .. и т. д.
Разрешение на выполнение.
Файл может быть выполнен.
Каталог может быть введен с помощью cdкоманды.
Права доступа к файлам можно просмотреть с помощью команды ls. Вот пример:
Первый символ показывает тип файла. Это может быть обычный файл ( -), каталог ( d), символическая ссылка ( l) или любой другой специальный тип файла.
Следующие девять символов представляют права доступа к файлу, три тройки по три символа в каждом. Первый триплет показывает разрешения владельца, второй – разрешения группы, а последний триплет – разрешения всех остальных.
Номер разрешения
Разрешение файла может быть представлено в числовом или символическом формате. В этой статье мы сосредоточимся на числовом формате.
Номер разрешения может состоять из трех или четырех цифр в диапазоне от 0 до 7.
Когда используется 3-значное число, первая цифра представляет права владельца файла, вторая – группу файла, а последняя – всех остальных пользователей.
Разрешения на запись, чтение и выполнение имеют следующее числовое значение:
r (читай) = 4
w (запись) = 2
x (выполнить) = 1
нет разрешений = 0
Цифра разрешений определенного пользовательского класса является суммой значений разрешений для этого класса.
Каждая цифра номера разрешений может быть суммой 4, 2, 1 и 0:
0 (0 + 0 + 0) – Нет разрешения.
1 (0 + 0 + 1) – только разрешение на выполнение.
2 (0 + 2 + 0) – только разрешение на запись.
3 (0 + 2 + 1) – разрешения на запись и выполнение.
4 (4 + 0 + 0) – только разрешение на чтение.
5 (4 + 0 + 1) – разрешение на чтение и выполнение.
6 (4 + 2 + 0) – права на чтение и запись.
7 (4 + 2 + 1) – разрешение на чтение, запись и выполнение.
Например, если номер разрешения установлен равным 750, это означает, что владелец файла имеет права на чтение, запись и выполнение, группа файла имеет разрешения на чтение и выполнение, а другие пользователи не имеют разрешений:
Владелец: rwx = 4 + 2 + 1 = 7
Группа: rx = 4 + 0 + 1 = 5
Другие: rx = 0 + 0 + 0 = 0
Когда используется 4-значный номер, первая цифра имеет следующее значение:
УИП = 4
setgid = 2
липкий = 1
без изменений = 0
Следующие три цифры имеют то же значение, что и при использовании трехзначного числа. Если первая цифра равна 0, ее можно опустить, а режим можно представить тремя цифрами. Числовой режим 0755 такой же, как 755.
Чтобы просмотреть разрешения для файла в числовой (восьмеричной) записи, используйте команду stat:
stat -c “%a” filename 644
Никогда не используйте chmod 777
Установка 777 разрешений для файла или каталога означает, что он будет доступен для чтения, записи и выполнения всеми пользователями и может представлять огромную угрозу безопасности.
Например, если вы рекурсивно измените разрешения всех файлов и подкаталогов в каталоге /var/www на 777, любой пользователь в системе сможет создавать, удалять или изменять файлы в этом каталоге.
Если у вас возникают проблемы с правами доступа к веб-серверу, вместо рекурсивной установки разрешения 777, измените владельца файла на пользователя, запустившего приложение, и установите права доступа к файлу и разрешения для каталога с 644 на 755.
Владелец файла может быть изменен с помощью chownкоманды и разрешений с командой chmod.
Допустим, на вашем сервере есть приложение PHP, работающее от имени пользователя «andreyex». Чтобы установить правильные разрешения, вы должны запустить:
chown -R andreyex: /var/wwwfind /var/www -type d -exec chmod 755 {} ;find /var/www -type f -exec chmod 644 {} ;
Только root, владелец файла или пользователь с правами sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod, особенно при рекурсивном изменении разрешений.
Прежде чем мы начнём углубляться в тему статьи, мы должны войти в VPS через SSH и быстро проверить основной синтаксис. Команда принимает имя файла в качестве аргумента вместе с опциями, уточняющими отдельные операции.
Чтобы найти все доступные опции, просто введите cat –help в терминале.
Подготовительные действия
Сначала хотелось бы уделить время предварительным действиям, поскольку не все юзеры знакомы с принципом работы консоли. Дело в том, что при открытии файла требуется либо указывать точный путь к нему, либо производить запуск команды, находясь непосредственно в самой директории через «Терминал». Поэтому мы советуем для начала просмотреть такое руководство:
Запустите файловый менеджер и перейдите в ту папку, где хранятся необходимые файлы.
Нажмите на одном из них правой кнопкой мыши и выберите пункт «Свойства».
Во вкладке «Основные» ознакомьтесь с информацией по поводу родительской папки. Запомните этот путь, ведь он пригодится далее.
Запустите «Терминал» через меню или комбинацию клавиш Ctrl + Alt + T.
Пропишите команду cd /home/user/folder, где user — имя пользователя, а folder — папка, где хранятся объекты. За перемещение по пути отвечает стандартная команда cd.
Таким методом осуществляется переход к определенной директории через стандартную консоль. Дальнейшие действия также будут производиться через эту папку.
Просмотр содержимого
Одна из основных функций упомянутой команды — просмотр содержимого различных файлов. Вся информация отображается отдельными строками в «Терминале», а применение cat выглядит так:
В консоли введите cat testfile, где testfile — имя необходимого файла, а затем нажмите на клавишу Enter.
Ознакомьтесь с содержимым объекта.
Вы можете открыть сразу несколько файлов, для этого потребуется указать все их названия, например, cat testfile testfile1.
Строки будут совмещены и отобразятся одним целым.
Вот так работает cat без применения доступных аргументов. Если же вы просто пропишите в «Терминале»cat, то получите некое подобие консольного блокнота с возможностью записывать нужное количество строк и сохранять их нажатием на Ctrl + D.
Нумерация строк
Сейчас давайте затронем рассматриваемую команду с применением различных аргументов. Начать следует с нумерации строк, а за это отвечает -b.
В консоли напишите cat -b testfile, где testfile — название нужного объекта.
Как видите, были пронумерованы все присутствующие не пустые строки.
Вы можете использовать этот аргумент с выводом нескольких файлов, как это было показано выше. В таком случае нумерация будет продолжаться.
Если есть желание пронумеровать все строки, включая пустые, придется задействовать аргумент -n, и тогда команда приобретает вид: cat -n testfile.
Удаление повторяющихся пустых строк
Случается так, что в одном документе присутствует множество пустых строк, возникших каким-либо образом. Вручную удалять их через редактор не всегда удобно, поэтому здесь тоже можно обратиться к команде cat, применив аргумент -s. Тогда строка приобретает вид cat -s testfile (доступно перечисление нескольких файлов).
Добавление знака $
В операционной системе Linux знак доллара в конце строчки, означает что команда будет выполнена без root прав. Бывает, что нужно добавить символ “$” в конец всех строк документа, для этого нам поможет опция -e. cat -e script
Небольшой вывод
В итоге можно сказать, что популярная утилита имеет три основных функции:
выводит на экран текст;
перенаправляет стандартный вывод;
добавляет символа $.
Отображение текстовых файлов
Простейший способ использования cat – задать команде имя файла. Содержимое текстового файла будет выведено на экран. Например, следующая команда прочитает содержимое файла mytext.txt и выведет его в стандартный поток вывода (экран вашего терминала): cat mytext.txt
Если файл слишком длинный, он пролистается, и вы увидите только последний экран. При необходимости просмотреть документ постранично или прокручивать его вперёд и назад можно воспользоваться такими средствами просмотра как pg, more или less.
Когда указано несколько файлов, cat будет выводить их последовательно, объединяя содержимое в потоке стандартного вывода. Поэтому следующая команда выведет содержимое двух текстовых файлов, как если бы они были одним:
С помощью cat и символа > мы перенаправили стандартный вывод в файл new_file. Для завершения заполнения файла данными перейдите на новую строку и нажмите Ctrl+D.
Просмотр файлов с помощью cat в Linux
Для просмотра файла просто наберите: #cat <имя_файла> <текстареа wrap=”soft” class=”crayon-plain print-no” data-settings=”dblclick” readonly=”” style=”-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 21px !important;”> [hc@host ~]# cat new_file это новый файл
<текстареа wrap=”soft” class=”crayon-plain print-no” data-settings=”dblclick” readonly=”” style=”-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 21px !important;”> [hc@host ~]# cat -n new_file old_file 1 это 2 новый 3 файл 4 Это старый файл
12345
[hc@host~]# cat -n new_file old_file 1 это 2 новый 3 файл 4 Этостарыйфайл
Обратите внимание, что содержимое выводится единым массивом данных, что хорошо видно по тому, что содержание второго файла вывелось строкой под номером 4 – нумерация не началась заново при выводе этого файла. Т.е. cat, как это и заложено в ее названии, склеила файлы.
Редирект Контента с Помощью Команды Cat
Вы можете не только отобразить содержимое файла в консоли, но и перенаправить вывод в другой файл, используя параметр >. Вот пример команды:
cat ishodnyifail.txt > failnaznachenija.txt
Если файл назначения не существует, команда создаст его или перезапишет существующий с таким же именем.
Чтобы добавить содержимое в файл назначения, используйте опцию >>:
cat ishodnyifail.txt >> failnaznachenija.txt
Конкатенация («Склеивание») Файлов с Помощью Команды Cat
Команда cat также позволяет объединять несколько файлов в один. По сути это работает так же, как и функция перенаправления выше, но с несколькими исходными файлами.
Как и ранее, приведенная выше команда создаст файл назначения, если он не существует, или перезапишет существующий файл с таким же именем.
Обозначение Конца Строки Командой Cat
С помощью команды cat также можно обозначить конец строки. Маркер конца строки — символ $. Чтобы реализовать эту функцию, используйте параметр -E:
cat -E imiafaila.txt
Нумерация Строк с Помощью Команды Cat в Linux
Эта команда также позволяет отобразить содержимое файла с пронумерованными строками. Реализует эту функцию опция -n:
cat -n imiafaila.txt
Присоединение содержимого текстового файла в конец другого текстового файла
Вместо перезаписи файла можно присоединить текст файла-источника к другому файлу при помощи оператора перенаправления «>>». Например, команда:
cat mytext.txt >> another-text-file.txt
Прочтет содержимое mytext.txt и запишет его в конец файла another-text-file.txt. Если этот файл не существует, он будет создан, и содержимое mytext.txt будет записано в новый файл. Это работает также для нескольких файлов. Следующая команда последовательно запишет содержимое mytext.txt и mytext2.txt в конец файла another-text-file.txt:
Если в качестве имени файла задать дефис («-«), cat осуществляет считывание из стандартного потока ввода. Например, если у вас есть файл list.txt со следующим текстом:
яблоки апельсины масло хлеб
вы можете воспользоваться командой echo для вывода текста, направить этот текст команде cat и указать ей объединить его с содержимым файла:
echo “Мой список покупок” | cat – list.txt
На выходе получим следующий текст:
Мой список покупок яблоки апельсины масло хлеб
Основные параметры команды cat
После того, как вы поиграли с различными форматами двоичных файлов, вернемся к простым старым текстовым файлам, изучив пару опций, специально предназначенных для работы с этими файлами. Несмотря на то, что они не являются частью стандарта POSIX, эти параметры являются переносимыми по версиям BSD и GNU для cat. Обратите внимание: мы не претендуем на то, что мы здесь разберем все моменты, поэтому проверьте страницу man, чтобы увидеть полный список опций, поддерживаемых вашей системой команду cat!
-n: числовые строки
С помощью опции n команда cat префикс каждой выходной строки по номеру строки:
cat -n andreyex.txt 1 2 andreyex andreyex n. 3 a natural family of lithe-bodied round-headed fissiped 4 mammals, including the cats; wildcats; lions; leopards; 5 cheetahs; and saber-toothed tigers. 6 7 Syn: family {andreyex}. 8 [WordNet 1.5] 9
В параметр -n число выходных линий. Это означает, что счетчик не сбрасывается при переходе от одного входного файла в другой, как вы увидите это, если вы попробовали самостоятельно следующую команду:
С помощью опции -s команда cat сбрасывает несколько последовательных пустых строк:
cat -n ubuntu.txt andreyex.txt | sed -n 8,13p 8 lynx ({ubuntu lynx}) is also called {Lynx lynx}. 9 [1913 Webster +PJC] 10 11 12 andreyex andreyex n. 13 a natural family of lithe-bodied round-headed fissiped sylvain@bulbizarre:~$ cat -ns ubuntu.txt andreyex.txt | sed -n 8,13p 8 lynx ({ubuntu lynx}) is also called {Lynx lynx}. 9 [1913 Webster +PJC] 10 11 andreyex andreyex n. 12 a natural family of lithe-bodied round-headed fissiped 13 mammals, including the cats; wildcats; lions; leopards;
В приведенном выше примере вы можете увидеть, что в выводе по умолчанию строки 10 и 11 были пустыми. При добавлении опции -s вторая пустая строка была отброшена.
-b: число только непустые строки
Несколько связанный с двумя предыдущими вариантами, опция -b будет содержать строки, игнорируя пустые:
$ cat -b andreyex.txt | cat -n 1 2 1 andreyex andreyex n. 3 2 a natural family of lithe-bodied round-headed fissiped 4 3 mammals, including the cats; wildcats; lions; leopards; 5 4 cheetahs; and saber-toothed tigers. 6 5 7 6 Syn: family {andreyex}. 8 7 [WordNet 1.5] 9
В приведенном выше примере используются два экземпляра команды cat с различными параметрами в контейнере. Внутренняя нумерация происходит с помощью опции -b, используемой с первой командой cat. Внешняя нумерация исходит с помощью опции -n, используемой со второй командой cat.
Как вы можете увидеть, первая и последняя строки не были пронумерованы опцией -b, потому что они пусты. Но как насчет 6-й линии? Почему она по-прежнему нумеруется с опцией -b? Ну, потому что это строка заполненная пробелами, но не пустая, как мы увидим в следующем разделе.
-v,,-e, -t: Отображение непечатаемых символов
Три варианта,-v, -e `, and `-t которые используются для отображения различных наборов невидимых символов. Даже если наборы перекрываются, нет опции «catch-all», поэтому вам придется комбинировать их, если вы хотите отображать все невидимые символы.
-v: просмотр невидимых символов
Опция -v отображает все непечатаемые символы с кареткой и мета – обозначениями, за исключением строки и табуляции.
С помощью этой опции управляющие символы будут отображаться как каретка ( ^), за которыми следует соответствующий символ ASCII (например, возврат каретки, 13 байт отображается так, ^M как M в ASCII – 64 + 13), а символы с набором бит высокого порядка появится в «мета» описании M- за которой следует представление, соответствующее 7 младшим битам (например, байт 141 будет отображаться так, M-^M как 141 – 128 + 13).
Хотя, казалось бы, эзотерическая, эта функция может быть полезна при работе с двоичными файлами, например, если вы хотите изучить необработанную информацию, встроенную в файл JPEG:
Другим вариантом использования этого параметра -v является поиск управляющих символов, которые могли бы просочиться в текстовый файл. Если вы запомнили это, у нас есть эта странная проблема выше с вариантом,-b, обозначающим 6-ю строку ввода, тогда как она выглядела пустой. Итак, давайте расследуем следующее:
$ cat -v andreyex.txt andreyex andreyex n.^M a natural family of lithe-bodied round-headed fissiped^M mammals, including the cats; wildcats; lions; leopards;^M cheetahs; and saber-toothed tigers.^M ^M Syn: family {andreyex}.^M [WordNet 1.5]^M
Ах ах! Вы видите эти знаки ^M? Они используются для замены символа обратной невидимой каретки. Откуда это? Ну, протокол,dict, как и любой другой интернет-протокол, использует CRLF в качестве терминатора линии. Поэтому мы загрузили их как часть наших образцовых файлов. Но пока это объясняет, почему cat считает, что 6-я строка не пуста.
-e: отображение невидимых символов, включая конец строки
Опция -e работает с опцией -v, только будет добавить знак доллара ($) перед каждым символом перевода строки, тем самым явно показывая конец линии:
$ cat -e andreyex.txt $ andreyex andreyex n.^M$ a natural family of lithe-bodied round-headed fissiped^M$ mammals, including the cats; wildcats; lions; leopards;^M$ cheetahs; and saber-toothed tigers.^M$ ^M$ Syn: family {andreyex}.^M$ [WordNet 1.5]^M$ $
-t: отображение невидимых символов, включая вкладки
Опция -t работает как вариант -v, за исключением того, что будет также отображать табличные данные с помощью курсора ^I (закладка хранится в виде байта удержания значение 9, а I в ASCII составляет 64 + 9 = 73):
$ cat -t andreyex.txt andreyex andreyex n.^M ^Ia natural family of lithe-bodied round-headed fissiped^M ^Imammals, including the cats; wildcats; lions; leopards;^M ^Icheetahs; and saber-toothed tigers.^M ^M ^ISyn: family {andreyex}.^M ^I^I [WordNet 1.5]^M
-et: показать все скрытые символы
Как мы уже говорили кратко, если вы хотите отобразить все непечатаемые символы, в том числе таблицы и маркеры конца строки, вам нужно будет использовать варианты -e и -t:
$ cat -et andreyex.txt $ andreyex andreyex n.^M$ ^Ia natural family of lithe-bodied round-headed fissiped^M$ ^Imammals, including the cats; wildcats; lions; leopards;^M$ ^Icheetahs; and saber-toothed tigers.^M$ ^M$ ^ISyn: family {andreyex}.^M$ ^I^I [WordNet 1.5]^M$ $
Копирование текстового файла
Обычно копирование осуществляется командой cp, но для копирования текстовых файлов вы можете аналогичным образом использовать команду cat. cat отправляет результат в stdout (стандартный поток вывода), обычно это экран терминала. Однако, можно перенаправить результат в файл при помощи символа перенаправления “>”.
Например, команда:
cat mytext.txt > newfile.txt
считает содержимое mytext.txt и отправить его в стандартный поток вывода, но вместо отображения текста оболочка перенаправит результат в файл newfile.txt. Если этот файл не существует, он будет создан. Если он будет же существует, то будет перезаписантс потерей предыдущего содержимого, поэтому будьте осторожны.
Аналогично можно объединять несколько файлов в один. Например, команда
cat mytext.txt mytext2.txt > newfile.txt
считает содержимое mytext.txt и mytext2.txt и запишет объединенный текст в newfile.txt. При отсутствии файла он будет создан, при наличии — перезаписан.
Удаление Пустых Строк
Чтобы удалить пустые повторяющиеся строки и сэкономить место на дисплее, вы можете применить опцию -s. Но имейте в виду, что этот параметр удалит только повторяющиеся пустые строки, оставив одну пустую строку.
cat -s imiafaila.txt
Нумерация Непустых Строк с Помощью Команды Cat в Linux
Чтобы вывести номер каждой строки, не учитывая пустых, используйте опцию -b. Но помните, что параметр -b отменяет опцию -n:
cat -b imiafaila.txt
Отображение Файла в Обратном Порядке
Чтобы просмотреть содержимое файла в обратном порядке, начиная с последней строки и заканчивая первой, просто используйте команду tac (команду cat, написанную задом наперёд):
tac imiafaila.txt
Примеры
Рассмотрим простой пример. Нужно узнать имя компьютера. Для этого, считаем файл hostname. cat /etc/hostname
Читаем имя компьютера
Как видим выше на скриншоте, команда просто прочитала текст и показала его на экране. В нашем случае имя компьютера это debian. сat -n /home/user/file
Результат выполнения с ключом -n
ВАЖНО! Опция -n нумерует все строки, в том числе пустые.
Заключение
cat — простой, но очень полезный инструмент для работы с данными в текстовых файлах, системных логах, файлах конфигурации и любыми другими читаемыми для человека данными.