🏠 Домашнее задание 7 — Права доступа и bash-скрипт

К оглавлению урока

⚡ Что нужно сделать

  1. Создать /tmp/file.txt через vi/nano, добавить 3 строки df -h
  2. Дать группе права на запись и исполнение (w+x), убрать права у остальных
  3. Создать myfirstbashscript.sh, сделать исполняемым
  4. Переменная USER=имя, pwd в скрипте
  5. Дописать в /tmp/file.txt содержимое скрипта и history
  6. Прислать через export_file /tmp/file.txt

📋 Текст домашнего задания 7 (из LMS)

  1. Создать файл /tmp/file.txt при помощи vi или nano
  2. Добавить в него первые 3 строки вывода команды df -h
  3. Дать группе права на запись и исполнение
  4. Убрать все права для остальных
  5. Создать файл myfirstbashscript.sh, сделать его исполняемым
  6. Завести переменную USER, которая равна вашему имени
  7. Добавить команду/вызов переменной, чтобы скрипт написал из какой директории он запущен
  8. Дописать в /tmp/file.txt содержимое скрипта
  9. Дописать в /tmp/file.txt историю команд (history)
  10. Прислать файл через export_file /tmp/file.txt

Подготовка окружения

1. Подключение к серверу

ssh -i ~/.ssh/id_rsa ec2-user@linux.itcareerhub.de

Убедитесь, что вы на удалённом сервере (приглашение изменится: ec2-user@ip-xxx-xxx-xxx-xxx).

2. Проверка vi/nano

which vi    # должен вернуть путь /usr/bin/vi
which nano  # или /usr/bin/nano

Если nano не установлен — используйте vi. Базовые команды vi: i — режим вставки, Esc — выход из режима вставки, :wq — сохранить и выйти.

Пошаговое решение

Шаг 1. Создать /tmp/file.txt

vi /tmp/file.txt

В vi нажмите i для перехода в режим вставки. Введите первые три строки вывода df -h. Чтобы получить реальный вывод — откройте второй терминал или запустите df -h заранее.

Шаг 2. Добавить 3 первые строки df -h

Удобнее через перенаправление (не открывая vi):

# Сначала создать файл с 3 строками df -h
df -h | head -3 > /tmp/file.txt

# Проверить содержимое
cat /tmp/file.txt

Вывод будет примерно таким:

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        483M     0  483M   0% /dev
tmpfs           492M     0  492M   0% /dev/shm

Шаг 3. Дать группе права на запись и исполнение, убрать у остальных

# Текущие права:
ls -la /tmp/file.txt
# -rw-r--r--  (обычно после создания)

# Дать группе только запись и исполнение (w+x = 3):
chmod g+wx /tmp/file.txt
# По заданию группе нужны w и x, но НЕ чтение — поэтому g+wx, а не g+rwx.

# Убрать все права у остальных (o-rwx):
chmod o-rwx /tmp/file.txt

# Или одной командой (6=rw-, 3=-wx, 0=---):
chmod 630 /tmp/file.txt

# Проверка:
ls -la /tmp/file.txt
# -rw--wx---  (что соответствует 630)

Шаг 4. Создать myfirstbashscript.sh

vi myfirstbashscript.sh

Содержимое скрипта:

myfirstbashscript.sh

#!/bin/bash
USER="Andrew"
echo "Hello, I am $USER"
echo "Script is running from directory:"
pwd

Сохранить в vi: Esc:wqEnter.

Шаг 5. Сделать скрипт исполняемым и запустить

chmod +x myfirstbashscript.sh
./myfirstbashscript.sh
# Hello, I am Andrew
# Script is running from directory:
# /home/ec2-user

Шаг 6. Дописать содержимое скрипта в /tmp/file.txt

# Дописать (>>) содержимое скрипта в файл
cat myfirstbashscript.sh >> /tmp/file.txt

# Проверить
cat /tmp/file.txt

Шаг 7. Дописать историю команд

history >> /tmp/file.txt

# Проверить итоговое содержимое файла
cat /tmp/file.txt

Шаг 8. Отправить файл преподавателю

export_file /tmp/file.txt

Финальная проверка

# 1. Права на файл (ожидаем -rw--wx--- или 630)
ls -la /tmp/file.txt

# 2. Содержимое файла (должно быть: df -h + скрипт + history)
cat /tmp/file.txt

# 3. Права на скрипт (ожидаем x у владельца)
ls -la myfirstbashscript.sh

# 4. Скрипт работает
./myfirstbashscript.sh

Что закрепляет это задание

  • Права rwx — chmod 630, дать группе w+x, убрать у остальных
  • Первый bash-скрипт — shebang, переменная USER, pwd, chmod +x
  • Перенаправление вывода (>>) — дописать df -h, скрипт и history в один файл