Linux #2 - Файловая система и файлы
Привет еще раз! Продолжим нашу тему, но сначала маленький оффтоп:
В комментариях развернулся небольшой срач по поводу - где взять 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

Для перемещения по дереву каталогов используется команда 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.
Комментарии