Работа с файлами и директориями
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Pwd

pwd – вывод текущей директории, в которой находится пользователь. Аналогичная команде chdir DOS. По-умолчанию пользователь после входа в систему находится в домашней директории (/ home/<имя> для обычного пользователя или /root для суперпользователя).

 

debian:/usr/bin# pwd

/usr/bin

 

cd

cd <путь> – переход в директорию, указанную в пути. Аналогичная команде DOS, с тем отличием, что в Linux нет понятия буквы диска и его не надо менять отдельной командой.

При запуске без параметров – переход в домашнюю директорию пользователя. Пример – переход в директорию /usr/bin и переход в домашнюю директорию.

user@debian:~$ cd /usr/bin

user@debian:/usr/bin$ pwd

/usr/bin

user@debian:/usr/bin$ cd

user@debian:~$ pwd

/home/user

user@debian:~$

ls

ls – вывод содержимого текущей директории (путь не указан) или содержимого директории по указанному пути.

Например:

 

user@debian:/usr/bin$ cd /

user@debian:/$ ls

bin boot cdrom dev etc home initrd initrd.img lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var vmlinuz

user@debian:/$ ls /home/

user

 

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

 

user@debian:~$ ls --color=auto /usr/bin/

 

и

 

user@debian:~$ ls --color=auto -laX /usr/bin/

 

Touch

touch <путь к файлу> – создание пустого файла по указанному пути. Обратите внимание, что в Unix нет понятия «расширение файла», поэтому файлом будет считаться последняя строка пути, не ограниченная знаком слэша «/». Т.е. команда touch / home/ user/ file создаст файл file в подпапке user папки home. Команда touch / home/ user/ file. txt – аналогично, но имя файла будет file.txt.

 

user@debian:~$ cd /home/user

user@debian:~$ touch file.txt

 

равносильно:

 

user@debian:~$ touch /home/user/file.txt

 

 

Cat

Простейшая программой просмотра содержимого файла, просто копирует файл (файлы) в стандартный поток вывода, объединяя их (объединять по-анлийски - concatenate, отсюда название). Пример: выведем содержимое конфигурационного файла программы apt:

 

debian:/home/user# cat /etc/apt/sources.list

#

# deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40]/ etch contrib main

 

deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40]/ etch contrib main

 

# Line commented out by installer because it failed to verify:

#deb http://security.debian.org/ etch/updates main contrib

# Line commented out by installer because it failed to verify:

#deb-src http://security.debian.org/ etch/updates main contrib.

 

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

Tail

Аналогична cat, но выводит последние 10 строк файла или n-строк при запуске с параметром – n:

 

user@debian:~$ tail -n 2 /etc/apt/sources.list

# Line commented out by installer because it failed to verify:

#deb-src http://security.debian.org/ etch/updates main contrib.

 

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

 

debian:/home/user# tail /var/log/syslog

 

 

Mkdir

Создание новой папки или папок:

debian:~# mkdir newdir

debian:~# mkdir newdir2 newdir/newdir3

debian:~# ls

newdir newdir2

 

cp

Копирование файлов и папок. Для копирования подпапок и файлов нужно запускать команду с ключем – R (рекурсивный режим).

debian:~# touch newfile.txt      #создаем файл newfile.txt

debian:~# cp newfile.txt newdir2 #копируем его в папку newdir

debian:~# cp newfile.txt newdir  #копируем его в папку newdir2

debian:~# cp -R newdir newdir2       #рекурсивно (вместе с содержимым) копируем папку newdir в папку newdir2

debian:~# cp -R newdir2 newdir3  #затем то же проделываем с newdir2

debian:~# tree                   #просмотрим дерево папок и файлов

.

|-- newdir

| `-- newfile.txt

|-- newdir2

| `-- newdir

|  `-- newfile.txt

|-- newdir3

| `-- newdir2

|  `-- newdir

|      `-- newfile.txt

`-- newfile.txt

 

6 directories, 4 files

 

rm

Удаление папок и файлов. Рассмотрим пример:

 

debian:~# rm newdir

rm: cannot remove `newdir': Is a directory

 

Команда по-умолчанию отказывается удалять директории, поэтому чтобы удалить директорию вместе с файлами нужно использовать ключ – R (рекурсивно). Следует быть внимательным при использовании команды – файлы и директории удаляются без подтверждения!

 

debian:~# rm newdir

rm: cannot remove `newdir': Is a directory

debian:~# rm -r newdir

debian:~# rm -r newdir3

debian:~# rm -r newdir2

debian:~# tree

.

|-- newdir

`-- newfile.txt

 

1 directory, 1 file

debian:~#

 

 

mv

Переименование/перемещение директорий.

Переименование:

 

debian:~# ls

newdir newfile.txt

debian:~# mv newdir newdir10

debian:~# ls

newdir10 newfile.txt

 

Перемещение файла:

 

debian:~# ls

newdir10 newfile.txt

debian:~# mv newfile.txt newdir10/newfile10.txt

debian:~# ls

newdir10

debian:~# ls newdir10/

newfile10.txt

 

du

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

Суммарный размер всей текущей папки:

debian:/etc# cd /etc/

debian:/etc# du -sh

17M .

Размер всех подпапок в текущей папке:

debian:/etc# du -h --max-depth=1

24K ./dhcp3

8.0K ./ldap

8.0K ./csh

12K ./cron.monthly

8.0K ./rc1.d

8.0K ./dictionaries-common

16K ./skel

12K ./texmf

Размер всех папок и файлов в текущей папке:

debian:/etc/dhcp3# du -ah

4.0K ./dhclient-enter-hooks.d/debug

8.0K ./dhclient-enter-hooks.d

4.0K ./dhclient-exit-hooks.d/debug

8.0K ./dhclient-exit-hooks.d

4.0K ./dhclient.conf

24K .

Размер всех файлов на диске:

 

debian:/# du -sh /

 

Параметры, которые влияют на отображение:

-h «человекочитабельный» формат отображения размера, т.е. в килобайтах, мегабайтах и т.д.

-a отображать файлы, по-умолчанию файлы не показываются

-s  вывод только суммарного размера для аргумента, т.е. d u – s / etc выведет размер всей папки etc и больше ничего.

-S не включать в размер директории размер ее поддиректорий

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

 

Locate

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

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

 

debian:/home/user# cd /home/user/

debian:/home/user# touch mynewfile.txt

debian:/home/user# updatedb

debian:/home/user# locate mynewfile.txt

/home/user/mynewfile.txt

debian:/home/user#

 

Видим, что файл был найдет – команда вывела путь к файлу.

Удалим файл и снова выполним его поиск:

 

debian:/home/user# rm mynewfile.txt

debian:/home/user# locate mynewfile.txt

/home/user/mynewfile.txt

 

Команда по-прежнему считает, что файл находится на жесктом диске!

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

Обновим БД и снова выполним поиск:

 

debian:/home/user# updatedb

debian:/home/user# locate mynewfile.txt

 

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

SSH

SSH (англ. Secure SHell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли.

Управление ключами

SSH может авторизоваться не по паролю, а по ключу. Ключ состоит из открытой и закрытой части. Открытая часть серверного ключа хранится на компьютере пользователя, Закрытая часть серверного ключа находится на сервере, на который требуется зайти. При авторизации, информация шифруется с помощью открытой части серверного ключа, передается на сервер, после чего пытается быть расшифрованной закрытым ключом сервера. Дальше происходит обратное действие. Если данная процедура произошла успешно — авторизация выполняется. Таким образом, авторизуется не только клиент на сервере, но и сервер по отношению к клиенту. Главной особенностью ключа по сравнению с паролем является то, что его нельзя «украсть», взломав сервер — ключ не передаётся с клиента на сервер, а во время авторизации клиент доказывает серверу, что владеет ключом.

Генерация ключа

Свой ключ можно сгенерировать с помощью программы PuTTY Key Generator.

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

При нажатии Save public key будет предложено сохранить открытый ключ.

При сохранении закрытого ключа не указав пароль, появится предупреждение:

Структура ключа

pubkey — открытый ключ. Его копируют на сервера, куда нужно получить доступ.

privatekey.ppk — закрытый ключ. Он не должен быть никому известен. Если он будет скомпрометирован, то необходимо сгенерировать новый ключ.

Копирование ключа на сервер

В каталоге пользователя, под которым необходимо зайти, если создать файл ~/.ssh/authorized_keys и положить туда открытый ключ, то можно будет заходить без пароля. Обратите внимание, права на файл не должны давать возможность писать в этот файл посторонним пользователям, иначе ssh его не примет. В ключе последнее поле — user@machine. Оно не имеет никакого отношения к авторизации и служит только для удобства определения где чей ключ. Заметим, это поле может быть изменено (или даже удалено) без нарушения структуры ключа.

Пример открытой части ключа:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAoi9h/sl0Y3oQphYUToDbjkqdH4sElB/7z5uAqzBfG/cKXynZjwrXQs5J66G1VyoH492jkvASwtqfo/E/vzDC9bCk1alqyT58xUz97lk+h2nctMd8Nkj3L1AMuT67jYZ0fmRVeksh4qKZ4HYUUzNnEznJ7ijaQ0xgZ7F6Fh7y2d0= user@machine

 

Ключ сервера

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

Если ключ сервера поменялся (например, сервер переустановили), ssh предупредит о изменении ключа. Обратите внимание, если сервер не меняли, а ssh сообщает о изменении ключа, скорее всего вы пытаетесь подключится не к тому серверу (например, в сети появился ещё один компьютер с тем же IP, особо этим страдают локальные сети с 192.168.1.1, которых в мире несколько миллионов). Сценарий атаки «человек по середине» маловероятен, чаще всего ошибка с IP, хотя если у вас авторизация по ключу, а сервер вдруг запросил пароль — то пароль вводить не стоит.

Ключ сервера хранится в /etc/ssh/ssh_host_rsa_key и /etc/ssh/ssh_host_rsa_key.pub. Их можно:

а) скопировать со старого сервера на новый.

б) сгенерировать с помощью ssh-keygen. Пароля при этом задавать не надо (т.е. пустой). Ключ с паролем ssh-сервер использовать не сможет.

Заметим, если вы сервера клонируете (например, в виртуальных машинах), то ssh-ключи сервера необходимо сгенерировать повторно.

Старые ключи из know_hosts при этом лучше убрать, иначе ssh будет ругаться на duplicate key.

 

Копирование файлов

С помощью программы winscp можно копировать файлы через ssh-сессию.

Для этого следует указать адрес сервера, порт, на котором работает ssh, и расположение приватного ключа.

Удалённое исполнение кода

PuTTY может выполнить команду на удалённом сервере и тут же закрыть соединение.

Установка LAMP в Ubuntu

LAMP - это самый популярный стек программного обеспечения для работы веб-сервера. Сюда входят такие программы, как Apache, PHP, MySQL, и работает всё это в Linux, отсюда и такое название. Apache - это самый популярный веб-сервер, может, он не такой производительный, как Nginx, зато очень прост в настройке. PHP - самый популярный язык программирования для веб, а без базы данных вообще сейчас мало что работает.

Рассмотрим, как выполняется Установка LAMP Ubuntu 18.04 несколькими способами: с помощью утилиты tasksel или вручную с помощью установщика программ.

Дата: 2019-12-10, просмотров: 272.