Ошибка записи: доступ запрещен linux nano

Обновлено: 21.11.2024

Ошибки прав доступа обычно связаны с установками Linux и macOS. В таких системах для файлов и каталогов доступны три привилегии: чтение (r), запись (w) и выполнение (x). Пользователь системы может выполнять различные операции в зависимости от своих привилегий и групп, к которым принадлежит этот пользователь. Дополнительные сведения о разрешениях см. в этом руководстве. Проблема с правами доступа возникает, когда приложение (или системный пользователь) выполняет несанкционированную операцию в файловой системе.

Стеки Bitnami создаются с учетом требований безопасности. Они настроены на установку наиболее безопасных разрешений без ущерба для пользовательского интерфейса приложения. В этом смысле стандартный способ следующий:

Облачные образы и виртуальные машины:

  • Наличие системного пользователя для доступа по SSH/SFTP: bitnami
  • Назначьте системного пользователя и группу для каждого демонизированного процесса. Эти пользователи будут иметь крайне ограниченные привилегии. Причина наличия нескольких пользователей системы состоит в том, чтобы свести к минимуму влияние, если безопасность процесса будет скомпрометирована. Ниже приведены наиболее распространенные процессы:
    • Apache: демон
    • MySQL: mysql
    • PostgreSQL: postgresql
    • Кот: кот

    Весь стек доступен для записи только пользователю root. По умолчанию пользователям без полномочий root разрешены только права на чтение. В виде исключения каждый демонизированный процесс может записывать только в определенные папки данных и временные папки. Например: mysql может записывать в /opt/bitnami/mysql/data и /opt/bitnami/mysql/tmp.

    • Если системный пользователь bitnami хочет отредактировать файл, он должен получить права суперпользователя. Чтобы улучшить взаимодействие с пользователем, пользователь bitnami может владеть (с правами на запись) определенными папками (например, папкой htdocs WordPress).

    Установщики с установкой root: то же, что и в предыдущем случае, но без пользователя bitnami. Все операции должны выполняться пользователем root.

    Установщики с установкой без полномочий root и установщики Windows: пользователь, запускающий установщик, имеет полное право владения стеком и всеми его демонизированными процессами.

    В этом практическом руководстве вы узнаете, как справляться с ошибками прав доступа в вашем приложении. Вы узнаете, как Bitnami настраивает разрешения в приложениях, каковы распространенные проблемы, а также некоторые рекомендации по устранению проблем в стеке.

    Как обнаружить

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

    Эти ошибки обычно включают путь, который процессу не удалось прочитать или записать.

    Распространенные проблемы

    Самые распространенные проблемы с разрешениями, с которыми сталкиваются пользователи Bitnami, перечислены ниже:

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

    Пользователь модифицирует или изменяет разрешения: добровольно или невольно пользователь изменяет разрешения стека по умолчанию. Из-за этого приложение перестает работать. Подгруппа таких случаев связана с проблемами обновления вручную.

    Операция, выполненная не тем системным пользователем: в основном это относится к стекам с утилитами командной строки (например, Magento или ERPNext). Если пользователь выполняет операцию командной строки, может возникнуть ошибка, поскольку операция была выполнена не тем системным пользователем. В зависимости от привилегий этого системного пользователя стек может стать непригодным для использования.

    Несовместимость плагинов. Некоторые плагины требуют определенных разрешений для определенных файлов конфигурации (например, wp-config.php в WordPress). Эти разрешения могут быть несовместимы с теми, которые Bitnami устанавливает по умолчанию.

    Контрольный список для устранения неполадок

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

    Используете ли вы правильную программу для редактирования разрешений?

    FTP-клиенты, такие как Filezilla, нельзя использовать для изменения разрешений в вашем стеке. Вместо этого вы должны использовать SSH-клиент. Чтобы узнать больше о подключении через SSH, см. это руководство.

    Вы не можете загрузить файл через SFTP?

    Если вы видите подобную ошибку при загрузке файла:

    Временно измените права доступа к папке или файлу назначения, загрузите файлы, а затем восстановите исходное состояние файла или папки. Для этого выполните следующие действия:

    Войдите в консоль сервера. Узнайте, как подключиться к серверу через SSH.

    Выполните команду в целевой папке, в которую вы хотите загрузить файл (замените TARGETFOLDER на правильный путь):

    Если вы хотите загрузить файл, замените заполнитель TARGETFOLDER полным путем к файлу. Ниже приведен пример:

    Вы увидите такой вывод:

    Примите к сведению эту информацию. В этом случае файл или папка имеют следующие разрешения:

    • Разрешения: 0775
    • Владелец: демон
    • Группа: демон

    Измените владельца папки или файла на bitnami (не забудьте заменить заполнитель TARGETFOLDER на правильный путь):

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

    Вы не можете редактировать файл через SSH?

    Если вы получаете подобную ошибку при попытке отредактировать файл в сеансе SSH:

    Вы должны редактировать файл с правами суперпользователя. Выполните команду в файле, который вы хотите отредактировать (замените TARGETFILE на правильный путь). В этом примере мы будем использовать nano в качестве редактора:

    Сохраненный файл должен поддерживать исходные привилегии.

    Правильно ли установлены разрешения в вашем стеке?

    Если ваше приложение дает сбой или выдает следующую ошибку:

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

    Проверьте историю команд для операций по изменению разрешений:

    Проверьте вывод. Примеры такого рода операций следующие:

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

    Посмотрите на исходную конфигурацию приложения (вы можете запустить новый свежий облачный экземпляр приложения). Проверьте доступные для записи папки и проверьте правильность разрешений. Ниже приведен пример доступных для записи папок Magento:

    В этом примере мы видим, что право собственности указано неверно. демон должен быть владельцем файлов.

    Если права доступа к файлам неверны, используйте команды chmod или chown, чтобы восстановить их до исходного состояния. Следуя приведенному выше примеру, сделайте следующее:

    Если ваш стек использует MySQL, проверьте и сбросьте права доступа к каталогу данных MySQL:

    Если ваш стек использует MariaDB, проверьте и сбросьте права доступа к каталогу данных MariaDB:

    Если в вашем стеке используется Apache, сбросьте права доступа к каталогу Apache:

    Проверьте, теперь приложение работает без проблем.

    Вы получаете сообщение об ошибке при загрузке файла, обновлении или установке расширения с помощью интерфейса приложения?

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

    Если с вашими разрешениями все в порядке, создайте заявку в службе поддержки Bitnami, следуя инструкциям по созданию заявки.

    Вы не можете выполнить команду через SSH в стеке?

    Если вы пытаетесь выполнить команду внутри своего стека и получаете такую ​​ошибку:

    Возможно, вы выполняете команду не от имени другого системного пользователя. Чтобы исправить это, следуйте этим инструкциям:

    Загрузите среду приложения, выполнив следующую команду. Замените APPNAME на имя вашего приложения:

    Часто я редактирую файл с помощью nano, пытаюсь сохранить и получаю ошибку разрешения, потому что забыл запустить его как sudo. Есть ли какой-нибудь быстрый способ стать sudo без повторного открытия и повторного редактирования файла?

    было предложено объединиться с этим вопросом. В основном та же проблема, но vim . Я рассматриваю возможность слияния. хотя я также учитываю тот факт, что конкретные инструкции vim не будут работать в nano .

    @xenaterracide - Я думаю, что вопрос о vim - это частный случай этого вопроса, поскольку у него действительно есть решение, а в общем случае его нет. Хотя я тоже не уверен, решать вам. :)

    @xenoterracide: ответ Калеба о Нано полезен, поэтому я думаю, что мы должны оставить этот ответ только о Нано.

    @mikel Я решил, что слияние недопустимо. нано не вим. и никаких нано-решений, подобных vim , не представилось.

    3 ответа 3

    Нет, вы не можете дать запущенной программе разрешения, которых у нее нет при запуске, это будет брешь в системе безопасности, известная как «повышение привилегий»¹.

    Вы можете сделать две вещи:

    1. Сохраните во временный файл в каталоге /tmp или где-либо еще, закройте редактор, затем скопируйте содержимое временного файла в файл, который вы редактировали. sudo cp $TMPFILE $FILE .Обратите внимание, что не рекомендуется использовать для этого mv из-за изменения владельца файла и разрешений, которые это может вызвать, вы просто хотите заменить содержимое файла, а не сам файл-заполнитель.
    2. Выберите фон редактора с помощью Ctrl + z , измените владельца файла или разрешения, чтобы вы могли писать в него, затем используйте fg, чтобы вернуться в редактор и сохранить. Не забудьте исправить разрешения!

    ¹ Некоторые редакторы действительно могут сделать это, запустив новый процесс с другими разрешениями и передав данные этому процессу для сохранения. См., например, этот связанный вопрос для других решений в расширенных редакторах, которые позволяют записывать файловый буфер в канал процесса. Nano не может запускать новый процесс или передавать данные другим процессам, поэтому он исключен из этой группы.

    Я никогда не пользовался Linux-системой и до сих пор нахожусь в этой системе. Мне нужно сохранить текстовый файл, но и Text Editor, и Geany выдают ошибку отказа в доступе при попытке сохранения.

    Не знаю, что происходит.

    Я пытаюсь сохранить файл в папку /etc/apt/source.list.d.

    Спасибо за помощь, так как я ничего не могу найти в Интернете.

    Когда закончите, для сохранения нажмите CTRL-X, а затем Y.

    Чтобы изменять/создавать файлы в этих «системных» областях, вам нужно быть суперпользователем (я думаю, это правильный термин), поэтому запускайте там все команды типов файлов, перед которыми ставится sudo.

    Почитайте немного о разрешениях файловой системы. Очень упрощенное объяснение:

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

    Большинство файлов системного уровня принадлежат пользователю root, и обычные пользователи могут только читать или читать и выполнять их. Это делается для того, чтобы обычные пользователи не могли случайно (или преднамеренно) сломать систему или изменить данные других пользователей (помните, что Linux задуман как многопользовательская система).

    Как уже упоминалось, если у вас есть настройки Pi по умолчанию, вы используете Raspbian и стандартным обычным пользователем является «pi». Вы можете использовать команду «sudo», чтобы получить повышенные привилегии (эквивалентные root) для выполнения таких действий, как редактирование и сохранение системных файлов. Вы НЕ хотите просто запускать все свои команды с помощью sudo.

    Я никогда не пользовался Linux-системой и до сих пор нахожусь в этой системе. Мне нужно сохранить текстовый файл, но и Text Editor, и Geany выдают ошибку отказа в доступе при попытке сохранения.

    Не знаю, что происходит.

    Я пытаюсь сохранить файл в папку /etc/apt/source.list.d.

    Спасибо за помощь, так как я ничего не могу найти в Интернете.

    Как уже упоминалось, вы должны использовать sudo при редактировании файла, который не находится в пользовательском / домашнем каталоге.

    Для текстового редактора с графическим интерфейсом (Leafpad) или geany:

    Или используйте редактор nano, как уже упоминалось.

    Обратите внимание, что не рекомендуется вносить изменения в список источников. Это один из самых быстрых способов привести вашу ОС в непригодное для использования состояние.

    Если не указано иное, мой ответ основан на последней и полностью обновленной ОС RPi Bullseye с ОС для настольных ПК.

    Как уже упоминалось, вы должны использовать sudo при редактировании файла, который не находится в пользовательском / домашнем каталоге.

    Обратите внимание, что не рекомендуется вносить изменения в список источников. Это один из самых быстрых способов привести вашу ОС в непригодное для использования состояние.

    С педантичностью вам нужно использовать sudo при попытке выполнить действия, на которые у вашего текущего пользователя нет прав доступа (разрешений). Это осложняется разрешениями на каталог и липкими битами, но вы, безусловно, будете иметь доступ для чтения/записи к местам, отличным от вашего домашнего каталога. Однако если у вас нет доступа к файлу в качестве обычного пользователя, должен подняться большой флаг. Вы должны изменить этот файл? Вы понимаете влияние? Могли бы вы добиться того же результата, добавив соответствующий файл конфигурации в свою учетную запись, а не изменяя файл системного уровня?

    Вторая точка должна быть написана гигантскими светящимися буквами. Если вы не полностью понимаете последствия этого, не возитесь со списком источников. Вы можете в конечном итоге установить приложения из репозитория, отличного от стандартного, или полностью испортить зависимости. Если вам абсолютно необходимо установить apt из другого репозитория, добавьте его, установите приложение, а затем закомментируйте репозиторий. Если вы придерживаетесь стандартных репозиториев, предоставляемых RPT, вы получаете программное обеспечение, которое будет работать на Pi и которое было протестировано на совместимость со всеми стандартными программами ОС. Программное обеспечение из других источников может работать без проблем, оно должно работать, если оно соответствует требованиям ARMH, особенно если оно основано на Debian, но может и не работать. Если вы хорошо понимаете, как работает Linux, это не имеет большого значения.Если вы только начинаете, вы можете создавать сложные проблемы, которые трудно отлаживать и исправлять.

    На мой взгляд, ошибка "Отказано в доступе к SCP" является наиболее распространенной ошибкой в ​​мире Linux. Итак, являетесь ли вы администратором Linux или новичком, каждый из нас сталкивался с этой ошибкой. По крайней мере, раз в жизни, могу поспорить.

    Я много лет пользуюсь Linux. Я столкнулся с этой проблемой во время операций SCP и SSH. Поэтому я уверен, что если вы попадете на эту страницу, вы получите решение всех ваших «ошибок отказа в доступе в Linux». Ниже приведены примеры некоторых ошибок, с которыми вы обычно сталкиваетесь. Я уверен, что по крайней мере одно из 9 решений, представленных в этом посте, поможет вам решить эти проблемы.

    • Отказано в разрешении SCP
    • Отказано в разрешении SCP (открытый ключ)
    • Не удалось сохранить ключ ".ssh/id_rsa": разрешение отклонено, когда SCP
    • Отказано в разрешении SCP ec2
    • AWS отказал в разрешении SCP
    • Отказано в разрешении SCP. Повторите попытку.
    • Отказано в разрешении SCP (открытый ключ gssapi-keyex gssapi-with-mic)
    • Отказано в разрешении SCP (открытый ключ). потеря связи

    Прежде чем что-либо объяснять, позвольте мне сказать вам, что все эти проблемы возникают при копировании файлов с помощью SCP. Итак, давайте сначала разберемся с утилитой SCP -

    Оглавление

    Что такое передача файлов SCP?

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

    • Локально в локальной системе
    • От удаленной системы к локальной системе
    • От локальной системы к удаленной системе
    • Локальная система в экземпляр AWS EC2

    Как вам SCP?

    Существует множество опций и переключателей для использования с командой SCP. Позвольте мне показать вам несколько основных команд, чтобы дать вам некоторое представление об SCP.

    Синтаксис SCP:-

    • Посетите справочную страницу scp для получения дополнительной информации о параметрах или синтаксисе.

    Как скопировать локальные файлы на удаленный хост с помощью SCP

    Хост: может быть IP-адресом или именем хоста удаленной системы

    : (двоеточие): — помогает scp идентифицировать удаленный хост

    Имя пользователя:- на удаленном хосте

    Ключ или пароль SSH: требуется для копирования файла с помощью scp

    Путь: — абсолютный или относительный путь к локальному файлу или каталогу

    Скопировать удаленный файл на локальный хост

    Как скопировать каталоги на локальный хост с помощью SCP

    Скопировать файл между двумя удаленными хостами

    Теперь, когда вы знаете, что такое основные команды scp. Пришло время узнать об аутентификации с открытым ключом.

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

    По сути, вы создаете пару открытого и закрытого ключей на клиенте (локальном) и копируете открытый ключ в удаленную систему (сервер) в авторизованный ключ.

    Чтобы вам было легче понять команды scp, я поделился информацией о своей лаборатории

    Сведения о настройке лаборатории –

    Имя локального сервера — Server1 (Ubuntu 18.04)

    Имя удаленного сервера — Server2 (Ubuntu 20.04)

    Исходный файл — /test/file1.txt

    Целевой каталог — /remote-test

    имя пользователя - разработчик

    Проблема отказа в разрешении SCP

    Сценарий 1-

    Я пытаюсь скопировать /test/file1.txt с server1 (локальный) на server2 (удаленный) в каталоге /remote-test. Я также получаю отказ в доступе.

    Справочный вывод

    Чтобы устранить эту ошибку, выполните указанные ниже действия.

    Решение 1. Дважды проверьте имя пользователя и пароль

    Убедитесь, что вы указали правильное имя пользователя и пароль в команде. Это одна из самых основных ошибок, которые мы делаем. Итак, вы можете попробовать написать свой пароль в блокноте, скопировать и вставить его в командную строку. При запросе во время команды SCP.

    я подтвердил правильность имени пользователя и пароля в моем случае.

    Решение 2. Проверка удаленного пути

    Убедитесь, что путь, указанный вами в качестве удаленного каталога, правильный. Например, в моем случае /remote-test — это удаленный каталог, и это правильно.

    Решение 3. Проверьте доступ для чтения и записи к удаленному каталогу

    Перепроверьте, имеет ли ваш пользователь, упомянутый в команде, доступ для чтения и записи (RW) к удаленному каталогу.Например, в моем случае "/remote-dir" должен иметь доступ RW для пользователя "dev".

    Чтобы проверить, выполните следующие действия.

    -> Вход в удаленную систему (server2)

    -> Запустите команду "ls" -ld, чтобы проверить разрешения для /remote-dir.

    Справочный вывод

    Итак, как вы видите на изображении, /remote-dir разрешает чтение, запись и выполнение (rwx) только пользователю root. Для группы и других он имеет разрешение на чтение и выполнение (r-x). Таким образом, мой пользователь «dev» будет рассматриваться как другой и не сможет писать. В результате я получаю сообщение об ошибке отказа в разрешении SCP.

    -> Теперь, чтобы устранить эту ошибку, назначьте всем разрешение на чтение-запись-выполнение (rwx).

    Справочный вывод

    -> Запустить команду scp еще раз

    Предупреждение

    Установка разрешения 777 для любого каталога небезопасна. Итак, как только вы сможете изолировать проблему «Отказано в разрешении SCP». Либо измените владельца, либо установите разрешение 755.

    Если вы по-прежнему сталкиваетесь с ошибкой отказа в доступе, перейдите к следующему шагу

    Решение 4: проблемы с владением (каталог должен принадлежать пользователю)

    -> Войдите в свою удаленную систему (server2)

    -> Измените владельца вашего удаленного каталога для вашего пользователя. Например, я изменю владельца /remote-dir на своего пользователя "dev" вместо "root".

    Справочный вывод

    -> Запустите команду scp, и она должна работать для вас

    Решение 5. Диагностика проблемы с помощью команды scp -v

    Попробуйте использовать параметр -v (подробный) для диагностики проблемы с помощью команды scp.

    Проверьте сообщение после команды scp -v -t, если оно показывает отказ в доступе, следуйте решению 3 или 4, как описано в посте. это решит вашу проблему.

    Решение 6. Проверить, что параметр -P используется для порта, а не -p

    При запуске команды SCP параметр -P используется для указания пользовательского порта, если порт по умолчанию TCP 22 не используется. Иногда вместо -P мы по ошибке используем -p (нижний регистр). Для лучшего понимания позвольте мне рассказать вам о разнице между этими двумя -

    • -p (нижний регистр):- сохранить доступ, модификацию и режимы из исходного файла.
    • -P (верхний регистр): указанный настраиваемый порт для подключения к удаленному хосту.

    Например, порт 2314 является пользовательским портом, а не 22.

    Отказано в разрешении SCP (открытый ключ) — экземпляр AWS EC2

    Сценарий 2-

    Попробуйте указанное ниже решение в случае отказа в разрешении SCP (открытый ключ) с экземпляром AWS ec2 -

    Если вы настроили аутентификацию без пароля или у вас есть ключ разрешения для аутентификации удаленной системы, вы можете столкнуться с этой ошибкой.

    Упомяните в сообщении проверку из Решения 1–6, если это не поможет двигаться дальше —

    Решение 7. Используйте параметр -i и всегда предоставляйте закрытый ключ «.pem»

    Когда вы используете SCP и не используете опцию -i. Он использует ключ ssh по умолчанию в каталоге ( ~/.ssh/ ). Поэтому всегда используйте параметр -i и указывайте путь к ключевому файлу ".pem".

    Например, "ubuntu.pem" является ключевым файлом в моем случае.

    Решение 8: если с помощью ключа разрешения работает SSH, но не SCP

    Если вы можете подключиться к удаленному хосту по ssh, используя параметр -i, но не можете использовать scp. Это означает, что вы столкнулись с ошибкой.

    Поэтому вместо использования -i "путь к файлу .pem"

    используйте опцию -o "IdentityFile".

    Решение 9. Попробуйте удалить запись хоста из файла known_hosts

    Иногда могут возникнуть проблемы из-за старого или неправильного ключа хоста. Удалите этот конкретный хост из файла know_hosts с помощью редактора или команды следующим образом.

    Часто задаваемые вопросы (FAQ)

    Может ли быть отказано в разрешении ssh, но не SCP?

    Ответ
    Запустите команду SCP с параметром -vv и попытайтесь устранить проблему. В зависимости от ошибки воспользуйтесь решением 1–9, упомянутым в этом посте, чтобы решить вашу проблему.

    Будет ли SCP перезаписывать существующий файл?

    Да, утилита SCP находит файл с таким же именем на цели, и у вас есть разрешение на запись в него.Команда SCP перезапишет его. Вы можете изменить разрешение целевого файла или каталога. Чтобы SCP жаловался на проблему с разрешениями и мог избежать перезаписи. Кроме того, вы можете использовать инструмент rsync, который имеет множество параметров для синхронизации данных.

    SCP копирует или перемещает?

    SCP означает безопасное копирование, поскольку название предполагает, что он копирует только файлы или каталоги. Перемещения файлов не происходит.

    Почему SCP не работает?

    Причин, по которым SCP не работает, может быть много. проверьте опцию SCP "-vvv" и попробуйте отладить, почему она не работает. Я дал 9 решений для устранения различных ошибок, связанных с отказом в разрешении. вы можете обратиться к ним.

    Как узнать, работает ли SCP?

    если статус выхода вашей команды равен «0» и вы можете скопировать свой файл или каталог на удаленный хост или экземпляр AWS EC2. Можете быть уверены, SCP работает.

    Почему в Linux возникает ошибка отказа в доступе?

    Возможно множество сценариев "ошибка отказа в доступе в Linux". Например, если у вас нет доступа для чтения и записи к файлу или каталогу. Кроме того, если вы пытаетесь запустить команду, которую может выполнить только root. Для выполнения этих команд вам потребуется доступ root или sudo. Например, одна из этих команд — chmod или chown.

    Видеоруководство

    Если вам нужны видеоинструкции. Посмотрите это видео на тему "Ошибка отказа в разрешении SCP", основные или распространенные способы устранения неполадок, с которых можно начать.

    Для просмотра этого видео включите JavaScript и рассмотрите возможность перехода на веб-браузер, поддерживающий видео в формате HTML5

    Читайте также: