Архив метки: Linux

Какой программой можно открыть PDF на Linux?

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

Evince

Evince — это приложение для просмотра документов по умолчанию, поставляемое с дистрибутивами Linux на основе GNOME Shell, такими как Ubuntu и Fedora. Он поддерживает несколько форматов файлов, включая формат файла PDF. Другие основные функции Evince включают ночной режим, режим автоматической прокрутки, двойной режим, режим непрерывной прокрутки, режим слайд-шоу, режим справа налево и полноэкранный режим.

Evince можно загрузить напрямую из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install evince

Вы можете установить Evince прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно установить из магазина Flathub.

MuPDF

MuPDF — это минималистичный и легкий просмотрщик документов для Linux. Он может просматривать PDF, EPUB, XPS и различные другие форматы файлов документов. Это в первую очередь приложение командной строки, которое включает в себя базовое редактирование, аннотации и поддержку преобразования. По умолчанию MuPDF использует оптимизированные настройки для максимально точного отображения документов, имитирующих настоящие книги или настоящую бумагу.

MuPDF можно напрямую загрузить из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install mupdf

Вы можете установить MuPDF прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно скачать с официального сайта.

Чтобы просмотреть файл PDF с помощью MuPDF, используйте команду в следующем формате:

$ mupdf $HOME/Downloads/file.pdf

Чтобы просмотреть руководство MuPDF, используйте команду ниже:

$ man mupdf

Atril

Atril — это приложение для просмотра документов по умолчанию, включенное в среду рабочего стола MATE. Его можно установить в других средах рабочего стола без установки всего интерфейса рабочего стола MATE. Его основные функции включают поддержку PDF, DJVU, PS и других форматов файлов, текстовый поиск, полноэкранный режим, непрерывный режим, двухстраничный режим, режим инвертированных цветов, режим автоподбора, закладки, режим презентации и так далее.

Atril можно напрямую загрузить из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install atril

Вы можете установить Atril прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно скомпилировать из исходного кода.

Qpdfview

Qpdfview — это программа для просмотра PDF-файлов с открытым исходным кодом, написанная на Qt. Он основан на популярной библиотеке Poppler, которая в основном используется для работы с PDF-документами. Помимо документов PDF, Qpdfview также поддерживает форматы файлов DJVU и PS через плагины. Основные функции Qpdfview включают полноэкранный режим, режим презентации, инструменты преобразования, многостраничный режим, режим непрерывной прокрутки, аннотации и другие базовые инструменты редактирования, текстовый поиск и так далее.

Qpdfview можно напрямую загрузить из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install qpdfview

Вы можете установить Qpdfview прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно скомпилировать из исходного кода.

Okular

Okular — это программа просмотра документов, поставляемая по умолчанию в большинстве дистрибутивов Linux на основе KDE, и она является частью официального стека приложений KDE. Он поддерживает множество форматов файлов, гораздо больше, чем любой другой просмотрщик PDF, перечисленный в этой статье. Другие функции Okular включают поддержку закладок, просмотр эскизов, инструменты аннотации, полнотекстовый поиск, режим презентации, полноэкранный режим и так далее.

Okular можно напрямую загрузить из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install okular

Вы можете установить Okular прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно скачать с официального сайта.

Zathura

Zathura — это минималистичный и легкий просмотрщик документов для Linux. В нем нет никаких элементов пользовательского интерфейса, кроме окна, в котором отображается документ PDF. Он имеет «похожие на vim» команды и сочетания клавиш. Вы также можете расширить его, используя плагины для улучшения поддержки других форматов файлов. Подобно Qpdfview, поддержка Zathura PDF также основана на библиотеке Poppler. Другие основные функции Zathura включают настраиваемые закладки, текстовый поиск и поддержку гиперссылок.

Zathura можно загрузить напрямую из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install zathura

Вы можете установить Zathura прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно скачать с официального сайта.

Чтобы просмотреть файл PDF с помощью Zathura, используйте команду в следующем формате:

$ zathura $HOME/Downloads/file.pdf

Чтобы просмотреть руководство Затуры, используйте команду ниже:

$ man zathura

Firefox, Chrome и Chromium

Сегодня все основные веб-браузеры имеют встроенную поддержку просмотра файлов PDF. Вы можете загрузить Firefox и Chromium из диспетчера пакетов вашего дистрибутива Linux. Chrome можно скачать и установить с официального сайта. После установки этих браузеров в вашей системе вы можете использовать любую из этих трех команд для просмотра файлов PDF. Вы также можете нажать <CTRL + O>, чтобы открывать файлы PDF из пользовательского интерфейса браузера, даже когда вы не в сети.

$ firefox -private --new-window  ~/path/to/file.pdf

$ chromium-browser --incognito --new-window ~/path/to/file.pdf

$ google-chrome --incognito --new-window ~/path/to/file.pdf

Заключение

Указанные выше программы просмотра PDF-файлов разрабатывались в течение многих лет. Они включают в себя все основные функции, которые вы ожидаете от средства просмотра PDF, а также некоторые дополнительные функции, такие как темный режим и поддержку просмотра других форматов файлов, таких как EPUB, CBZ и DJVU.



2020-12-16T12:37:00
Вопросы читателей

Выборочная маршрутизация сети или разделенное туннелирование через VPN

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

Мы пытались найти способ использовать VPN специально для сервера и позволить другому трафику двигаться нормально. Вот тогда-то мы и наткнулись на это решение. В этом блоге мы объясним решение шаг за шагом.

ps.: В конце этого блога вы сможете выбрать, какой веб-сайт или IP-адреса вы хотите маршрутизировать через VPN.

Требования:

 

  • Ubuntu (должен работать и на других дистрибутивах Linux)
  • Если вы используете windows, Этот метод работает с подсистемой Windows для Linux. Убедитесь, что у вас есть WSL2, прежде чем продолжить.
  • Openfortivpn
  • Убедитесь, что вы можете подключиться к VPN, используя его.

Шаги для выборочной маршрутизации

1. конфигурационный файл VPN

Этот файл сообщает нашему VPN-клиенту конфигурацию нашего VPN.

Сохраните приведенный ниже конфигурационный файл как vpn-config. conf в любом месте вашего компьютера

host = vpn.iiitd.edu.in

port = 10443

username = <your username>

password = <your pass>

set-routes = 0

set-dns = 0

pppd-use-peerdns = 0

set-routes = 0 указывает, чтобы не делать никаких маршрутов через VPN, теперь мы будем белый список веб-сайтов, чтобы использовать через VPN.

2. Настройка скрипта PPP

Что такое ППС?: PPP-это протокол точка-точка. Linux использует этот протокол для связи по протоколу TCP/IP с вашим интернет-провайдером.

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

Для создания сценария используйте следующие команды

sudo touch /etc/ppp/ip-up.d/fortivpn

sudo chmod a+x /etc/ppp/ip-up.d/fortivpn

Что такое pppd? Демон PPP (pppd) — это свободно доступная реализация протокола Point-to-Point Protocol (PPP), который работает во многих системах Unix. читайте дальше

Что такое ip-up? /etc/ppp/ip-up-это shell — скрипт, выполняемый pppd при появлении ссылки/интернета. Читать далее

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

#!/bin/bash

#

# Whitelist here all domains that need to go through openfortivpn

# Domains and IPs are separated by a space

#

ips='192.168.2.217 192.168.29.151'

domains='example.com example.fr'



let resolved

for domain in $domains; do

  resolved=`dig +short $domain | tail -n1`

  ips="$ips $resolved"

done



for ip in $ips; do

  route add $ip dev ppp0

done

Теперь добавьте IP-адреса и домены, к которым вы хотите получить доступ через VPN.

3. запустите VPN

Следующая команда должна подключить вас к вашему VPN прямо сейчас.

sudo openfortivpn -c vpn-config.conf

Ниже вы можете увидеть маршруты, добавленные для ip-адресов. ppp0-это vpn-интерфейс, а enp2s0-ethernet.

andreyex@andreyex ~> route                                                                  (base)

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

default         _gateway        0.0.0.0         UG    100    0        0 enp2s0

one.one.one.one 0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

103.25.231.4    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp2s0

192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp2s0

192.168.2.217   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

192.168.29.151  0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

Вот и все! Теперь вы можете работать на своем сервере и наслаждаться быстрым интернетом вместе с ним 🙂

Бонус: автоматический запуск VPN при загрузке

Это довольно раздражает, чтобы войти в VPN каждый раз, прежде чем начать работу. Поэтому мы создали системный сервис для автоматического подключения к VPN при загрузке. Отказ от ответственности: это не будет работать с WSL2

Выполните эти команды для настройки службы

sudo touch /etc/systemd/system/openfortivpn.service

Откройте его с помощью вашего любимого редактора и введите эту конфигурацию.

[Unit]

Description = OpenFortiVPN

After=network-online.target

Documentation=man:openfortivpn(1)



[Service]

Type=idle

ExecStart = /usr/bin/openfortivpn -c <path to your config file>

StandardOutput=file:<any-place-where you want to save your logs>

Restart=always

RestartSec=10



[Install]

WantedBy=multi-user.target

 

Чтобы запустить эту службу, просто запустите ее

sudo systemctl enable openfortivpn

sudo systemctl start openfortivpn

Чтобы проверить, работает ли он

andreyex@andreyex ~> sudo systemctl status openfortivpn

● openfortivpn.service - OpenFortiVPN

   Loaded: loaded (/etc/systemd/system/openfortivpn.service; enabled; vendor preset: enabled)

   Active: active (running) since Sat 2020-04-25 13:22:26 IST; 3h 43min ago

     Docs: man:openfortivpn(1)

 Main PID: 1851 (openfortivpn)

    Tasks: 6 (limit: 4915)

   CGroup: /system.slice/openfortivpn.service

           ├─1851 /usr/bin/openfortivpn -c /home/andreyex/Documents/vpn-configs/iiitd.conf

           └─1852 /usr/sbin/pppd 38400 :1.1.1.1 noipdefault noaccomp noauth default-asyncmap nopcomp



Apr 25 13:22:26 andreyex systemd[1]: Started OpenFortiVPN.

Apr 25 13:22:26 andreyex pppd[1852]: pppd 2.4.7 started by root, uid 0

Apr 25 13:22:26 andreyex pppd[1852]: Using interface ppp0

Apr 25 13:22:26 andreyex pppd[1852]: Connect: ppp0 <--> /dev/pts/0

Apr 25 13:22:27 andreyex pppd[1852]: local  IP address 10.212.134.101

Apr 25 13:22:27 andreyex pppd[1852]: remote IP address 1.1.1.1

 

Спасибо за чтение 🙂 Если это действительно помогло вам, не стесняйтесь ставить лайки, комментировать и делиться этим блогом.

Использование APT в Linux. Команды apt и apt-get



























2.7/5 — (4 голоса)

Что такое APT

APT (сокращение от Advanced Packaging Tool) — это набор утилит для установки, удаления, обновления, поиска пакетов в Linux, а также для управления репозиториями. APT еще называют пакетным менеджером.

APT использует репозитории пакетов. Список репозиториев для APT хранится в файле /etc/apt/sources.list, а также в директории /etc/apt/sources.list.d/.

APT используется в дистрибутивах, основанных на Dedian и Ubuntu.

Для управления APT существуют разные утилиты, но самые популярные из них это утилиты командной строки apt-get и apt.

В данной статье мы рассмотрим, как пользоваться командой apt, а также узнаем, чем отличается apt от apt-get.

Чем отличаются apt и apt-get

Кратко ответим на очень популярный вопрос, а в чем разница между командами apt и apt-get?

apt это утилита, которая появилась, как альтернатива apt-get. Она выполняет практически все те же функции, что и apt-get, но с ней проще и понятнее работать.

Например, все команды apt имеют простой синтаксис: apt название_команды. А у apt-get есть дополнительные команды, например, apt-cache. Таким образом, при использовании apt, пользователю не нужно запоминать дополнительные наборы команд.

Помимо упрощения работы с командами, apt нагляднее выводит информацию, вроде бы мелочи, но работать удобнее. Например, apt умеет показывать прогресс бар, а при выполнении apt update можно увидеть сколько пакетов можно обновить.

Стоит отметить, что утилита apt-get более функциональна, чем apt. Но для рядового пользователя apt будет более чем достаточно.

Синтаксис и опции apt

Синтаксис команды apt очень простой и похож на другие команды Linux:

$ aptопциикомандапараметры_команды

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

  • -v, –version – выводит версию утилиты;
  • -h, –help – выводит справку по использованию утилиты;
  • -y, –yes – автоматически отвечать “да” на все возникающие вопросы;
  • –assume-no – автоматически отвечать “нет” на все возникающие вопросы;
  • -d, –download-only – только скачать пакеты и больше ничего не делать;
  • -f, –fix-broken – исправить недостающие зависимости;
  • –no-download – ничего не загружать, использовать только пакеты из кэша;
  • -s, –simulate – режим симуляции, никакие операции не выполняются, только выводится информация на экран;
  • –allow-unauthenticated – позволяет установить пакеты, из репозиториев, для которых нет GPG подписи;
  • –no-install-recommends – не устанавливать рекомендованные пакеты, по умолчанию будут установлены;
  • -m, –ignore-missing – игнорировать пакеты, которые существует;
  • -q, –quiet – выводить минимум информации, не показывать прогресс бар;
  • -V, –verbose-versions – показывать полные версии обновленных пакетов;
  • –only-upgrade – не устанавливать новые пакеты, только обновлять;
  • –allow-downgrades – разрешить откатывать версию пакетов;
  • –reinstall – переустановить пакет если он уже установлен;

А теперь давайте пройдёмся по командам apt, которые вы можете использовать:

  • install – установить пакет;
  • remove – удалить пакет, конфигурационные файлы, которые были изменены в вашей системе удалены не будут;
  • purge – полностью удалить пакет, вместе со всеми его конфигурационными файлами;
  • autoremove – очистить ненужные пакеты;
  • autoclean – очистить кэш пакетов;
  • update – обновить списки пакетов из репозиториев;
  • upgrade – обновить версию пакета до последней, если пакет не указан будут обновлены все пакеты;
  • full-upgrade – полное обновление системы, включая удаление несовместимых или больше ненужных пакетов;
  • list – список установленных пакетов;
  • search – поиск пакетов;
  • show – посмотреть информацию о пакете;
  • download – скачать пакет в текущую папку;
  • edit-sources – открыть с настройками репозиториев в текстовом редакторе.
  • source – скачать исходный код пакета в текущую папку;
  • build-dep – установить зависимости необходимые для сборки выбранного пакета;

Дальше рассмотрим несколько примеров работы с apt, которые пригодятся как начинающим, так и более опытным пользователям.

Как пользоваться apt

Обновление пакетов

Сначала давайте обновим список пакетов apt из репозиториев. Репозитории находятся на удалённых серверах и когда утилита apt ищет пакет для установки, естественно, что она не обращается ко всем репозиториям подряд чтобы узнать где он находится. В системе уже есть сохранённых кэш информации о том, какие пакеты вообще есть и где их можно скачать. Для обновления этого кэша используйте команду update:

sudo apt update

Во время загрузки URL репозиториев обозначаются специальными префиксами, вот что они означают:

  • Hit (Сущ) – список не изменился с момента предыдущей загрузки;
  • Ign (Игн) – репозиторий игнорируется, либо он слишком новый, либо произошла незначительная ошибка во время загрузки;
  • Get(Пол) – доступна новая версия и она будет загружена.

Когда кэш обновлен вы можете посмотреть для каких пакетов доступны обновления:

sudo apt list –upgradable

Аналогично можно посмотреть установленные пакеты apt:

sudo apt list –installed

Или всех доступных:

sudo apt list –all-versions

Затем можно обновить все пакеты в системе:

sudo apt full-upgrade

Установка пакетов

Чтобы установить пакет apt используйте команду install, например, для установки программы Gimp используйте команду install:

sudo apt install gimp

Если пакет установился неверно и вы хотите его переустановить, можно использовать опцию –reinstall:

sudo apt install gimp –reinstall

Как видите, опции можно указывать не только перед командой, но и после неё, аналогично можно установить несколько пакетов сразу, например:

sudo apt install gimp inkskape -y

Чтобы не подтверждать установку вручную используем опцию -y. Допустим вы установили пакет с помощью dpkg и теперь хотите установить для него зависимости, запустите команду install без параметров с опцией -f или –fix-broken:

sudo apt install –fix-broken

Можно скачать deb пакет в текущую папку без установки:

apt download gimp

Скачивать пакеты надо от имени обычного пользователя, иначе тогда они не будут доступны для работы с ними. Если вам нужно установить пакет из файла, просто передайте путь к файлу команде install:

sudo apt install gimp_2.8.22-1_amd64.deb

Чтобы установить определенную версию пакета просто укажите нужную версию после имени пакета через знак =, например:

sudo apt install linux-хедерs-generic=4.15.0.20.23

Чтобы найти доступные версии можно использовать команду policy. Она отображает информацию о том какая версия установлена, а также какие версии доступны:

sudo apt policy linux-хедерs-generic

Если вы не знаете как точно называется пакет, можно выполнить поиск пакетов apt с помощью команды search:

sudo apt search gimp

Установить несколько пакетов

Для установки нескольких пакетов их имена записываются через пробел:

sudo apt install <пакет1> <пакет2> <пакет3> </пакет3></пакет2></пакет1>

Удаление пакетов

Чтобы удалить ненужный пакет используйте команду remove:

sudo apt remove gimp

Однако если вы изменяли какие-либо конфигурационные файлы из состава пакета, то при таком способе удаления они останутся в системе, чтобы удалить всё полностью используйте команду purge:

sudo apt purge gimp

Чтобы удалить лишние пакеты, которые в системе больше не нужны выполните команду autoremove:

sudo apt autoremove

А для очистки кэша пакетов – autoclean:

sudo apt autoclean

Удалить неиспользуемые пакеты

sudo apt autoremove

Когда вы устанавливаете пакет, то часто устанавливаются дополнительные пакеты, являющиеся его зависимостями. Если теперь вы удалите этот пакет, то зависимости останутся в системе. apt autoremove удаляет эти зависимости, но только те, которые не нужны другим установленным пакетам.

Обновить список пакетов

sudo apt update

У APT есть список репозиториев, из которых происходит установка пакетов. Список хранится в текстовом файле /etc/apt/sources.list, а также в директории /etc/apt/sources.list.d/. При выполнении команды apt update, APT проходит по списку репозиториев и из каждого репозитория в списке получает информацию о пакетах, находящихся в репозитории. Вся эта информация сохраняется в системе.

Если выходит новая версия какого-нибудь пакета, то APT не узнает об этом, пока не будет выполнена команда apt update. Поэтому, если установить данный пакет (не выполнив предварительно apt update), то будет установлена та версия пакета, информация о которой хранится в системе в данный момент.

Нужно ли выполнять apt update перед установкой каждого пакета?

Нет, перед установкой каждого пакета apt update конечно же выполнять не следует. Достаточно выполнять apt update периодически. Если вам предстоит установка нескольких пакетов, то сначала можно один раз выполнить apt update, а потом уже устанавливать пакеты.

Крайне рекомендуется выполнять apt update перед обновлением пакетов (перед apt upgrade).

dpkg -L package_name

Эта команда покажет, какие файлы для пакета с именем package_name установлены на вашем компьютере. Обратите внимание, что эта команда работает только для уже установленных пакетов. Пример:

embryo@debian:~$ dpkg -L vorbis-tools

/.

/usr

/usr/bin

/usr/bin/ogg123

apt-get build-dep package_name

(необходимы привилегии root)

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

apt-get build-dep wesnoth

С помощью этой команды будут установлены все пакеты разработчика, необходимые для приложения Wesnoth. Имейте в виду, что у вас должен быть прописан доступ к репозитариям исходных кодов (в Ubuntu по умолчанию доступ к ним есть).

apt-get clean (и apt-get autoclean)

(необходимы привилегии root)

С помощью этой команды удаляются все архивы, установленные в вашей системе. Всякий раз, когда вы устанавливаете приложение, оно будет загружено и его пакет DEB будет помещен в директорий /var/cache/apt/archives/. Данная команда удаляет эти пакеты и освобождает место.

apt-get clean

apt-get autoclean

Относительно apt-get autoclean: с помощью этой команды удаляются только те архивы, которых уже нет в репозитариях, и сохраняются те, которые в данный момент в репозитариях присутствуют. Эта команда полезна, если вы хотите избавиться от старых архивов, которые были обновлены, но обновленные архивы хотите на всякий случай сохранить. Для того, чтобы увидеть, сколько места занимают архивы, используйте команду du -h (аргумент -h указывает, что результат нужно выдать в формате, удобном для чтения):

du -h /var/cache/apt/archives/

apt-cache show package_name

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

embryo@debian:~$ apt-cache show vorbis-tools

Package: vorbis-tools

Priority: optional

Section: sound

Installed-Size: 580

apt-get update && apt-get upgrade

(необходимы привилегии root)

Это одностроковая команда, которая обновит список ваших пакетов и выполнит обновление вашей системы. Поскольку для ее выполнения требуются привилегии root, то если ваш дистрибутив — Ubuntu, используйте sudo apt-get update && sudo apt-get upgrade. Обратите внимание, что вторая команда (после двойного амперсанда) выполняется только в случае, если выполнение первой команды было успешным, поэтому, если по какой-нибудь причине списка обновлений получить не удалось, вторая команда выполняться не будет. Если вы используете тестовый или бета-релиз, используйте вместо нее следующую команду:

sudo apt-get update && sudo apt-get dist-upgrade

Обновления будут получены даже в случае, если они зависят от более новых пакетов.

dpkg –get-selections

Эта команда выведет список всех пакетов, установленных в системе с помощью менеджера пакетов (более точно, это те пакеты, которые были выбраны в менеджере пакетов — прим.пер.). Пример:

embryo@debian:~$ dpkg –get-selections

acpi-support-base install

acpid install

adduser install

akregator install

dpkg -S filename

Будет найден по образцу filename список файлов, имеющихся в установленных пакетах. Пример:

embryo@debian:~$ dpkg -S oggenc

vorbis-tools: /usr/share/man/man1/oggenc.1.gz

vorbis-tools: /usr/bin/oggenc

embryo@debian:~$

apt-get autoremove

(необходимы привилегии root)

С помощью этой команды удаляются ненужные пакеты (например, одиночные пакеты), которые не используются никаким из пакетов, в текущий момент установленных в системе. Такая ситуация часто возникает после удаления определенного приложения, когда его зависимости не удаляются и по-прежнему остаются в системе. Используйте эту команду, чтобы избавиться от таких пакетов.

apt-cache depends package_name

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

embryo@debian:~$ apt-cache depends vorbis-tools

vorbis-tools

Depends: libao2

Depends: libc6

Depends: libcurl3-gnutls

apt-cache policy package_name

Эта команда выдаст список репозитариев, в которых находится пакет. В Ubuntu, есть четыре таких репозитария: main, restricted, universe и multiverse. В Debian имеются репозитари main, contrib и non-free. Для каждого пакета есть определенная политика его использования и она зависит от того, в каком из указанных репозитариев находится пакет.

apt-cache policy amarok

apt-cache policy sun-java6-jre

apt-cache showsrc package_name

Будет отображаться информация об исходном коде пакета.

apt-get -f install

(необходимы привилегии root)

Будет сделана попытка исправить нарушенные зависимости. Как правило, эта команда очень полезна в случае, если вы пытаетесь вручную установить пакет DEB, не устанавливая первоначально его зависимости. Выполните команду apt-get -f install, а затем снова попытайтесь установить пакет.

apt-cdrom add

(необходимы привилегии root)

Команда добавит CD-ROM к числу источников, откуда можно получать пакеты, так что вы сможете устанавливать с него пакеты. Эта команда особенно полезна, если у вас есть образы ISO, которые вы не хотите записывать на компакт-диск. Для того, чтобы сканировать образы ISO, используйте команду:

apt-cdrom -d=/cdrom add

В результате в директории /cdrom будет смонтирован образ ISO, а затем его содержимое будет добавлено в sources.list. Обратите внимание, что директорий /cdrom должен быть пустым. Для этого вы можете использовать любой пустой директорий:

apt-cdrom -d=/home/USER/mydir

apt-file

Эта программа предназначена для поиска файлов в пакетах. Также она может показать все файлы в пакете.

Установка программы:

sudo apt-get install apt-file

Сразу после установки кэш данных о программах пуст. Чтобы его обновить нужно выполнить команду (можно выполнять как от рута, так и от пользователя):

apt-file update

Когда всё готово, то поиск осуществляется так:

apt-file search имя_файла

К примеру я ищу файл ffi.h:

apt-file search ffi.h

Как можно увидеть файл найден, но кроме него ещё и много лишнего:

01

На помощь можно призвать умные регулярные выражения, к примеру в следующей строке замените ffi.h на тот файл, который вы ищите — и вы всегда будете получать самый точный результат:

t=ffi.h; apt-file search $t | grep -E “/$t$”

02

Ну и для любителей графического интерфейса, вот вам от меня графический интерфейс:

FILE=`/usr/bin/zenity –entry –width=300 —title=”Нахождения пакета по файлу” –text=”Пожалуйста, введите название файла:”`; if [ $? -eq 1 ]; then exit -1; fi; apt-file search $FILE | grep -E “/$FILE$” | zenity –text-info –width 530 –height 350

03

04

Справка по команде apt-file

apt-file [опции] действие [образец]
apt-file [опции] -f действие <файл>

apt-file [опции] -D действие <deb_файл>

Configuration options:

–architecture -a <арх> Использовать определённую архитектуру

–cache -c <дир> Директория кэша

–cdrom-mount -d Использовать особую точку монтирования cdrom

–dummy -y запустить в фиктивном режиме (без действий)

–fixed-string -F Не расширять шаблон

–from-deb -D Использовать файловый список .deb пакета(ов) как

шаблон; подразумевает -F

–from-file -f Прочитать шаблон из файла(ов), один на строку

(используйте ‘-‘ для стандартного ввода)

–ignore-case -i Игнорировать различия регистра

–non-interactive -N Пропустить схемы, требующие ввода пользователя

(полезно в работах cron)

–package-only -l Показать только имя пакета

–regexp -x образец — это регулярное выражение

–sources-list -s <файл> расположение sources.list

–verbose -v запустить в вербальном режиме

–help -h Показать справку.

— Конец опций (требуется если образец

начинается с ‘-‘)

Действия:

update Извлечь информацию оглавлений файлов из apt-sources.

search|find <образец> Поиск файлов в пакете

list|show <образец> Список файлов в пакете

purge Удалить файлы кэша</образец></образец></файл></дир></арх></deb_файл></файл>

whichpkg

whichpkg — это единая оболочка для управления пакетами в Debian. Она является обёрткой вокруг apt, apt-cache, dpkg, aptitude и других. Её цель — простое управление пакетами из одного интерфейса путём унификации главных функций этих инструментов.

Установка whichpkg

sudo apt-get install wajig

Использование: whichpkg

wajig

wajig> whichpkg ffi.h

INSTALLED MATCHES (x2)

———————-

libffi-dev:amd64: /usr/share/doc/libffi6/html/Using-libffi.html

libffi-dev:amd64: /usr/include/x86_64-linux-gnu/ffi.h

UNINSTALLED MATCHES (x13)

————————-

watobo: /usr/share/watobo/rvm/gems/ruby-2.0.0-p643/gems/ffi-1.9.10/ext/ffi_c/libffi/include/ffi.h.vc64

libffi-dev: /usr/share/doc/libffi6/html/Using-libffi.html

pypy-doc: /usr/share/doc/pypy-doc/html/rffi.html

chipmunk-dev: /usr/include/chipmunk/chipmunk_ffi.h

watobo: /usr/share/watobo/rvm/gems/ruby-2.0.0-p643/gems/ffi-1.9.10/ext/ffi_c/libffi/include/ffi.h.vc

ghc-doc: /usr/share/doc/ghc-doc/html/users_guide/ffi.html

watobo: /usr/share/watobo/rvm/gems/ruby-2.0.0-p643/gems/ffi-1.9.10/ext/ffi_c/libffi/include/ffi.h.in

jython-doc: /usr/share/doc/jython-doc/html/javadoc/org/python/modules/jffi/jffi.html

mlton-basis: /usr/lib/mlton/include/basis-ffi.h

watobo: /usr/share/watobo/rvm/gems/ruby-2.0.0-p643/gems/ffi-1.9.10/ext/ffi_c/rbffi.h

libgirepository1.0-dev: /usr/include/gobject-introspection-1.0/girffi.h

pypy-doc: /usr/share/doc/pypy-doc/html/config/objspace.usemodules._rawffi.html

libffi-dev: /usr/include/x86_64-linux-gnu/ffi.h

wajig>

Как видно, показаны совпадения в установленных и в неустановленных пакетах. НО мой предыдущий фокус с фильтрацией командой grep здесь не работает.

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

auto-apt

Программа auto-apt предназначена для поиска пакетов по файлу и установке пакетов по требованию.

Инструмент auto-apt проверяет доступ к файлам запущенными программами внутри своего окружения, и если программа пытается получить доступ к файлу про который известно, что он принадлежит к неустановленному пакету, то auto-apt установит этот пакет используя apt-get. Эта функция требует рабочих apt и sudo.

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

Установка auto-apt:

sudo apt-get install auto-apt

После установки нужно обновить список пакетов следующей командой:

sudo auto-apt update

Поиск осуществляется так:

auto-apt search имя_файла

Пример:

auto-apt search ffi.h

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

dlocate

dlocate является альтернативой dpkg -L и dpkg -S. Её преимуществом является более быстрый поиск, разные дополнительные функции вроде подсчёта занимаемого места, но… она ищет только по установленным пакетам — т. е. для целей, которые озвучены в начале заметки она неприменима.

Установка dlocate:

sudo apt-get install dlocate

Пример использования:

dlocate -S ffi.h

libffi-dev:amd64: /usr/share/doc/libffi6/html/Using-libffi.html

libffi-dev:amd64: /usr/include/x86_64-linux-gnu/ffi.h

Расширенная система управления пакетами APT.

Система APT (Advanced Packaging Tool) не совсем система управления пакетам. Все действия с пакетами выполняют другие утилиты пакета dpkg, а утилиты APT представляют собой интерфейс для взаимодействия, с помощью которого осуществляется сверка контрольных сумм, поиск пакетов, разрешение зависимостей, выкачивание из репозиториев.

APT включает в себя следующий набор утилит:

Утилиты пакета apt.

  • apt-cache — используется для получения информации о пакете и его поиска .
  • apt-cdrom — добавляет CD/DVD-диск как источник пакетов (репозитория).
  • apt-ftparchive — создает индексные файлы
  • apt-config — считывает значения, заданные в конфигурационном файле /etc/apt/apt.conf.
  • apt-key — управление ключами аутентификации, используемыми для проверки подлинности источников пакетов.
  • apt-extracttemplates — извлекает конфигурационные файлы DebConf из пакетов.
  • apt-get — устанавливает, обновляет, удаляет список пакетов и пакеты, основная APT-утилита.
  • apt-sortpkgs — сортирует индексные файлы.
  • apt-secure — проверяет подлинность цифровых подписей пакетов apt, из состава дистрибутива и репозиториев.
  • Утилиты используют следующие файлы конфигурации:

Установка программ Ubuntu/Debian с помощью пакетного менеджера

Установка с помощью пакетного менеджера

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

Перед началом установки пакетов рекомендуется обновить данные о версиях и зависимостях в репозитории следующей командой:

sudo apt-get update

Обновление данных о версиях и зависимостях в репозитории

Скриншот №1. Обновление данных о версиях и зависимостях в репозитории

Если необходимо уточнить название пакета, который требуется установить — ищем в локальном кэше менеджер по ключевым словам, например, web server:

sudo apt-cache search web server

В результате получим большой перечень пакетов, где данное ключевое слово присутствует в описании:

Поиск по ключевым словам

Скриншот №2. Поиск по ключевым словам

Выбираем нужный нам пакет — в данном случае это apache2, и устанавливаем его:

sudo apt-get install apache2

Пакетный менеджер проверяет зависимости, версии, сравнивает их с уже установленными через apt-get пакетами, после чего выдает список необходимых для установки компонентов и запрашивает разрешение на продолжение операции:

Установка пакета

Скриншот №3. Установка пакета

Нажимаем y и дожидаемся окончания установки.

Часто используемые команды пакетного менеджера:

  • apt-get update — обновление информации о пакетах и зависимостях в подключенных репозиториях;
  • apt-get upgrade — обновление всех установленных пакетов до актуальной версии, имеющейся в репозитории;
  • apt-get install имя_пакета — установка пакета;
  • apt-get remove имя_пакета — удаление пакета;
  • apt-get download имя_пакета — скачать deb-пакет в локальную папку;
  • apt-cache search ключевые слова — поиск пакета по ключевым словам;
  • apt-cache show имя_пакета — показать информацию о пакете;
  • apt-cache depends имя_пакета — показать от каких компонентов зависит данный пакет;
  • apt-cache rdepends имя_пакета — показать какие компоненты зависят от пакета;
  • apt-mark hold имя_пакета — зафиксировать текущую версию пакета, прекратить обновление пакета;
  • apt-mark unhold имя_пакета — разрешить обновление пакета.

Установка через Debian package

Программные пакеты могут распространяться и не через репозитории. Например, они могут быть доступны на сайтах разработчиков. В таком случае, пакет можно скачать и воспользоваться утилитой dpkg (debian package) для установки. При использовании dpkg не происходит автоматическое отслеживание зависимостей и скачивание дополнительных пакетов. В случае нехватки каких-либо программ или библиотек установка завершится ошибкой с указанием списка отсутствующих пакетов. Их придется установить отдельно, например, через apt-get, если они присутствуют в подключенных репозиториях, либо скачивать с сайтов разработчиков и устанавливать в нужном порядке через dpkg.

Для примера скачаем из системного репозитория установочный пакет веб-сервера Nginx командой:

sudo apt-get download nginx

и попробуем установить через dpkg –i имя_файла.deb:

sudo dpkg –i ./nginx_1.14.0-0ubuntu1.6_all.deb

В результате система выдает ошибку с перечнем отсутствующих пакетов:

Ошибка с перечнем отсутствующих пакетов

Скриншот №4. Ошибка с перечнем отсутствующих пакетов

Основные опции dpkg:

  • dpkg –i имя_файла.deb — установка пакета; в качестве параметра указывается полное имя файла;
  • dpkg –r имя_пакета — удаление ранее установленного пакета;
  • dpkg –l — выведение списка установленных в системе пакетов.

Установка через файлы сценариев

Установка программы представляет собой распаковку архива, копирование файлов программы в системные директории и, при необходимости, внесение изменений в системные конфигурационные файлы. Все эти действия могут быть внесены в исполняемый файл сценария и выполнены при его запуске. Сейчас достаточно редко встречается подобный метод установки программы, но, тем не менее, некоторые разработчики его используют. Если возникла необходимость в установке такого пакета, необходимо скачать архив (обычно это файл с расширением .tgz или .tar.gz), распаковать его в отдельную директорию на сервере, изучить распакованные файлы, а также прочитать файл readme, если он имеется. Установка программы запускается, обычно, сценарием install.sh, поэтому нужно включить атрибут исполняемого файла командой:

sudo chmod +x ./install.sh

после чего запустить непосредственно сценарий:

sudo ./install.sh

5 команд, которые должен знать каждый

Команда sudo

Sudo расшифровывается как “Superuser do”, то есть что должен сделать суперпользователь. Если вы хоть раз устанавливали/удаляли какое либо приложение, редактировали системные файлы, либо пользовались другими командами, затрагивающими систему, то вы уже наверняка пользовались командой sudo.

Команда sudo всегда пишется в начале. К примеру вот команда для обновления списка пакетов:

Shell <текстареа 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: 15px !important;”>

sudo apt-get update




1sudo apt-getupdate

Для запуска графических приложений лучше использовать команду gksudo. Почему? Во-первых эта команда для этого и предназначена, во-вторых это исключает некоторые возможные ошибки, которые могут возникать при работе приложений с графическим интерфейсом, вызываемых через sudo. Пример запуска nautilus:

Shell <текстареа 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: 15px !important;”>

gksudo nautilus




1gksudo nautilus

</текстареа></текстареа>

Команда cd

Cd расшифровывается как “Change Directory” и с помощью этой команды осуществляется навигация по директориям.

Команда cd

Функции команды cd:

  • Shell <текстареа 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: 15px !important;”>

    cd /home/user/directory




    1cd/home/user/directory

    перейти в определённую категорию</текстареа>

  • Shell <текстареа 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: 15px !important;”>

    cd




    1cd

    перейти в домашнюю категорию</текстареа>

  • Shell <текстареа 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: 15px !important;”>

    cd –




    1cd-

    перейти “назад”, в предыдущую категорию</текстареа>

Помните, что при использовании команды cd можно пользоваться клавишой Tab для автоматического написания полного имени папки. На пример пишем следующее:

Shell <текстареа 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: 15px !important;”>

cd Загру




1cdЗагру

Нажимаем Tab и получаем следующее:

Shell <текстареа 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: 15px !important;”>

cd Загрузки/




1cdЗагрузки/

</текстареа></текстареа>

Команда ls

Навигация по папкам с помощью команды cd довольно проста, но как найти нужный файл? Вот тут и нужна команда ls.

Команда ls

Функции команды ls:

  • Shell <текстареа 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: 15px !important;”>

    ls




    1ls

    Отобразить все файлы и папки в директории, кроме скрытых</текстареа>

  • Shell <текстареа 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: 15px !important;”>

    ls -al




    1ls-al

    Отобразить все файлы и папки в директории, включая скрытые</текстареа>

Команда apt-get install

Приложения, которые доступны в Центре приложений Ubuntu, и которые доступны в ваших PPA, могут быть установлены с помощью apt-get install.

Команда apt-get install

На пример как установить браузер Chromium:

Shell <текстареа 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: 15px !important;”>

sudo apt-get install chromium-browser




1sudo apt-getinstall chromium-browser

Так же можно прописывать не install, а remove, для удаления программы. Пример:

Shell <текстареа 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: 15px !important;”>

sudo apt-get remove chromium-browser




1sudo apt-getremove chromium-browser

</текстареа></текстареа>

Команда uname -a

Довольно популярный вопрос – Как узнать версию ядра (Kernel Version) в Ubuntu Linux. А сделать это довольно просто.

Команда uname -a

Вводим в терминале:

Shell <текстареа 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: 15px !important;”>

uname -a




1uname-a

Дорогие читатели! Давайте составим свой список из 5-ти самых важных команд! Пишите ваши варианты в комментариях, либо в твиттере с упоминанием @ubuntovod. Как соберём достаточно вариантов – будет опубликован список.

Вам нужен свой ДСУ? Обратите внимание на ДСУ-150, должен подойти.Похожие записи:Apt-fast — Ускоряем загрузку пакетов

Добавляем Alias в UbuntuДобавляем Alias в Ubuntu

Как выполнить несколько команд сразу1. Команду ls -al можно не набирать, у нее есть алиас ll (две литинских “эль”). Есть команда la, и есть однобуквенная команда l. Точнее это не совсем команды, это алиасы. Из можно увидеть набрав команду alias. Я ими очень часто пользуюсь, хотя попервости и по незнанию тоже строчил ls -al.

2. На сколько мне известно, команда su расшифровывается как set user, а не superuser. Команда sudo подобна ей, но устанавливает пользователя только на одну команду (которая указывается сразу за sudo). Я не нашел интерпертации аббревиатуры sudo, но ваша интерпетация мне каженся сомнительной, т.к. эта команда охватывает все учетные записи, а не только учетную запись root (или superuser, как у Вас написано). Поэтому присваивать ее суперюзеру не совсем корректно.

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

Актуализация (обновление) системы

Это самый первый шаг, если система у вас нормально запустилась и вы имеете подключение к интернету. В принципе, если вы устанавливали Debian с помощью сетевого установщика, данный шаг может не понадобится, он больше нужен пользователям, использующим CD/DVD диски.

Обновляем систему:

  1. Открываем терминал и логинемся под рутом введя в нем «su» и пароль рута;
  2. Теперь обновляем индексные файлы:

    apt-get update
  3. Обновляем систему:

    apt-get upgrade
  4. После обновления перезагружаем компьютер:

    reboot

Установка и настройка sudo

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

В Debian по-умолчанию sudo не всегда есть, поэтому устанавливаем его (снова залогинившись под рутом):

apt-get install sudo

Но это еще не все. Чтобы пользоваться sudo, вам нужно дать себе права на это. Для этого необходимо либо вносить изменения в файл «sudoers» либо, что проще, добавить себя в группу sudo:

adduser имя_пользователя sudo

После пререзайдите в систему.

С этого момента, если вам, например, нужно установить какую-либо программу или выполнить обновление системы, не нужно заходить в учетную запись рута, просто перед нужной командой добавьте sudo, например: apt-get update под рутом, будет sudo apt-get update под обычным пользователем.

Добавляем репозиторий с несвободными пакетами

Debian известен своей политикой в отношении лицензирования ПО. В состав дистрибутива и основного репозитория входят только свободные (по мнению разработчиков) программы. Все не подходищее под это понятие попадает в non-free репозиторий, который по-умолчанию отключен. В нем находится большое количество нужного ПО, такого как: несвободные драйвера, Microsoft шрифты, Flash и т.п. Используя Debian как домашнюю десктопную ОС, данный репозиторий вам понадобится с вероятностью 99,9%.

Подключим его в систему:

  1. Открываем файл «sources.list«, в котором находится список всех онлайн источников пакетов:

    sudo nano /etc/apt/sources.list
  2. В открывшемся файле находим основной репозиторий. Для Stretch он выглядит примерно так:

    deb http://ftp.us.debian.org/debian/ stretch main
  3. Теперь добавляем в конец строчки

    contrib non-freeДолжно получится:deb http://ftp.us.debian.org/debian/ stretch main contrib non-free
  4. Сохраняем изменения и выходим из редактора.

Поскольку мы добавили новый источник пакетов, нужно обновить индексные файлы:

sudo apt-get update

Настраиваем сглаживание шрифтов

Из коробки в Debian довольно плохое сглаживание шрифтов во всей системе. Чтобы решить данную проблему достаточно в /etc/fonts/ создать файл «local.conf» со следующим содержанием:

&lt;?xml version=’1.0′?&gt;

&lt;!DOCTYPE fontconfig SYSTEM ‘fonts.dtd’&gt;

&lt;fontconfig&gt;

&lt;match target=”font”&gt;

&lt;edit mode=”assign” name=”rgba”&gt;

&lt;const&gt;rgb&lt;/const&gt;

&lt;/edit&gt;

&lt;/match&gt;

&lt;match target=”font”&gt;

&lt;edit mode=”assign” name=”hinting”&gt;

&lt;bool&gt;true&lt;/bool&gt;

&lt;/edit&gt;

&lt;/match&gt;

&lt;match target=”font”&gt;

&lt;edit mode=”assign” name=”hintstyle”&gt;

&lt;const&gt;hintslight&lt;/const&gt;

&lt;/edit&gt;

&lt;/match&gt;

&lt;match target=”font”&gt;

&lt;edit mode=”assign” name=”lcdfilter”&gt;

&lt;const&gt;lcddefault&lt;/const&gt;

&lt;/edit&gt;

&lt;/match&gt;

&lt;match target=”font”&gt;

&lt;edit mode=”assign” name=”autohint”&gt;

&lt;bool&gt;false&lt;/bool&gt;

&lt;/edit&gt;

&lt;/match&gt;

&lt;dir&gt;~/.fonts&lt;/dir&gt;

&lt;/fontconfig&gt;

Сохраните файл и перелогинтесь — шрифты станут нормальными.

Отключаем звук системного динамика

По неизвестной мне причине в Debian оставили включенным модуль ядра «pcspkr», который отвечает за срабатывания системного динамика. Таким образом, при включении или выключении компьютера, а так же в некоторых других случаях из системного блока доносится неприятный писк.

Дабы избавится от данной мелочи нужно просто отключить модуль pcspkr, а точнее — занести его в «черный список» (файл «fbdev-blacklist.conf«), который можно найти по пути /etc/modprobe.d/.

  1. Открываем файл:

    sudo gedit /etc/modprobe.d/fbdev-blacklist.conf
  2. В его конец дописываем:

    blacklist pcspkr
  3. Сохраняем изменения.

Установка Adobe Flash

Нравится вам или нет, но Flash еще достаточно распространен на просторах интернета. Поскольку это проприетарный продукт который, тем более, последние несколько лет не выпускается для Linux, он, естественно, отсутствует в Debian из коробки. Однако легко устанавливается из, как было выше сказано, non-free репозитория. Если он у вас подключен выполните:

sudo apt-get install flashplugin-nonfree

После этого, если вы пользуетесь браузером Chromium, нужно до установить пакет «pepperflashplugin-nonfree«:

sudo apt-get install pepperflashplugin-nonfree

Теперь Flash доступен в вашем браузере.


[spoiler title=”Источники”]

  • https://pingvinus.ru/note/apt
  • https://losst.ru/kak-polzovatsya-apt
  • http://rus-linux.net/nlib.php?name=/MyLDP/po/ispolzovanie-apt-i-dpkg.html
  • https://ZaLinux.ru/?p=366
  • http://knopka.kh.ua/debian-linux/%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0%D0%BC%D0%B8-apt-%D1%87%D0%B0%D1%81%D1%82%D1%8C-1/
  • https://serverspace.by/support/help/installing-ubuntu-debian-programs-using-the-batch-manager/
  • http://ubuntovod.ru/raznoe/5-terminal-commands.html
  • https://geekkies.in.ua/linux/nastrojka-debian-posle-ustanovki.html


[/spoiler]


2020-12-15T15:03:46
Linux

Что Такое Curl. Как работает команда Curl: определение и примеры



























Rate this post

Что такое curl?

На самом деле, curl – это больше чем просто утилита командной строки для Linux или Windows. Это набор библиотек, в которых реализуются базовые возможности работы с URL страницами и передачи файлов. Библиотека поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах и других операций с URL адресами.

Поддержка библиотеки curl была добавлена в множество различных языков программирования и платформ. Утилита curl – это независимая обвертка для этой библиотеки. Именно на этой утилите мы и остановимся в этой статье.

Команда 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 могут загружать файлы из удалённой локации. Есть два способа это сделать:

  • -O сохранит файл в текущем рабочем каталоге с тем же именем, что и у удалённого;
  • -o позволяет указать другое имя файла или местоположение.

Вот пример:

curl -O http://testdomain.com/testfile.tar.gz

Приведённая выше команда сохранит файл как testfile.tar.gz.

curl -o newtestfile.tar.gz http://testdomain.com/testfile.tar.gz

А эта команда сохранит его как newtestfile.tar.gz.

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

curl -C – -O  http://testdomain.com/testfile.tar.gz

Curl также позволяет загрузить несколько файлов одновременно. Пример:

curl -O http://testdomain.com/testfile.tar.gz -O http://mydomain.com/myfile.tar.gz

Если вы хотите загрузить несколько файлов с нескольких URL, перечислите их все в файле. Команды Curl могут быть объединены с xargs для загрузки различных URL-адресов.

Например, если у нас есть файл allUrls.txt, который содержит список всех URL-адресов для загрузки, то приведённый ниже пример выполнит загрузку всех файлов с этих URL.

xargs –n 1 curl -O < allUrls.txt

Команды Curl для HTTP

Curl также можно использовать c прокси-сервером. Если вы находитесь за прокси-сервером, прослушивающим порт 8090 на sampleproxy.com, загрузите файлы, как показано ниже:

curl -x  sampleproxy.com:8090 -U username:password -O http:// testdomain.com/testfile.tar.gz

В приведённом выше примере вы можете выбросить -U username:password, если прокси-сервер не требует метода аутентификации.

Типичный HTTP-запрос всегда содержит заголовок. Заголовок HTTP отправляет дополнительную информацию об удалённом веб-сервере вместе с фактическим запросом. С помощью инструментов разработчика в браузере вы можете посмотреть сведения о заголовке, а проверить их можно с помощью команды curl.

Пример ниже демонстрирует, как получить информацию о заголовке с веб-сайта.

curl -I www.testdomain.com

Используя curl, вы можете сделать запрос GET и POST. Запрос GET будет выглядеть следующим образом:

curl http://mydomain.com

А вот пример запроса POST:

curl –data “text=Hello” https://myDomain.com/firstPage.jsp

Здесь text=Hello — это параметр запроса POST. Такое поведение похоже на HTML-формы.

Вы также можете указать несколько методов HTTP в одной команде curl. Сделайте это, используя опцию –next, например:

curl –data “text=Hello” https://myDomain.com/firstPage.jsp –next https://myDomain.com/displayResult.jsp

Команда содержит запрос 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.

Вот пример такой команды:

curl –cookie-jar Mycookies.txt https://www.samplewebsite.com /index.html -O

Точно так же, если у вас есть файлы cookie в файле, вы можете отправить их на сайт. Вот, как это будет выглядеть:

curl –cookie Mycookies.txt https://www. samplewebsite.com

Curl и FTP

Утилита поддерживает FTP! Вы можете использовать её для загрузки файлов с удалённого сервера.

curl -u username:password -O ftp://sampleftpserver/testfile.tar.gz

В приведённой выше команде ftp://sampleftpserver — это FTP-сервер, который принимает соединения. Вы можете не указывать имя пользователя и пароль для анонимных FTP-соединений. Введите команду и посмотрите, как заполняется индикатор выполнения.

Вы также можете загружать файлы с помощью этой команды:

curl -u username:password -T testfile.tar.gz ftp://sampleftpserver

Опять же таки, мы можем пропустить имя пользователя и пароль для анонимных FTP-соединений.

Ограничение Скорости Скачивания

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

Команда ниже ограничивает скорость скачивания до 100К:

curl –limit-rate 100K http://testdomain.com/samplefile.tar.gz -O

Основной Синтаксис Команды Curl

Итак, давайте узнаем, как пользоваться утилитой. Основной синтаксис Curl выглядит следующим образом:

curl [OPTIONS] [URL]

Самый простой пример использования Curl — для отображения содержимого страницы. Приведённая ниже команда отобразит домашнюю страницу testdomain.com.

curl testdomain.com

Эта команда отобразит полный исходный код домашней страницы домена. Если протокол не указан, Curl интерпретирует его как HTTP.

Как пользоваться curl?

Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.

Загрузка файлов

Самая частая задача – это загрузка файлов linux. Скачать файл очень просто. Для этого достаточно передать утилите в параметрах имя файла или html страницы:

curl https://raw.githubusercontent.com/curl/curl/master/README.md


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

curl -o readme.txt https://raw.githubusercontent.com/curl/curl/master/README.md


А если вы хотите, чтобы полученный файл назывался так же, как и файл на сервере, используйте опцию -O:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md


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

curl -# -C – -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz


Если нужно, одной командой можно скачать несколько файлов:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README


Еще одна вещь, которая может быть полезной администратору – это загрузка файла, только если он был изменен:

curl -z 21-Dec-17 https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

Данная команда скачает файл, только если он был изменен после 21 декабря 2017.

Ограничение скорости

Вы можете ограничить скорость загрузки до необходимого предела, чтобы не перегружать сеть с помощью опции -Y:

curl –limit-rate 50K -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz


Здесь нужно указать количество килобайт в секунду, которые можно загружать. Также вы можете разорвать соединение если скорости недостаточно, для этого используйте опцию -Y:

curl -Y 100 -O https://raw.githubusercontent.com/curl/curl/master/README.md

Передача файлов

Загрузка файлов, это достаточно просто, но утилита позволяет выполнять и другие действия, например, отправку файлов на ftp сервер. Для этого существует опция -T:

curl -T login.txt ftp://speedtest.tele2.net/upload/


Или проверим отправку файла по HTTP, для этого существует специальный сервис:

curl -T ~/login.txt http://posttestserver.com/post.php


В ответе утилита сообщит где вы можете найти загруженный файл.

Отправка данных POST

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

curl -d “field1=val&fileld2=val1″http://posttestserver.com/post.php


Если вас не устраивает такой вариант отправки, вы можете сделать вид, что отправили форму. Для этого есть опция -F:

curl -F “password=@pass;type=text/plain” http://posttestserver.com/post.php


Здесь мы передаем формой поле password, с типом обычный текст, точно так же вы можете передать несколько параметров.

Передача и прием куки

Куки или Cookie используются сайтами для хранения некой информации на стороне пользователя. Это может быть необходимо, например, для аутентификации. Вы можете принимать и передавать Cookie с помощью curl. Чтобы сохранить полученные Cookie в файл используйте опцию -c:

curl -c cookie.txt http://posttestserver.com/post.php

Затем можно отправить cookie curl обратно:

curl -b cookie.txt http://posttestserver.com/post.php

Передача и анализ заголовков

Не всегда нам обязательно нужно содержимое страницы. Иногда могут быть интересны только заголовки. Чтобы вывести только их есть опция -I:

curl -I https://losst.ru


А опция -H позволяет отправить нужный заголовок или несколько на сервер, например, можно передать заголовок If-Modified-Since чтобы страница возвращалась только если она была изменена:

curl -I –хедер ‘If-Modified-Since: Mon, 26 Dec 2016 18:13:12 GMT’ https://losst.ru


Аутентификация curl

Если на сервере требуется аутентификация одного из распространенных типов, например, HTTP Basic или FTP, то curl очень просто может справиться с такой задачей. Для указания данных аутентификации просто укажите их через двоеточие в опции -u:

curl -u ftpuser:ftppass -T – ftp://ftp.testserver.com/myfile_1.txt

Точно так же будет выполняться аутентификация на серверах HTTP.

Использование прокси

Если вам нужно использовать прокси сервер для загрузки файлов, то это тоже очень просто. Достаточно задать адрес прокси сервера в опции -x:

curl -x proxysever.test.com:3128 http://google.co.in

Примеры использования cURL в PHP

GET запрос

$ch = curl_init(‘https://vk.com’);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);

echo $html; // Выведет код страницы vk.comPHP

или

echo file_get_contents(‘https://vk.com’);PHP2

POST запрос

$array = array(

‘login’ => ‘admin’,

‘password’ => ‘1234’

);

$ch = curl_init(‘https://vk.com’);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $array);

// Или предать массив строкой:

// curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array, ”, ‘&’));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);

echo $html;PHP

file_get_contents() так же умеет отправлять POST запросы:

$хедерs = stream_context_create(array(

‘http’ => array(

‘method’ => ‘POST’,

‘хедер’ => ‘Content-Type: application/x-www-form-urlencoded’ . PHP_EOL,

‘content’ => ‘login=admin&password=1234’,

),

));

echo file_get_contents(‘https://vk.com’, false, $хедерs);PHP3

PUT запрос

$ch = curl_init(‘https://cloud-api.yandex.net/v1/disk/’);

curl_setopt($ch, CURLOPT_PUT, true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);

echo $html;PHP4

DELETE запрос

HTTP-метод DELETE используется в REST API для удаления объектов.

$ch = curl_init(‘http://site.com/delete/999’);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ‘DELETE’);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_exec($ch);

curl_close($ch);PHP5

Скачивание файлов

Curl позволяет сохранить результат сразу в файл, указав указатель на открытый файл в параметре CURLOPT_FILE.

$file_name = __DIR__ . ‘/file.html’;

$file = @fopen($file_name, ‘w’);

$ch = curl_init(‘http://yandex.ru’);

curl_setopt($ch, CURLOPT_FILE, $file);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_exec($ch);

curl_close($ch);

fclose($file);PHP

Второй вариант:

$ch = curl_init(‘http://yandex.ru’);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);

file_put_contents(__DIR__ . ‘/file.html’, $html);PHP7

Отправка файлов на другой сервер

Отправка файлов осуществляется методом POST:

$ch = curl_init(‘https://vk.com’);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, array(‘photo’ => ‘@’ . __DIR__ . ‘/image.png’);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);PHP

С PHP 5.5 такой метод загрузки файлов вызывает ошибку, поэтому следует применять CURLFile.

$curl_file = curl_file_create(__DIR__ . ‘/image.png’, ‘mimetype’ , ‘image.png’);

$ch = curl_init(‘https://vk.com’);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, array(‘photo’ => $curl_file));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$res = curl_exec($ch);

curl_close($ch); PHP

Также через curl можно отправить сразу несколько файлов:

$curl_files = array(

‘photo[0]’ => curl_file_create(__DIR__ . ‘/image.png’, ‘mimetype’ , ‘image.png’),

‘photo[1]’ => curl_file_create(__DIR__ . ‘/image-2.png’, ‘mimetype’ , ‘image-2.png’)

);

$ch = curl_init(‘https://vk.com’);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $curl_files);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$res = curl_exec($ch);

curl_close($ch);PHP

Еще файлы можно отправить методом PUT, например так загружаются файлы в REST API Яндекс Диска.

$file = __DIR__ . ‘/image.jpg’;

$fp = fopen($file, ‘r’);

$ch = curl_init(‘https://cloud-api.yandex.net/v1/disk/’);

curl_setopt($ch, CURLOPT_PUT, true);

curl_setopt($ch, CURLOPT_UPLOAD, true);

curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file));

curl_setopt($ch, CURLOPT_INFILE, $fp);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_exec($ch);

curl_close($ch);PHP6

8 примеров использования cURL вместе с PHP

1. Проверяем доступность определённого веб сайта

Как узнать, доступен ли определённый веб сайт? cURL поможет ответить на данный вопрос. Данный скрипт можно использовать совместно с планировщиком для мониторинга сайта.

Замените URL в строке 3 на тот, который вам нужен.  Скопируйте код на свою страницу, и станет известно, доступен ли указанный сайт.

2. Замена cURL для функции file_get_contents()

Функция file_get_contents() очень полезная, но на многих хостингах она отключена. С помощью cURL можно написать функцию, которая будет работать в точности как file_get_contents().

function file_get_contents_curl($url) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Устанавливаем параметр, чтобы curl возвращал данные, вместо того, чтобы выводить их в браузер.

curl_setopt($ch, CURLOPT_URL, $url);

$data = curl_exec($ch);

curl_close($ch);

return $data;

}

3. Получаем последний статус Twitter

С помощью PHP и cURL очень просто получить статус определённого пользователя. Данную информацию можно выводить в блоге.

function get_status($twitter_id, $hyperlinks = true) { $c = curl_init(); curl_setopt($c, CURLOPT_URL, “http://twitter.com/statuses/user_timeline/$twitter_id.xml?count=1”); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); $src = curl_exec($c); curl_close($c); preg_match(‘/(.*)</text>/’, $src, $m); $status = htmlentities($m[1]); if( $hyperlinks ) $status = ereg_replace(“[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]”, ‘’, $status); return($status); }

Использовать функцию очень просто:

echo get_status(‘catswhocode’);

4. Twitter: проверяем отношения между двумя пользователями

Если вам нужно узнать, читает ли ваши твиты определенный пользователь, то можно задействовать API Twitter. Данный скрипт выводит true, если два пользователя, указанные на строчках 17 и 18, находятся в дружеских отношениях на Twitter. В противном случае возвращается false.

function make_request($url) {

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

/* Получаем соответствие */

function get_match($regex,$content) {

preg_match($regex,$content,$matches);

return $matches[1];

}

/* Персоны для проверки */

$person1 = ‘phpsnippets’;

$person2 = ‘catswhocode’;

/* Отправляем запрос на twitter */

$url = ‘https://api.twitter.com/1/friendships/exist’;

$format = ‘xml’;

/* Проверка */

$persons12 = make_request($url.’.’.$format.’?user_a=’.$person1.’&user_b=’.$person2);

$result = get_match(‘/(.*)/isU’,$persons12);

echo $result; // Возвращаем “true” или “false”

5. Загружаем и сохраняем изображения со страницы с помощью cURL

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

function getImages($html) {

$matches = array();

$regex = ‘~http://somedomain.com/images/(.*?).jpg~i’;

preg_match_all($regex, $html, $matches);

foreach ($matches[1] as $img) {

saveImg($img);

}

}

function saveImg($name) {

$url = ‘http://somedomain.com/images/’.$name.’.jpg’;

$data = get_data($url);

file_put_contents(‘photos/’.$name.’.jpg’, $data);

}

$i = 1;

$l = 101;

while ($i 6. Конвертируем валюту с помощью cURl и Google

Пересчет валюты достаточно простое дело, но курсы достаточно часто изменяются, поэтому приходится использовать сервисы, подобные Google, для получения текущих значений курса пересчета. Функция currency() получает 3 параметра: исходная валюта, целевая валюта и сумма.

function currency($from_Currency,$to_Currency,$amount) {

$amount = urlencode($amount);

$from_Currency = urlencode($from_Currency);

$to_Currency = urlencode($to_Currency);

$url = “http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency”;

$ch = curl_init();

$timeout = 0;

curl_setopt ($ch, CURLOPT_URL, $url);

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_USERAGENT , “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)”);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$rawdata = curl_exec($ch);

curl_close($ch);

$data = explode(‘”‘, $rawdata);

$data = explode(‘ ‘, $data[‘3’]);

$var = $data[‘0’];

return round($var,2);

}

7. Получаем информацию о размере файла с помощью cURL

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

function remote_filesize($url, $user = “”, $pw = “”){

ob_start();

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_NOBODY, 1);

if(!empty($user) && !empty($pw))

{

$хедерs = array(‘Authorization: Basic ‘ . base64_encode(“$user:$pw”));

curl_setopt($ch, CURLOPT_HTTPHEADER, $хедерs);

}

$ok = curl_exec($ch);

curl_close($ch);

$head = ob_get_contents();

ob_end_clean();

$regex = ‘/Content-Length:s([0-9].+?)s/’;

$count = preg_match($regex, $head, $matches);

return isset($matches[1]) ? $matches[1] : “unknown”;

}

8. Загрузка через FTP с помощью cURL

PHP имеет библиотеку FTP library, но также можно использовать cURL для загрузки файлов на FTP сервер. Вот рабочий пример:

// Открываем файл

$file = fopen(“/path/to/file”, “r”);

// URL содержит большую часть нужной информации

$url = “ftp://username:password@mydomain.com:21/path/to/new/file”;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// Устанавливаем опции

curl_setopt($ch, CURLOPT_UPLOAD, 1);

curl_setopt($ch, CURLOPT_INFILE, $fp);

curl_setopt($ch, CURLOPT_INFILESIZE, filesize(“/path/to/file”));

// Устанавливаем режим ASCII (то есть – файл текстовой)

curl_setopt($ch, CURLOPT_FTPASCII, 1);

$output = curl_exec($ch);

curl_close($ch);

Данный урок подготовлен для вас командой сайта ruseller.com

Источник урока: http://www.catswhocode.com/blog/amazing-things-to-do-with-php-and-curl

Перевел: Сергей Фастунов

Урок создан: 14 Февраля 2012

Просмотров: 124011

Правила перепечатки

5 последних уроков рубрики “PHP”

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

  • Подборка PHP песочниц

    Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

    Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии, оценивать уроки и сохранять их в личном кабинете


    • 14 Февраля 2012 12:26


    [spoiler title=”Источники”]

    • https://losst.ru/kak-polzovatsya-curl
    • https://www.hostinger.ru/rukovodstva/chto-takoe-curl/
    • https://snipp.ru/php/curl
    • https://ruseller.com/lessons.php?id=1370&rub=37


    [/spoiler]


    2020-12-15T15:03:46
    Linux

    Команда chmod Linux. Как установить права доступа 777 на файл или папку в Linux



























    5/5 — (2 голоса)

    Команды для управления правами на файлы и директории

    Все, что нужно для разрешения проблем, связанных с правами в Linux.

    • sudo — выдает права суперпользователя. Используется перед любой другой командой в терминале, если нужно выполнить ее от имени администратора. Многие программы и операции запускаются исключительно при наличии этих прав, так что sudo используется часто. Например, чтобы обновить список пакетов в Ubuntu, введем: sudo apt-get update. При этом система запросит пароль администратора.
    • sudo su — переводит терминал в режим суперпользователя. В нем каждая введенная команда будет восприниматься системой так, будто перед ней ввели sudo. Помогает запускать несколько скриптов и утилит, требующих права администратора, без необходимости постоянно корректировать их или вводить пароль от учетной записи.
    • sudo gksudo — используется для запуска графических утилит от имени администратора. В Windows для этого есть специальная кнопка в контекстном меню, а в Linux — префикс. Синтаксис такой:

    ​sudo gksudo название приложения, нуждающееся в запуске от имени администратора

    • sudo !! — запускает предыдущую команду от имени администратора. Используется, если до этого была неудачная попытка запустить программу. Помогает не тратить время на повторный ввод большого количества символов.
    • chmod — корректирует права доступа к выбранному файлу. Применяется исключительно с набором аргументов, обозначающих список прав. Допустим, я хочу выдать права на чтение и запись файла Timeweb.html на рабочем столе. Для этого введу в терминал: chmod 777 ~/Desktop/timeweb.html. Теперь его можно открывать и редактировать. Аналогичным образом пользователи поступают с системными файлами, когда приходит время что-то в них менять. По умолчанию большая их часть защищена от записи.
    • chown — назначает владельца для выбранной директории, документа, картинки или любого другого элемента в файловой системе. Синтаксис следующий:

    chown имя учетной записи, которому надо передать правапуть до файла, права на который нужно передать

    Команды для управления пользователями

    Linux — многопользовательская система. Ей одновременно могут управлять несколько людей. Поэтому здесь достаточно сложная система добавления и редактирования учетных записей. 

    • useradd — создает новую учетную запись. Например, мы хотим добавить пользователя с именем Timeweb. Для этого вводим: useradd Timeweb. Но свежесозданному аккаунту нужен не только логин, но и пароль. С помощью опций можно задать дополнительные характеристики новому пользователю.
    • passwd — задает пароль для учетной записи, работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем: passwd Timeweb (в вашем случае может быть любой другой пользователь). После этого система попросит придумать и указать пароль для новой учетной записи. По ходу набора пароля в терминале не будут отображаться даже звездочки, но он все равно учитывает каждую нажатую клавишу. Продолжайте набирать пароль вслепую.
    • userdel — удаляет выбранную учетную запись. Синтаксис простейший:

    userdel имя учетной записи, которую нужно стереть

    Базовые понятия прав доступа к файлам и папкам

    Если же все пустить это дело на самотек и не заморачиваться с установкой нужных привилегий, то вероятность взлома вашего ресурса или заражения его вредоносным кодом будет очень велика. Хорошо, если вы осуществляли резервное копирование (бэкап) всех ваших данных, а если нет?!

    Поэтому лучше сразу же, не откладывая в долгий ящик, произвести настройку и изменение Чмод для всех важных объектов вашего движка, исходя из принципа минимализма. Т.е. давать объектам минимально необходимые для корректной работы вебсайта права.

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

    В свою очередь, по отношению к файлам возможно:

    • r — право на чтение данных.
    • w — на изменение содержимого (запись – только изменение содержимого, но не удаление).
    • x — на исполнение файла.

    Остановимся чуть подробнее на возможности исполнения файла. Дело в том, что в linux любой файлик может быть исполнен. Является ли он исполнительным — определяется не по его расширению (понятие расширение отсутствует в файловой системе Unix), а по правам доступа Chmod. Если у какого-либо файлика установлено право на исполнение “X”, то это означает, что его можно запустить на выполнение.

    По отношению к директориям возможно:

    1. r — право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)
    2. w — на изменение содержимого директории (можно создавать и удалять объекты в ней, причем, если вы имеете право на запись, то удалять вы сможете даже те файлы, которые вам не принадлежат)
    3. x — на вход в директорию (оно всегда проверяется в первую очередь, и даже если вы имеете все нужные привилегии на объект, который закопан глубоко в цепочке каталогов, но не имеете атрибут “X” для доступа хотя бы к одной директории на пути к этому файлике, то к нему вы так и не пробьетесь )

    В системах Линукс все это раздает главный администратор компьютера, доступ к которому он получает путем ввода пароля. И если большинство объектов будут иметь права только для чтения, то вирусам на таком компьютере делать будет практически нечего, т.к. они не смогут себя туда ни записать, ни затем исполниться. Именно этого результата нам нужно добиться, выставляя нужные Chmod на объекты нашего сайта.

    Привилегии для групп пользователей

    Сами привилегии подразделяются на три категории в зависимости от того, кто обращается к объекту:

    • «user» — u (непосредственно владелец файлика)
    • «group» — g (член той же группы, к которой принадлежит владелец)
    • «world» — o (все остальные)

    Сервер определяет, к какой группе пользователей вас отнести в момент подключения вас к серверу. Когда вы, например, подключаетесь к серверу по протоколу FTP, то вы входите под своим именем пользователя (и паролем), и тогда сервер относит вас к группе «user» («u)».

    Прочие пользователи, которые тоже подключаются по FTP к серверу, будут отнесены к группе «group» («g»), а посетитель, который приходит к вам на вебсайт, используя свой браузер, попадает в группу «world» («o»).

    Вариации трех возможных значений «r», «w» и «x» для трех категорий «u», «g» и «o» и определяют Chmod к файлам. Если не задана какая-то категория, то она заменяется знаком дефисом «-». Привилегии указываются последовательно в заданном порядке:

    1. сначала права для владельца — «u»
    2. затем для группы — «g»
    3. и в конце — для всех остальных — «o»

    После того, как сервер отнесет посетителя к определенной группе, он предоставляет ему права на действия с объектами, после чего посетитель сможет прочитать, записать или выполнить файл (в зависимости от того, что разрешено делать с данным объектом его группе).

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

    Для наглядности давайте разберем пример, где владелец файла («user» — «u») имеет все права: на чтение, запись в него и исполнение, а все остальные пользователи только привилегию на чтение. Запись таких Chmod будет выглядеть так: «rwx r– r–».

    Рассмотрим ее в деталях: «rwx» (эта запись задает права на объект для владельца — «u»), «r–» (эта запись задает права на тот же объект, но в случае, если посетитель отнесен сервером к группе — «g»), «r–» (эта запись задает привилегии на объект для всех остальных пользователей — «o»).

    Чем отличаются права файлов и папок

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







    «Права»

    « Файл»

    «Папка»

    r

    Просмотр содержимого

    Можно прочитать содержимое каталога

    w

    Изменение содержимого

    Можно изменять содержимое каталога —

    писать и удалять объекты

    x

    Запуск файлика на выполнение

    Позволяет зайти в каталог и обратиться к его файликам

    А так же табличка, показывающая разнообразные комбинации Chmod для разных типов объектов:










    «Права»

    «Файл»

    «Папка»

    Ничего нельзя делать

    Доступ к каталогу и его подкаталогам запрещен

    r–

    Можно читать содержимое

    Можно прочитать содержимое каталога

    rw-

    Можно видеть и изменять содержимое

    Можно добавить, удалить, изменить файл каталога

    rwx

    Читать, изменять и выполнять файлик

    Можно читать, удалять, изменять файлики, сделать каталог текущим, т.е. “войти” в этот каталог.

    r-x

    Можно прочитать, либо выполнить

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

    –x

    Выполнить, если файлик двоичный

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

    Базовые команды для работы с терминалом

    То, что поможет при работе с консолью в целом.

    • clear — очищает всю выведенную в консоль информацию. Пригодится на тот случай, если терминал будет забит выводом других команд или содержимом ранее открытых документов. Помогает «начать с чистого листа».
    • history — отображает ранее введенные команды. По умолчанию показывает 10 последних, но при желании это значение можно изменить, добавив в качестве параметра любое число. Например, history 17, чтобы показать 17 последних выполненных операций.
    • whatis — вкратце описывает любую установленную программу. Вводим whatis и скармливаем ей в качестве аргумента название интересующей утилиты. Чтобы узнать, что такое wget, напишем whatis wget и получим краткую справку одной строкой.
    • man — демонстрирует подробное руководство по выбранной программе или команде. Чтобы выяснить, как работает wget и какие опции для него доступны, введем man wget. Получим массивное полотно со всей документацией для выбранной утилиты. P.S. Выйти из нее можно нажав на клавишу Q.

    Команда Linux для вывода документации в терминал

    Команда chmod Linux

    Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:

    $ chmodопцииправа/путь/к/файлу

    Сначала рассмотрим какими бывают права доступа linux и как они устанавливаются. Пред этим рекомендую прочитать статью про права, ссылка на которую есть выше. Есть три основных вида прав:

    • r – чтение;
    • w – запись;
    • x – выполнение;
    • s – выполнение  от имени суперпользователя (дополнительный);

    Также есть три категории пользователей, для которых вы можете установить эти права на файл linux:

    • u – владелец файла;
    • g – группа файла;
    • o – все остальные пользователи;

    Синтаксис настройки прав такой:

    группа_пользователейдействиевид_прав

    В качестве действий могут использоваться знаки “+” – включить или “-“ – отключить. Рассмотрим несколько примеров:

    • u+x – разрешить выполнение для владельца;
    • ugo+x – разрешить выполнение для всех;
    • ug+w – разрешить запись для владельца и группы;
    • o-x – запретить выполнение для остальных пользователей;
    • ugo+rwx – разрешить все для всех;

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

    • 0 – никаких прав;
    • 1 – только выполнение;
    • 2 – только запись;
    • 3 – выполнение и запись;
    • 4 –  только чтение;
    • 5 – чтение и выполнение;
    • 6 – чтение и запись;
    • 7 – чтение запись и выполнение.

    Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных. Например, :

    • 744 – разрешить все для владельца, а остальным только чтение;
    • 755 – все для владельца, остальным только чтение и выполнение;
    • 764 – все для владельца, чтение и запись для группы, и только чтение для остальных;
    • 777 – всем разрешено все.

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

    • -c – выводить информацию обо всех изменениях;
    • -f – не выводить сообщения об ошибках;
    • -v – выводить максимум информации;
    • –preserve-root – не выполнять рекурсивные операции для корня “/”;
    • –reference – взять маску прав из указанного файла;
    • -R – включить поддержку рекурсии;
    • –version – вывести версию утилиты;

    Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.

    Синтаксис chmod

    chmod [OPTION]… MODE[,MODE]… FILE…

    chmod [OPTION]… OCTAL-MODE FILE…

    chmod [OPTION]… –reference=RFILE FILE…

    Параметры chmod

    -c, –changes Подобно –verbose, но выдает подробный вывод только тогда, когда изменение действительно сделано.

    -f, –silent, –quiet Бесшумный режим; подавлять большинство сообщений об ошибках.

    -v, –verbose Подробный режим; вывести диагностическое сообщение для каждого обработанного файла.

    –no-preserve-root Не обрабатывать ‘/’ (корневой каталог) каким-либо особым образом, который является настройкой по умолчанию.

    –preserve-root Не работать рекурсивно на «/».

    –reference=RFILE Установить разрешения, соответствующие разрешениям файла RFILE, игнорируя любой указанный РЕЖИМ.

    -R, –recursive Менять файлы и каталоги рекурсивно.

    –help Показать справочное сообщение и выйти.

    –version Вывести информацию о версии и выйти.

    Техническое описание

    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 u+x file

    Или можно воспользоваться цифровой записью:

    chmod 766 file
    ls – l file

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

    chmod u-x file

    И снова проверяем:

    ls -l file

    Дальше разрешим только чтение всем, кроме владельца:

    chmod 744 file
    ls -l file

    Или отберем все права:

    chmod ugo-rwx file

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

    chmod 755 file
    ls -l file

    Такая же ситуация с файлами, владельцем которых вы не являетесь, если вы хотите изменить их права – используйте sudo. Из модификаторов прав вы можете конструировать любые последовательности, я думаю тут нет смысла разбирать их все. Для того чтобы поменять права на все файлы в папке используйте опцию -R:

    chmod -R ug+rw dir
    ls -l dir/

    Также вы можете смотреть подробную информацию про вносимые изменения, например:

    chmod -Rv ug+rw dir

    Связанные команды

    chown – Изменить владельца файлов или каталогов.
    getfacl – Показать списки контроля доступа к файлам.
    ls – список содержимого каталога или каталогов.

    Инструкции <хедер class=”author-хедер”>

    Запись прав доступа числом

    Пример:

    chmod 764 myfile

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

    • Первая цифра используется для указания прав доступа для пользователя.
    • Вторая цифра для группы.
    • Третья для всех остальных.

    В таблице ниже приводятся все возможные комбинации разрешений rwx и соответсвующие им числа (которые используются в команде chmod):

    ЧислоРазрешенияСимвольное обозначение











    0разрешения отсутствуют
    1x — запуск–x
    2w — изменение-w-
    3x+w — запуск+изменение-wx
    4r — чтениеr–
    5r+x — чтение+запускr-x
    6r+w — чтение+изменениеrw-
    7r+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Все пользователи могут читать, изменять и редактировать файл.

    Запись прав доступа символами

    Примеры:

    chmod +x myfile1

    chmod g=rw myfile2

    chmod u-w myfile3

    Как вы можете видеть, в данном формате права доступа задаются символами rwx, но в синтаксисе используются и другие вспомогательные символы, например, математические операции «+» и «-» и такие символы как, например, «g» или «u».

    Общий синтаксис можно записать примерно так:

    chmod (владелец)(математическая операция)(разрешения) имя_файла

    Обозначения для владельцев файла следующие:

    ОбозначениеОписание







    uВладелец-пользователь.
    gГруппа.
    oВсе остальные.
    aВообще все.

    Математические операции означают следующее:

    ОператорОписание






    +Добавляет к текущим правам доступа новое разрешение.
    Удаляет из текущих прав доступа определенное разрешение.
    =Устанавливает полностью новые разрешения (предыдущие перезаписываются новыми).

    В одной команде можно перечислять владельцев и их разрешения через запятую (см. пример ниже).

    Рассмотрим примеры:

    • 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