ОП.05Права доступа, владельцы и umaskзанятие 6Материалы

Часть 4 из 7

Владелец и группа: chown и chgrp

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

  1. 4.1 Кто может сменить владельца

4.1 Кто может сменить владельца

Команда chown (change owner) меняет владельца файла, а с записью владелец:группа — владельца и группу сразу. Команда chgrp (change group) меняет только группу. Обе принимают ключ -R: изменить каталог и всё его содержимое.

Сменить владельца может только root, поэтому chown выполняют через sudo. Если бы любой мог передать свой файл другому, можно было бы подбросить файл от чужого имени. Квоты места на диске тоже считаются по владельцу, и передача файлов позволила бы обойти ограничение.

Группу файла владелец может сменить сам, командой chgrp, но только на группу, в которой состоит сам. Пользователь ubuntu входит в группу adm и может отдать файл ей, а в группе devteam его нет, и такая смена запрещена.

ДействиеКто можетПример
сменить владельцатолько rootsudo chown anna report.txt
сменить владельца и группутолько rootsudo chown anna:devteam db.env
сменить группувладелец — на свою группу; root — на любуюchgrp adm backup.sh
сменить для каталога целикомто же с ключом -Rsudo chown -R ubuntu:ubuntu ~/perm-lab

Пример из практики. Разработчик скопировал файлы сайта через sudo cp, и все они стали принадлежать root. Веб-сервер работает от имени www-data и не может записать загрузки пользователей. Исправляют одной командой: sudo chown -R www-data:www-data /var/www/site/uploads.

В терминалеСмена владельца и группы
  1. chown anna report.txt# без sudo
    что делает

    Что делает команда. Пытается сменить владельца report.txt без sudo; обычному пользователю это запрещено.

    По частям:

    chown
    сменить владельца (и группу) файла
    anna
    новый владелец
    report.txt
    какой файл или каталог (путь относительно текущего каталога)
  2. sudo chown anna report.txt# новый владелец
    что делает

    Что делает команда. С правами root делает anna владельцем report.txt.

    По частям:

    sudo
    выполнить команду от имени другого пользователя, по умолчанию root
    chown
    сменить владельца (и группу) файла
    anna
    новый владелец
    report.txt
    какой файл или каталог (путь относительно текущего каталога)
  3. sudo chown anna:devteam db.env# владелец и группа
    что делает

    Что делает команда. С правами root делает anna владельцем db.env, а devteam — его группой.

    По частям:

    sudo
    выполнить команду от имени другого пользователя, по умолчанию root
    chown
    сменить владельца (и группу) файла
    anna:devteam
    новый владелец anna и группа devteam
    db.env
    какой файл или каталог (путь относительно текущего каталога)
  4. ls -l report.txt db.env
    что делает

    Что делает команда. Выводит строки двух файлов с новыми владельцами.

    По частям:

    ls
    вывести содержимое каталога
    -l
    подробный список: права, владелец, группа, размер
    report.txt
    что показать (путь относительно текущего каталога)
    db.env
    что показать (путь относительно текущего каталога)
  5. chgrp devteam backup.sh# ubuntu не в devteam
    что делает

    Что делает команда. Пытается отдать backup.sh группе devteam, в которой ubuntu не состоит.

    По частям:

    chgrp
    сменить группу файла
    devteam
    новая группа
    backup.sh
    какой файл или каталог (путь относительно текущего каталога)
  6. chgrp adm backup.sh# ubuntu в группе adm
    что делает

    Что делает команда. Отдаёт backup.sh группе adm, в которой ubuntu состоит.

    По частям:

    chgrp
    сменить группу файла
    adm
    новая группа
    backup.sh
    какой файл или каталог (путь относительно текущего каталога)
  7. ls -l backup.sh
    что делает

    Что делает команда. Выводит строку backup.sh с новой группой.

    По частям:

    ls
    вывести содержимое каталога
    -l
    подробный список: права, владелец, группа, размер
    backup.sh
    что показать (путь относительно текущего каталога)
  8. sudo chown -R ubuntu:ubuntu ~/perm-lab# вернуть всё ubuntu
    что делает

    Что делает команда. Возвращает владельца и группу ubuntu каталогу ~/perm-lab и всему его содержимому.

    По частям:

    sudo
    выполнить команду от имени другого пользователя, по умолчанию root
    chown
    сменить владельца (и группу) файла
    -R
    сменить владельца каталога и всего содержимого
    ubuntu:ubuntu
    владелец ubuntu и группа ubuntu
    ~/perm-lab
    какой файл или каталог (путь от домашнего каталога)
  9. ls -l
    что делает

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

    По частям:

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

без sudo владелец не меняется; группу ubuntu может сменить только на свою; chown -R возвращает весь каталог.

Снимок 4.1Ubuntu 24.04
  1. 1обычный пользователь не меняет владельца
  2. 2после sudo chown: владелец anna, у db.env и группа devteam
  3. 3ubuntu не состоит в devteam
  4. 4группа adm: ubuntu в ней состоит
  5. 5chown -R вернул владельца всему каталогу
chown без sudo запрещён, chgrp разрешён только на свою группу.Весь снимок ↗

chown без sudo запрещён, chgrp разрешён только на свою группу.

Что показывает снимок. Без sudo chown запрещён; root сменил владельца и группу; chgrp разрешён только на группу adm, в которой ubuntu состоит; chown -R вернул всё ubuntu.

Где это пригодится. После копирования файлов через sudo их владельцем становится root; chown -R возвращает файлы пользователю или службе, например www-data.

Итоги части 4

  • chown владелец файл, chown владелец:группа файл — сменить владельца, только через sudo.
  • chgrp группа файл — владелец файла может выбрать только группу, в которой состоит.
  • Ключ -R меняет владельца или группу каталога со всем содержимым.
  • Владельца меняет только root: так нельзя подбросить файл от чужого имени и обойти квоты.

В отчётСнимок с chown и chgrp и объяснение двух отказов Operation not permitted.

Открыть в отдельной вкладке ↗