Ограничения пользователей в Linux с помощью rbash

Иногда, работая в командной строке (особенно при работе с shell-скриптами), вам может быть интересно только имя файла, но доступным для вас является полный путь к файлу.

Команда man отображает страницы мануалов, которые являются руководством пользователя, встроенным по умолчанию во многие Linux и большинство Unix операционных систем.

man bash : Чтобы отобразить всю инструкцию bash

Ограничения пользователей в Linux с помощью rbash

man <ключевое слово>, например man ls выдает информацию о команде ls.

Каналы и фильтры

Оператор pipe ‘|’ (вертикальная полоса) — это способ отправки вывода одной команды в качестве входной для другой команды.

Ограничения пользователей в Linux с помощью rbash

command1 | command2

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

wc — это команда, которая принимает данные на входе и каким-то образом преобразует их вывод. Такие команды называются фильтрами и помещаются после Unix каналов.

Ограничения пользователей в Linux с помощью rbash

Фильтры

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

  • grep или глобальное регулярное выражение ищет строки с заданной строкой или ищет шаблон в заданном входном потоке и выводит результат. Следующая команда прочитает все файлы и выведет все строки, содержащие либо слово ‘Tom’.
Ограничения пользователей в Linux с помощью rbash

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

  • Фильтр wc — это сокращение от количества слов (word count). Он читает список файлов и генерирует одну или несколько следующих статистик: количество новых строк, количество слов и количество байтов. Введем в wc вывод вышеприведенной команды grep для подсчета количества строк, содержащих слово ‘Tom’.
  • Фильтр sort сортирует строки в алфавитном или цифровом порядке.
Ограничения пользователей в Linux с помощью rbash

Команда cat сначала читает содержимое файла , а затем сортирует его.

  • Фильтр uniq означает «уникальный» и дает нам количество уникальных строк во входном потоке.
Читайте также:  Зависает компьютер и не реагирует ни на что Windows 7/10

Важно отметить, что uniq не может обнаружить дубликаты записей, если они не находятся рядом. Поэтому мы использовали сортировку файла перед использованием команды сортировки. В качестве альтернативы можно также использовать команду sort -u вместо uniq.

Ограничения пользователей в Linux с помощью rbash

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

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

  1. &&. Строго говоря, это не команда. Если вы хотите выполнить сразу несколько команд, поставьте между ними двойной амперсанд вот так: первая_команда && вторая_команда. Терминал выполнит команды по порядку. Вы можете ввести столько команд, сколько захотите.
  2. alias. Присваивает созданные вами названия длинным командам, которые вы не можете запомнить. Введите alias длинная_команда короткая_команда.
  3. cd. Изменяет текущую терминальную папку. Когда вы запускаете терминал, он использует вашу домашнюю папку. Введите cd адрес_папки, и терминал будет работать с файлами, которые там находятся.
  4. clear. Очищает окно терминала от всех сообщений.
  5. history. Отображает все недавно введённые вами команды. Кроме того, вы можете переключаться между недавними командами с помощью клавиш «Вверх» и «Вниз». Если вы не хотите, чтобы введённая вами команда была записана, поставьте перед ней пробел так: ваша_команда.
  6. man. Отображает руководство по программам и командам Linux. Введите man имя_пакетаили man ваша_команда.
  7. whatis. Отображает краткое описание какой-либо программы. Введите команду и название программы whatis имя_пакета.
Команды Linux для навигации в терминале

Перечень встроенных ограничений rbash

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

  • запрещена смена текущего каталога командой cd
  • запрещено изменять переменные окружения PATH, SHELL, ENV, BASH_ENV
  • запрещен доступ к переменной SHELLOPTS
  • запрещено перенаправление вывода
  • запрещен вызов утилит, в названии которых присутствует хотя бы один символ «слэш» (/)
  • запрещен вызов команды exec для запуска другого процесса
  • запрещен ряд других команд, которые могут использовать сценарий для выполнения непредусмотренных действий
  • запрещен выход из ограниченного режима

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

Читайте также:  Асинхронные врезки и кэширование средствами веб-сервера (nginx)

Забытая история bash.

Если вы открыли терминал и печатаете там команды, потом открыли еще один, немного его поиспользовали, то новый терминал не «вспомнит» ни одной команды, напечатанной в первом. Вдобавок, при закрытии первого терминала второй перезапишет все команды в истории, введённые в первом. Вдвойне досадно!

Это происходит потому, что история bash сохраняется только когда вы закрываете терминал, а не после каждой команды. Чтобы исправить такое поведение, добавьте в ~/.bashrc строки:

shopt -s histappend PROMPT_COMMAND=`history -a`

Добавьте следующую строку, если переменная $PROMPT_COMMAND уже была задана :

PROMPT_COMMAND=‘$PROMPT_COMMAND; history -a’

Это заставит bash дополнять историю вместо того, чтобы перезаписывать её: каждый раз, когда показывается приглашение командной строки, последняя команда добавляется в историю.

Файлы и каталоги

Смена текущего каталога

Для перехода между каталогами файловой системы вам лишь нужно знать, как применять команду cd.

pwd # перейти к текущему каталогу cd # сменить текущий каталог на домашний cd /bin # перейти в каталог /bin cd .. # перейти в родительский каталог

Содержимое каталога

Чтобы вывести в каталоге файлы, папки, а также их свойства, не обойтись без команды ls.

ls # вывести список файлов и каталогов в текущем каталоге ls /bin # вывести список файлов и каталогов в /bin ls -l # вывести подробную информацию (размер, дата…) ls -a # показать скрытые файлы и каталоги ls -ld # вывести информацию о текущем каталоге (не файлов) ls my* # вывести файлы с именем, начинающимся на my… tree # показать дерево текущего каталога

Скачать файл из Интернета

Самый простой способ скачать файл с веб-серверов  —  это команда wget.

wget # скачать файл с указанного URL в текущий каталог

Файлы и каталоги

Скачивание файла с помощью wget

Создать каталог

Если вы хотите создать папку, используйте команду mkdir.

mkdir movies # создать папку с названием «movies» в текущем каталоге mkdir -p movies/genres/scifi # создать папку с названием «movies», вложенный в «genres», и «scifi»

Копирование, перемещение и удаление

Как правило, функции копирования, перемещения и удаления выполняют через файловый менеджер, но можно делать это и через терминал.

rmdir movies # удалить пустой каталог movies rm -rf movies # удалить каталог movies и его файлы rm # удалить файл mv /home/michael/ /home/john/ # переместить файл из /home/michael в /home/john cp /home/michael/ /home/john/ # скопировать файл из /home/michael в /home/john cp -R letters/ memories/ # скопировать содержимое папки «letters» в папку «memories» cp -R letters ~/Desktop # скопировать папку «letters» вставить на рабочий стол

Читайте также:  Beats BeatsX 2018 & Бюджетная версия наушников с чипом Apple W1

Права доступа и владельцы

Права доступа и владельца файла или каталога можно изменить с помощью команды chmod и chown.

chmod 777 # изменить права файла chmod +x # сделать файл выполняющим chown guille # сменить владельца файла «» на пользователя «guille» ./ # запустить

Поиск файлов

Забыли где файл Хотите вывести все PDF файлы, находящиеся в папке? С помощью команды find вы можете сделать это и многое другое.

find . -name # найти файл с названием «» в текущем каталоге find /home/joe/Downloads -name *.pdf # найти PDF файлы в папке Downloads find / -executable -atime -10 # найти исполняемые файлы в каталоге root, доступ к котором был 10 минут назад find ~ -newer # найти в домашнем каталоге файл, который редактировался после файла «»

Вычисление контрольной суммы SHA256 файла

При скачивании любой программы из Интернета, рекомендуется проверить контрольную сумму SHA, чтобы убедиться, всё ли верно скачалось. И сделать это гораздо легче через терминал:

# Linux sha256sum # вычисление контрольной суммы SHA 256 файла echo -n “foobar” | sha256sum # вычисление контрольной суммы SHA 256 слова “foobar” # macOS shasum -a 256 # вычисление контрольной суммы SHA 256 файла echo -n “foobar” | shasum -a 256 # вычисление контрольной суммы SHA 256 слова “foobar”

Сжатие и распаковка TAR/ZIP файлов

Файлы и каталоги

Неважно, что у вас TAR или ZIP файл, вы можете распаковать его через терминал или же создать из существующих папок:

# Tar / untar tar -cvzf myfolder # сжатие папки «my_folder» в архив «» tar -xvzf # распаковка файла в текущий каталог tar -C /opt/abc -xvzf # распаковка файла в /opt/abc # Zip / unzip zip -r myfolder # сжатие папки «my_folder» в архив «» unzip # распаковка файла в текущий каталог

Свободное место на диске

Хотите узнать доступное место на жестком диске? Или на внешнем? Или в текущем каталоге? В этих вопросах помогает команда df.

df -k . # свободное место в текущем каталоге

df -k # доступное пространство во смонтированных файловых системахсвободное место на моём компьютере