Изменение прав доступа в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

В этом практическом занятии (LabEx) вы научитесь просматривать, устанавливать и изменять права доступа к файлам с помощью команды chmod. Команда chmod позволяет администраторам контролировать, кто может читать, записывать или выполнять определенные файлы, обеспечивая тем самым защиту конфиденциальных данных и доступ к необходимым ресурсам для авторизованных пользователей.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/chown("Ownership Changing") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/UserandGroupManagementGroup -.-> linux/groupadd("Group Adding") subgraph Lab Skills linux/echo -.-> lab-271241{{"Изменение прав доступа в Linux"}} linux/ls -.-> lab-271241{{"Изменение прав доступа в Linux"}} linux/touch -.-> lab-271241{{"Изменение прав доступа в Linux"}} linux/chown -.-> lab-271241{{"Изменение прав доступа в Linux"}} linux/chmod -.-> lab-271241{{"Изменение прав доступа в Linux"}} linux/cd -.-> lab-271241{{"Изменение прав доступа в Linux"}} linux/groupadd -.-> lab-271241{{"Изменение прав доступа в Linux"}} end

Понимание прав доступа к файлам в Linux

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

Сначала перейдите в рабочий каталог, где вы будете выполнять все операции для этого практического занятия (LabEx):

cd ~/project

Создадим пример файла, чтобы рассмотреть его права доступа:

touch sample_file.txt

Чтобы просмотреть права доступа этого файла, используйте команду ls с опцией -l:

ls -l sample_file.txt

Вы должны увидеть вывод, похожий на следующий:

-rw-rw-r-- 1 labex labex 0 Oct 25 12:34 sample_file.txt

Разберём этот вывод:

  1. Первый символ (-) указывает на тип файла. Дефис (-) обозначает обычный файл, а d - каталог.

  2. Следующие девять символов представляют права доступа к файлу в трех группах по три символа:

    • Первые три символа (rw-) показывают права доступа владельца.
    • Следующие три (rw-) показывают права доступа группы.
    • Последние три (r--) показывают права доступа для всех остальных пользователей.
  3. В каждой группе три позиции представляют:

    • r - право на чтение.
    • w - право на запись.
    • x - право на выполнение.
    • - означает, что право не предоставлено.
  4. После прав доступа следуют другие детали, такие как количество ссылок, имя владельца, имя группы, размер файла, дата и время последнего изменения и имя файла.

Права доступа в Linux также могут быть представлены в числовом формате:

  • Чтение (r) = 4
  • Запись (w) = 2
  • Выполнение (x) = 1

Сложив эти значения, вы можете представить любую комбинацию прав доступа одним числом:

  • rwx = 4+2+1 = 7
  • rw- = 4+2+0 = 6
  • r-x = 4+0+1 = 5
  • r-- = 4+0+0 = 4

Это станет важным, когда мы будем использовать команду chmod в числовом режиме на последующих этапах.

Создание файлов с определенными правами доступа

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

Сначала создайте новый файл с именем secure_file.txt:

touch secure_file.txt

Теперь добавим некоторое содержимое в файл:

echo "This file contains secure information." > secure_file.txt

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

ls -l secure_file.txt

Вы должны увидеть вывод, похожий на следующий:

-rw-rw-r-- 1 labex labex 37 Oct 25 12:40 secure_file.txt

Для файла, содержащего конфиденциальную информацию, мы хотим ограничить доступ только для владельца. Мы будем использовать команду chmod в числовом режиме, чтобы установить права доступа в 600, что означает:

  • Владелец: Чтение и запись (6 = 4+2)
  • Группа: Нет прав доступа (0)
  • Другие пользователи: Нет прав доступа (0)

Выполните следующую команду, чтобы изменить права доступа:

chmod 600 secure_file.txt

Теперь снова проверьте права доступа:

ls -l secure_file.txt

Теперь вывод должен показать:

-rw------- 1 labex labex 37 Oct 25 12:40 secure_file.txt

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

Попробуем создать еще один файл, но на этот раз мы зададим права доступа при создании с использованием другого метода.

Сначала создайте новый файл с именем public_file.txt и добавьте в него содержимое:

echo "This file is readable by everyone." > public_file.txt

Теперь сделаем этот файл доступным для чтения всем пользователям, но запись разрешена только владельцу:

chmod 644 public_file.txt

Проверьте права доступа:

ls -l public_file.txt

Вы должны увидеть:

-rw-r--r-- 1 labex labex 33 Oct 25 12:45 public_file.txt

Эта комбинация прав доступа (644) обычно используется для публичных файлов, которые должны быть доступны для чтения всем пользователям, но изменять их может только владелец.

Использование символьного режима с командой chmod

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

В символьном режиме используются буквы и символы для представления пользователей и прав доступа:

  • u - Пользователь (владелец)
  • g - Группа
  • o - Другие (все остальные пользователи)
  • a - Все (эквивалентно ugo)

А также символы прав доступа:

  • r - Чтение
  • w - Запись
  • x - Выполнение

Создадим скрипт для практики:

touch my_script.sh

Добавим простую команду в скрипт:

echo '#!/bin/bash' > my_script.sh
echo 'echo "Hello from the script!"' >> my_script.sh

Проверим текущие права доступа:

ls -l my_script.sh

Вы должны увидеть, что скрипт не является исполняемым:

-rw-rw-r-- 1 labex labex 44 Oct 25 12:50 my_script.sh

Чтобы сделать скрипт исполняемым для владельца, используйте следующую команду:

chmod u+x my_script.sh

Эта команда добавляет (+) право на выполнение (x) для пользователя/владельца (u).

Проверьте права доступа снова:

ls -l my_script.sh

Теперь вы должны увидеть:

-rwxrw-r-- 1 labex labex 44 Oct 25 12:50 my_script.sh

Теперь сделаем скрипт исполняемым для всех пользователей:

chmod a+x my_script.sh

Эта команда добавляет право на выполнение для всех пользователей (владельца, группы и других).

Проверьте права доступа еще раз:

ls -l my_script.sh

Вы должны увидеть:

-rwxrwxr-x 1 labex labex 44 Oct 25 12:50 my_script.sh

Запустим скрипт:

./my_script.sh

Вы должны увидеть:

Hello from the script!

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

chmod go-w my_script.sh

Проверьте права доступа:

ls -l my_script.sh

Вы должны увидеть:

-rwxr-xr-x 1 labex labex 44 Oct 25 12:50 my_script.sh

Вы также можете устанавливать несколько прав доступа сразу. Например, чтобы дать права на чтение и выполнение всем пользователям, но право на запись только владельцу:

chmod u=rwx,go=rx my_script.sh

Эта команда устанавливает (=) определенные права доступа для каждой категории.

Проверьте права доступа еще раз:

ls -l my_script.sh

Результат должен быть таким же, как и раньше:

-rwxr-xr-x 1 labex labex 44 Oct 25 12:50 my_script.sh

Работа с правами доступа групп

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

Сначала создадим новую группу. В реальной жизни эта группа может представлять отдел или проектную команду:

sudo groupadd developers

Теперь создадим файл, который будет доступен для этой группы:

touch shared_config.txt
echo "## Development configuration settings" > shared_config.txt
echo "debug_mode=true" >> shared_config.txt
echo "log_level=verbose" >> shared_config.txt

В настоящее время этот файл принадлежит вашему пользователю и вашей основной группе. Проверим это:

ls -l shared_config.txt

Вы должны увидеть вывод, похожий на следующий:

-rw-rw-r-- 1 labex labex 61 Oct 25 13:00 shared_config.txt

Чтобы изменить групповую принадлежность файла на группу developers, используйте команду chown:

sudo chown labex:developers shared_config.txt

Синтаксис команды: chown пользователь:группа имя_файла. Здесь мы оставляем пользователя labex, но изменяем группу на developers.

Проверьте принадлежность файла теперь:

ls -l shared_config.txt

Вы должны увидеть:

-rw-rw-r-- 1 labex developers 61 Oct 25 13:00 shared_config.txt

Обратите внимание, что группа изменилась на developers, но права доступа остались прежними. Изменим их так, чтобы члены группы могли читать файл, но не могли его изменять, и чтобы другие пользователи не имели доступа к файлу:

chmod 640 shared_config.txt

Это устанавливает следующие права доступа:

  • Владелец: Чтение и запись (6 = 4+2)
  • Группа: Только чтение (4)
  • Другие: Нет прав доступа (0)

Проверьте права доступа снова:

ls -l shared_config.txt

Теперь вы должны увидеть:

-rw-r----- 1 labex developers 61 Oct 25 13:00 shared_config.txt

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

Вы также можете использовать символьный режим, чтобы достичь того же результата:

chmod u=rw,g=r,o= shared_config.txt

Эта команда явно устанавливает:

  • Пользователь/владелец: Чтение и запись
  • Группа: Только чтение
  • Другие: Нет прав доступа

Чтобы добавить пользователя в группу developers, обычно используют следующую команду:

sudo usermod -a -G developers username

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

Резюме

В этом практическом занятии вы изучили основные концепции и методы работы с правами доступа к файлам в Linux. Вот краткий обзор того, что вы достигли:

  1. Вы поняли, как работают модели прав доступа в Linux, в том числе концепции прав на чтение, запись и выполнение для пользователей, групп и других.

  2. Вы создали файлы с определенными правами доступа, изучив использование команды chmod в числовом режиме для установки соответствующих уровней доступа для различных типов файлов.

  3. Вы исследовали символьный режим команды chmod, который предоставляет более интуитивный способ добавления, удаления или установки определенных прав доступа.

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

Эти навыки являются фундаментальными для обеспечения безопасности и контроля доступа в системах Linux. Независимо от того, занимаетесь ли вы управлением конфигураций серверов, разработкой программного обеспечения или просто организовываете свои личные файлы, понимание того, как правильно устанавливать и изменять права доступа к файлам, является важным навыком для любого пользователя Linux.

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