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

В комментариях развернулся небольшой срач по поводу - где взять linux для обучения. Отвечаю: Самый лучший вариант для обучения - снять какую нибудь vds.  RuVDS, ihor, да куча их. Стоимость от 100 р в месяц. Для начального обучения за глаза.  На машинке за условные 5 баксов уже можно будет потыкать в docker и kubernetes. Палочкой, конечно, но достаточно. 

Из преимуществ  такого подхода - машинка всегда доступна, ее не жалко сломать, ее можно переустановить нажатием на одну кнопку, так же легко поменять операционную систему.  Из недостатков - 100+ рублей в месяц. 

Насчет клиента ssh, я честно не знаю, как в современной винде поставить клиента ssh, но подозреваю - что не сложнее чем в андроиде, через магазин приложений. На худой конец - есть putty, и еще  целый вагон разных клиентов.  На ведроид тоже можно поставить, вопрос в удобстве работы, но иногда выручает прям очень!

Вернемся к нашему linux, а точнее к его файловой системе. Вообще у этого термина два значения: 

1. набор по и драйверов для организации физического хранения файлов на дисках. Например FAT32, NTFS, ext3, ext4, zfs и так далее - куча их. Пока для нас это не важно.

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

В Linux нет привычного понятия дисковых устройств вида c: d: и так далее. Кстати, кто знает, почему в винде диски нумеруются с c:?  Так вот, в linux файловая система начинается с / - корневого каталога. В нем расположены стандартные для linux каталоги:

/bin - исполняемые файлы ос

/etc - конфигурационные файлы

/dev - устройства, которые внезапно - файлы

/home - файлы пользователей

/proc /sys - вообще виртуальные каталоги, которые позволяют получить доступ к памяти

/usr  -файлы, которые принадлежат ПО, поствленному пользовтелями

/var - часто меняющиеся файлы

Ну и так далее, все перечислять не буду. К каждому такому каталогу (да в принципе к любому каталогу) может быть подключен физический диск. Так система может стоят у вас на ssd, а что бы его не засирать  /var быть на hdd. Там же могут лежать пользовательские.  файлы. Но об этом - как нибудь потом.

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

ls  - покажет список каталогов и файлов:ls /  - список каталогов и файлов от корневого каталогаls ~/ - список файлов и каталогов в домашнем каталогеls ../ -  тот же список но в каталоге на уровень вышеls -la - показать файлы списком с учетом скрытых файлов

По любой команде можно посмотреть подсказку

 ls --help
Linux #2 - Файловая система  и файлы

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

cd  ~ - перейти в домашний каталогcd /var/log - перейти в каталог логов системыcd ..  - перейти на каталог выше

Каталоги можно создавать, удалять, перемещать  и копировать

mkdir ~/test - создает каталог test в домашней папкеcp -r /var/log ~/test. -скопирует папку /var/log в test  r - рекурсивноcd ~/test - перейти в каталог test mv ./log/* ./ переместит все файлы из подкаталога log в текущем каталоге в текущий каталогrm ./log  -удалить каталог logrm -rf ~/test удалить каталог test  в домашней папке со всем его содержимым не задавая глупых вопросов.

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

Если вы взяли vds для обучения - скорее всего вы логинитесь под пользователем root  - это пользователь -суперадминистратор. Он игнорирует все права доступа. Если вы используете локальный linux или линукс на своей vm - возможно для получения прав адмнистратора вам потребуется su или. sudo. Работать из под рута или из под судо - страшный грех. Но все мы грешны.

И раз мы уж затронули права расскажу как они устанавливаются и хранятся:

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

chown user:group ./fileordirrectoryприменив к этой команде опцию -R можно установить пользователя и группу для каталога  рекурсивно

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

Доступы бывают следующих видов :

0 "-"  недоступен1  "x"- только выполнение2  "w" только запись
4  "r" -  только чтение

 Если начать эти числа складывать, то получатся смешанные права  

rw - 6 чтение и запись

rx - 5 чтение и выполнение

wx - чтение запись и выполнение

Итого - файл с правами 750 доступен для владельца на чтение запись и выполнение для группы - только на чтение и выполнение а для остальных - недоступен вовсе.

Задать права можно командой chmod

chmod 755. ./fileordirectory

Ну и на последок - три замечания:

В линуксе нет необходимости исполняемому файлу давать расширение. exe или cmd. или даже sh. Для того что бы он запустился как исполняемая программа, он должен быть испольняемым файлом или скриптом и иметь бит "исполняемый"

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

Вообще права задаются в виде четырех цифр 

0764

Первый бит - это так называемый липкий (sticky bit). Раньше использовался для того, что бы показать системе, что данный файл нужно по возможности оставить в памяти для дальнейшего использования. В настоящее время sticky bit используется в основном для каталогов, чтобы защитить в них файлы. Из такого каталога пользователь может удалить только те файлы, владельцем которых он является.

Фух, получилось дофига. В следующий раз займемся файлами, зайдем и выйдем из vi.