Команды в bash
Команда в bash — это наименьшая единица кода, которую bash может выполнить. С помощью команд мы сообщаем шеллу, что нам нужно, чтобы он сделал. bash обычно принимает от пользователя одну команду и возвращается к нему после того, как команда будет выполнена. Чтобы немного освоиться в bash, давайте попробуем выполнить несколько простых команд.
Команда echo — возвращает всё, что вы вводите в командной строке:
Пример использования команды echo
Команда date — отображает текущее время и дату:
Пример использования команды date
Команда pwd (сокр. от print working directory») — указывает на текущий рабочий каталог, в котором команды шелла будут искать файлы.
Файловая иерархия в Linux имеет древовидную структуру, поэтому, чтобы добраться до указанного каталога или файла, нам нужно пройти определенный путь, каждый узел которого отделен от других узлов символом .
Пример использования команды pwd
Команда ls (сокр. от list») — отображает содержимое каталога. Обычно, команда начинает с просмотра нашего домашнего каталога. Это означает, что если мы просто напечатаем , то данная команда выведет содержимое текущего каталога, которым в нашем примере является домашний каталог /home/diego:
Пример использования команды ls
Команда cd (сокр. от change directory») — изменяет текущую директорию на заданную пользователем. Рассмотрим некоторые примеры использования данной команды:
— меняет текущую директорию на заданную. Давайте попробуем с помощью команды перейти к корневому каталогу и ознакомимся с его содержимым
Обратите внимание, что мы также можем использовать точку с запятой для записи двух команд в одной строке
Пример объединения двух команд в одной строке
— вернуться в родительский каталог.
— вернуться в домашний каталог.
Команда mkdir (сокр. от make directory») — создает новый каталог.
Команда mv (сокр. от move») — перемещает один или несколько файлов/каталогов из одного места в другое (заданное пользователем). Для этого нужно указать, что мы хотим переместить (т.е. источник), и куда мы хотим переместить (т.е. пункт назначения).
В качестве примера я создам новый каталог Ravesli в своей домашней директории и перемещу в него все .txt-файлы (ну как «все», у меня там только один файл — Адреса.txt) из home/diego/Документы/ с помощью двух вышеприведенных команд:
Перемещение файлов с помощью команды mv
Команда touch — создает новые пустые файлы (а также изменяет временные метки в существующих файлах и каталогах). Вот как мы можем создать пустой файл под названием foo.txt в папке Ravesli из домашнего каталога:
Создание файла с помощью команды touch
Команда rm (сокр. от remove») — удаляет файлы/каталоги. По умолчанию, команда НЕ удаляет каталоги, но если используется как внутри заданного каталога, то каждый подкаталог и файл внутри заданного каталога — удаляются.
Давайте удалим ранее созданный файл foo.txt:
Удаление файла с помощью команды rm
Команда rmdir (сокр. от remove directory») — удаляет каталоги.
Давайте удалим созданный ранее каталог home/diego/Ravesli:
Удаление каталогов с помощью команды rmdir
Команда cat (сокр. от «concatenate») — считывает файл и выводит его содержимое. Она может работать с несколькими файлами, объединяя их вывод в единый поток (отсюда и происходит её название). У меня в домашнем каталоге есть папка untitled с файлами С++/Qt-проекта, и ниже я использую команду для просмотра содержимого файла main.cpp из untitled:
Пример использования команды cat
Чтобы просмотреть несколько файлов, укажите друг за другом (через пробел) имена требуемых файлов после команды , например:
Просмотр нескольких файлов с помощью команды cat
Команда man (сокр. от «manual») — отображает справочные страницы, которые являются руководством пользователя, встроенным по умолчанию во многие дистрибутивы Linux и большинство систем Unix. Например, команда отобразит руководство пользователя, а команда отобразит справку по команде .
Отображение справочной информации с помощью команды man
Больше руководств по cli:
- Оболочка Bash
- Введение в сценарии оболочки Bash
- Раковина рыбы
- Оболочка, наблюдайте за содержимым файла по мере его заполнения
- Как выйти из Vim
- Редакторы UNIX
- Команды файловой системы UNIX
- Учебник по оболочкам Unix
- Как установить псевдоним в оболочке macOS или Linux
- Практическое руководство по домашнему пиву
- Как исправить ошибку неверного пути к активному разработчику xcrun в macOS
- Командная строка для начинающих
- Введение в Linux
- Как найти процесс, использующий порт
- Команды Linux: mkdir
- Команды Linux: cd
- Команды Linux: pwd
- Команды Linux: rmdir
- Команды Linux: ls
- Команды Linux: mv
- Команды Linux: cp
- Команды Linux: меньше
- Команды Linux: хвост
- Команды Linux: коснитесь
- Команды Linux: cat
- Команды Linux: найти
- Команды Linux: ln
- Команды Linux: ps
- Команды Linux: echo
- Команды Linux: вверх
- Команды Linux: kill
- Команды Linux: killall
- Команды Linux: псевдоним
- Команды Linux: вакансии
- Команды Linux: bg
- Команды Linux: fg
- Команды Linux: введите
- Команды Linux: какие
- Команды Linux: whoami
- Команды Linux: кто
- Команды Linux: очистить
- Команды Linux: su
- Команды Linux: sudo
- Команды Linux: chown
- Команды Linux: chmod
- Команды Linux: passwd
- Команды Linux: открыть
- Команды Linux: wc
- Команды Linux: история
- Команды Linux: du
- Команды Linux: umask
- Команды Linux: grep
- Команды Linux: man
- Команды Linux: uname
- Команды Linux: сортировка
- Команды Linux: uniq
- Команды Linux: diff
- Команды Linux: nohup
- Команды Linux: df
- Команды Linux: xargs
- Команды Linux: gzip
- Команды Linux: gunzip
- Команды Linux: ping
- Команды Linux: traceroute
- Команды Linux: tar
- Команды Linux: экспорт
- Команды Linux: crontab
- Команды Linux: dirname
- Команды Linux: базовое имя
- Команды Linux: printenv
- Команды Linux: env
- Краткое руководство по редактору ed
- Краткое руководство по vim
- Краткое руководство по emacs
- Краткое руководство по нано
- Linux, на устройстве не осталось места
- Как использовать Netcat
chattr Пример
Одно из распространенных применений — установка флага неизменяемости для файла или каталога, чтобы пользователи не могли удалить или переименовать файл.
Вы можете просмотреть атрибуты файла с помощью команды :
Вывод ниже показывает, что установлен только флаг :
Чтобы сделать файл неизменяемым, добавьте флаг с оператором к существующим атрибутам:
Мы используем sudo, потому что только root может изменить неизменяемый флаг.
Подтвердите, что атрибут добавлен:
Чтобы отменить изменения и удалить неизменяемый флаг, используйте оператор :
С помощью вы можете добавлять или удалять сразу несколько атрибутов. Например, чтобы сделать файл неизменяемым и указать ядру не отслеживать время последнего доступа, вы должны использовать:
Последний оператор, который вы можете использовать, — это оператор . Например, чтобы установить атрибут как единственный атрибут, вы должны запустить:
Обратите внимание, что оператор и флаг заключены в кавычки, чтобы избежать интерпретации оболочки символа
IPTABLES (firewall)
<box 100% round left |>
iptables -t filter -nLiptables -nL — отобразить все цепочки правил iptables -t nat -L — отобразить все цепочки правил в NAT-таблицеiptables -t filter -F или iptables -F — очистить все цепочки правил в filter-таблицеiptables -t nat -F — очистить все цепочки правил в NAT-таблицеiptables -t filter -X — удалить все пользовательские цепочки правил в filter-таблицеiptables -t filter -A INPUT -p tcp –dport telnet -j ACCEPT — позволить входящее подключение telnet’омiptables -t filter -A OUTPUT -p tcp –dport http -j DROP — блокировать исходящие HTTP-соединенияiptables -t filter -A FORWARD -p tcp –dport pop3 -j ACCEPT — позволить «прокидывать» (forward) POP3-соединенияiptables -t filter -A INPUT -j LOG –log-prefix «DROP INPUT» — включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса «DROP INPUT»iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE — включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами.iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp –dport 22 -j DNAT –to-destination 10.0.0.2:22 — перенаправление пакетов, адресованных одному хосту, на другой хост
</box>
Вариант 1 — Изменение прав доступа с помощью Файлового Менеджера
Для начала вам необходимо войти в Файловый Менеджер.
-
Войдите в панель управления Hostinger и нажмите на иконку
Файловый Менеджер
в разделе
Файлы
.
-
Далее кликните правой кнопкой мыши на файле или папке для которой вам необходимо поменять права доступа и выберите опцию
Разрешения
.
-
В открывшемся окне установите необходимые права и нажмите
Изменить
.
При включении опции
Рекурсивно
такие же права доступа будут установлены для всех файлов и папок внутри нее.
Слева в графе
По-умолчанию
показываются стандартные права доступа для папки.
Справа в графе
Изменения
показываются права доступа которые будут установлены после изменения.
Значения прав представлены как в буквенном, так и числовом формате.
drwxr |
- d – означает тип файла, то есть каталог.
- rwx – все права доступа для владельца.
- r-x – права на чтение и выполнение для группы владельца.
- r-x – такие же права для всех остальных.
Синтаксис и опции chattr
Утилиты chattr и lsattr входят в пакет e2fsprogs и предустановлены во всех современных дистрибутивах. Базовый синтаксис chattr выглядит следующим образом:
$ chattr опции файлы
Вот основные опции утилиты, которые вы можете использовать:
- -R — рекурсивная обработка каталога;
- -V — максимально подробный вывод;
- -f — игнорировать сообщения об ошибках;
- -v — вывести версию.
Оператор может принимать значения:
- + — включить выбранные атрибуты;
- — — отключить выбранные атрибуты;
- = — оставить значение атрибута таким, каким оно было у файла.
Вот некоторые доступные атрибуты:
- a — файл может быть открыт только в режиме добавления;
- A — не обновлять время перезаписи;
- c — автоматически сжимать при записи на диск;
- C — отключить копирование при записи;
- D — работает только для папки, когда установлен, все изменения синхронно записываются на диск сразу же;
- e — использовать extent’ы блоков для хранения файла;
- i — сделать неизменяемым;
- j — все данные перед записью в файл будут записаны в журнал;
- s — безопасное удаление с последующей перезаписью нулями;
- S — синхронное обновление, изменения файлов с этим атрибутом будут сразу же записаны на диск;
- t — файлы с этим атрибутом не будут хранится в отдельных блоках;
- u — содержимое файлов с этим атрибутом не будет удалено при удалении самого файла и потом может быть восстановлено.
А теперь давайте перейдем к примерам работы с утилитой chattr и сделаем файл неизменяемым.
Microsoft Windows networks(SAMBA)
<box 100% round left|>
nbtscan ip_addrnmblookup -A ip_addr — разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba.smbclient -L ip_addr/hostname — отобразить ресурсы, предоставленные в общий доступ на windows-машинеsmbget -Rr smb://ip_addr/share — подобно wget может получить файлы с windows-машин через smb-протоколmount -t smbfs -o username=user,password=pass //winclient/share /mnt/share — смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему
</box>
Специальные права доступа к файлам в Linux
Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.
-
SUID
— если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя; -
SGID
— этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок; -
Sticky-bit
— этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.
Теперь давайте рассмотрим как посмотреть и изменить права на файлы в linux.
10 Простых Примеров:
1. Добавить всем права на чтение файла:
$ chmod a+r file
2. Забрать права на исполнение файла у всех:
$ chmod a-x file
3. Добавить всем права на чтение и запись:
$ chmod a+rw file
4. Установить права на чтение и запись для владельца и забрать права у всех остальных:
$ chmod u=rw,go= file
5. Для директории и всего ее содержимого добавить права на запись для владельца, и забрать права на запись для всех остальных:
$ chmod -R u+w,go-w directory
6. Забрать у всех все права:
$ chmod file
7. Дать всем права на права на чтение, запись и выполнение файла:
$ chmod 777 file
8. Задать права на чтение и запись без права на исполнение для владельца и группы, а все остальным дать право только на чтение:
$ chmod 664 file
9. Назначить права ‘-rwx’ для владельцев директорий, добавить права ‘rw’ для владельцев файлов, ‘—‘ для всех остальных:
$ chmod -R u+rwX,g-rwx,o-rwx directory
10. Забрать у всех права на исполнение файлов в директории и поддиректориях, но в то же время, разрешить всем просматривать содержимое директорий.
Особенности использования команды ls
Когда команда ls обрабатывает не «обычные» файлы, а специальные файлы устройств (хотя это тоже самые обычные файлы). То для них она выводит несколько иную информацию:
$ ls -l /dev/tty0 cr--w---- 1 root tty 4,0 фев 28 14:27 /dev/tty0
Вместо размера файла выводится старший и младший номера (4, 0) устройства tty0 – это первая виртуальная консоль, управляемая драйвером устройства 4, который является драйвером терминала.
Когда нужно узнать для определённого файла не только количество указывающих на него жестких ссылок, но и сами эти ссылки. То целесообразно использовать опцию -i, которая выводит номер индексного дескриптора для файла:
$ ls -li ‘Рабочий стол’ 3276880 ‘Рабочий стол’
Номер индексного дескриптора — это индекс той самой таблицы, в которой содержатся записи всех файловых систем. В свою очередь, на дескрипторы ссылаются файловые записи каталогов. Таким образом, у жёстких ссылок, ссылающихся на один и тот же файл, будут одинаковые номера. Зная номер индексного дескриптора определённого файла, можно найти в системе все ссылающиеся на него жесткие ссылки, используя команду find:
$ find точка_монтирования -xdev -inum индексный_дескриптор
Данный пример — лишь одно из важных практических применений команды ls. Следует также отметить некоторые особенно полезные опции команды ls:
-a – отображает все файлы и каталоги. Включая скрытые (имена которых начинаются с точки), а также «всевдокаталоги» с именами «.» и «. .»;
-t – отображает результаты в отсортированном (по времени изменения файлов) порядке. А опция -tr то же, но в обратном порядке;
-F – выделяет каталоги и исполняемые файлы в общем выводе;
-h – отображает размеры файлов и каталогов в «человекопонятных» единицах, к примеру 4k или 10M;
-R – рекурсивный вывод, выполнение которого прерывается нажатием сочетания клавиш .
Иногда возникает путаница в использовании опций -l и —d. Дело в том, что опция -d предназначена для дополнения работы опции -l (которая выводит подробную информацию об атрибутах). Когда необходимо получить атрибуты именно конкретного каталога:
$ ls -ld ~/htdocs drwxrwxr-x 12 john john 4096 фев 11 12:56 /home/john/htdocs
Разрешения для файлов Linux
Прежде чем идти дальше, давайте объясним базовую модель разрешений Linux.
В Linux каждый файл связан с владельцем и группой и имеет права доступа для трех разных классов пользователей:
- Владелец файла.
- Члены группы.
- Остальные (все остальные).
Владение файлом можно изменить с помощью команд и .
К каждому классу применяются три типа прав доступа к файлам:
- Разрешение на чтение.
- Разрешение на запись.
- Разрешение на выполнение.
Эта концепция позволяет указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.
Права доступа к файлам можно просмотреть с помощью команды :
Первый символ показывает тип файла. Это может быть обычный файл ( ), каталог ( ), символическая ссылка ( ) или любой другой специальный тип файла.
Следующие девять символов представляют права доступа к файлу, три тройки по три символа каждая. Первый триплет показывает разрешения владельца, второй — разрешения группы, а последний триплет — разрешения для всех остальных. Разрешения могут иметь разное значение в зависимости от типа файла.
В приведенном выше примере ( ) означает, что владелец файла имеет разрешения на чтение и запись ( ), а группа и другие пользователи имеют разрешения только на чтение ( ).
Каждый из трех троек разрешений может состоять из следующих символов и иметь различные эффекты, в зависимости от того, установлены ли они для файла или для каталога:
Влияние разрешений на файлы
Разрешение | символ | Значение в файле |
---|---|---|
Читать | Файл не читается. Вы не можете просмотреть содержимое файла. | |
Файл доступен для чтения. | ||
Написать | Файл нельзя изменить или модифицировать. | |
Файл можно изменить или модифицировать. | ||
Выполнить | Файл не может быть выполнен. | |
Файл можно запустить. | ||
Если он найден в триплете, он устанавливает бит . Если он находится в тройке , он устанавливает бит . Это также означает, что установлен флаг . Когда для исполняемого файла флаги или , файл выполняется с правами владельца и / или группы. | ||
То же, что и но флаг не установлен. Этот флаг редко используется для файлов. | ||
Если он обнаружен в триплетах, он устанавливает бит . Это также означает, что установлен флаг . Этот флаг бесполезен для файлов. | ||
То же, что и но флаг не установлен. Этот флаг бесполезен для файлов. |
Влияние разрешений на каталоги (папки)
В Linux каталоги — это особые типы файлов, которые содержат другие файлы и каталоги.
Разрешение | символ | Значение в каталоге |
---|---|---|
Читать | Содержимое каталога не отображается. | |
Можно показать содержимое каталога. (например, вы можете перечислить файлы внутри каталога с помощью .) | ||
Написать | Содержимое каталога нельзя изменить. | |
Содержимое каталога может быть изменено. (например, вы можете создавать новые файлы , удалять файлы и т. д.) | ||
Выполнить | Каталог не может быть изменен на. | |
По каталогу можно перемещаться с помощью . | ||
Если он находится в тройке , он устанавливает бит . Если он находится в триплете, он устанавливает бит . Это также означает, что установлен флаг . Когда для каталога флаг новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. не влияет на каталоги. | ||
То же, что и но флаг не установлен. Этот флаг бесполезен для каталогов. | ||
Если он обнаружен в триплетах, он устанавливает бит . Это также означает, что установлен флаг . Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь может удалять или переименовывать файлы в каталоге. | ||
То же, что и но флаг не установлен. Этот флаг бесполезен для каталогов. |
Разрешения
Я кратко упоминал о разрешениях ранее, когда представлялкоманда.
Странная строка, которую вы видите в каждой строке файла, например, определяет права доступа к файлу или папке.
Давайте рассмотрим это.
Первая буква указывает на тип файла:
- означает, что это нормальный файл
- означает, что это каталог
- означает, что это ссылка
Тогда у вас есть 3 набора значений:
- Первый набор представляет разрешениявладелецфайла
- Второй набор представляет собой разрешения членовгруппафайл связан с
- Третий набор представляет разрешениявсе остальные
Эти наборы состоят из 3 значений.означает, что конкретныйперсонаимеет доступ на чтение, запись и выполнение. Все, что удаляется, заменяется на, который позволяет формировать различные комбинации значений и относительных разрешений:,,, и так далее.
Вы можете изменить разрешения, предоставленные файлу, используякоманда.
можно использовать 2 способами. Первый использует символьные аргументы, второй — числовые аргументы. Начнем сначала с символов, что более интуитивно понятно.
Вы печатаетеза которым следует пробел и буква:
- означаетвсе
- означаетПользователь
- означаетгруппа
- означаетдругие
Затем вы вводите либоили жечтобы добавить разрешение или удалить его. Затем вы вводите один или несколько символов разрешений (,,).
За всем следует имя файла или папки.
Вот некоторые примеры:
Вы можете применить одни и те же разрешения к нескольким персонажам, добавив несколько букв перед/:
Если вы редактируете папку, вы можете применить разрешения к каждому файлу, содержащемуся в этой папке, с помощью(рекурсивный) флаг.
Числовые аргументы работают быстрее, но мне трудно их запомнить, когда вы не используете их изо дня в день. Вы используете цифру, которая представляет разрешения персонажа. Это числовое значение может быть максимум 7, и оно рассчитывается следующим образом:
- если есть разрешение на исполнение
- если есть разрешение на запись
- если есть разрешение на чтение
Это дает нам 4 комбинации:
- нет разрешений
- может выполнить
- могу писать
- может писать, выполнять
- может читать
- может читать, выполнять
- может читать, писать
- может читать, писать и выполнять
Мы используем их парами по 3, чтобы установить разрешения для всех 3 групп вместе:
Как правильно интерпретировать вывод команды ls?
Первое, что может ввести в заблуждение при изучении вывода команды ls -l, так это первая секция данных. Состоящая из набора десяти символов и показывающая режимы доступа к файлу. Для вышеприведённого примера первый символ «-» указывает, что это файл. А в случае с каталогом вместо него выводится символ «d». Следующие девять символов представляют собой три группы, отражающих режимы доступа к файлу. Первая группа (первые три символа «rwx») показывают, какие права доступа выставлены на данный файл для его владельца. Следующая группа символов — «r-x» — показывает режим доступа для группы, к которой принадлежит файл. Ну а третья («r-x») — права доступа для всех остальных пользователей.
В полях, отображающих владельца и группу вместо символьных имён могут быть также и цифровые идентификаторы. Такое бывает, когда соответствующие записи были удалены из файлов /etc/passwd или /etc/group. Также это может быть признаком возникновения ошибки в базах данных LDAP или NIS. Конечно, если таковые используются.
Следует также понимать, что время последнего изменения файла на самом деле отражает не время редактирования его содержимого, например, а время изменения одного или нескольких из его атрибутов.
Заключение
В данном руководстве вы узнали, как изменить права доступа к файлу или папке. Теперь, выставив нужные права доступа, вы можете установить нужный вам скрипт или укрепить защиту вашего сайта. Для получения более подробной информации о правах доступа обратитесь
к
.
В операционной системе Linux есть много отличных функций безопасности, но она из самых важных — это система прав доступа к файлам. Linux, как последователь идеологии ядра Linux в отличие от Windows, изначально проектировался как многопользовательская система, поэтому права доступа к файлам в linux продуманы очень хорошо.
И это очень важно, потому что локальный доступ к файлам для всех программ и всех пользователей позволил бы вирусам без проблем уничтожить систему. Но новым пользователям могут показаться очень сложными новые права на файлы в linux, которые очень сильно отличаются от того, что мы привыкли видеть в Windows
В этой статье мы попытаемся разобраться в том как работают права файлов в linux, а также как их изменять и устанавливать.