Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Оглавление



Информация
titleДанная статья применима к:
  • ОС ОН Орёл 2.12
  • ОС СН Смоленск 1.6
  • ОС СН Ленинград 8.1
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-16 исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12


Исходные данные

Данная статья подразумевает, что домашние каталоги пользователей размещены в файловой системе, поддерживающие расширенные атрибуты файловых объектов и списки контроля доступа (ACL), и что эта файловая система примонтирована с включенным использованием ACL. Файловая система Ext4, используемая в Astra Linux, по умолчанию соответствует этим требованиям. Проверить, поддерживает ли ваша файловая система ACL можно командой (вместо /dev/sda1 указать нужное имя дискового раздела):

Command
sudo tune2fs -l /dev/sda1 | grep "Default mount options:"

При этом в строке вывода должен присутствовать параметр acl:

Информация
Default mount options: user_xattr acl

Исходные данные

В Astra Linux ялыки для рабочего стола каждого пользователя по умолчанию располагаются в подкаталогах каталога Desktops. Этот каталог и его подкаталоги автоматически создаются при первом входе пользователя в графическую сессию. Сам каталог Desktops по умолчанию располагается в домашнем каталоге пользователя и по умолчанию содержит 4 подкаталога (Desktop1, Desktop2, Desktop3, Desktop4), соответствующих четырём виртуальным столам пользователя, и содержащих ярлыки для каждого из этих рабочих столов.
Расположение каталога с ярлыками для рабочих столов указывается в файле домашнего каталога пользователя .config/user-dirs.dirs (параметр XDG_DESKTOP_DIR), и может быть при необходимости самостоятельно изменено пользователем. Типичное содержание файла .config/user-dirs.dirs:

Раскрыть
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Загрузки"
XDG_TEMPLATES_DIR="$HOME/Шаблоны"
XDG_PUBLICSHARE_DIR="$HOME/Общедоступные"
XDG_DOCUMENTS_DIR="$HOME/Документы"
XDG_MUSIC_DIR="$HOME/Музыка"
XDG_PICTURES_DIR="$HOME/Изображения"
XDG_VIDEOS_DIR="$HOME/Видео"

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


Запрет изменения рабочего стола

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

  1. Запретить пользователю изменять содержимое каталога Desktops и его подкаталогов, оставив при этом пользователю право читать содержимое этих каталогов;
  2. Запретить пользователю изменять расположение каталогов рабочего стола, т.е. запретить изменять файл .config/user-dirs.dirs, оставив ему при этом право читать содержимое файла;
  3. Запретить пользователю отменять установленные запреты, т.е. запретить пользователю изменять права доступа к вышеуказанным файловым объектам;
  4. Сохранить ограничения по чтению для прочих пользователей;
Для
  1. Запретить удалять и переименовывать защищённые объекты.

Подробные шаги для выполнения указанных модификаций (в примерах используется имя пользователя username):

  1. Запретить пользователю изменять права доступа, для чего перевести эти файловые объекты под контроль привилегированного пользователя:

    Command
    sudo chown root:root ~username
/.config
  1. /.config/user-dirs.dirs
    sudo chown -R root:root ~username/Desktops


  2. Запретить всем пользователям читать и изменять файловые объекты, оставив разрешения на чтение и изменение только новому владельцу root и группе root:

    Command
    sudo chmod
600
  1. 660 ~username/.config/
.config/
  1. user-dirs.dirs
    sudo chmod -R
go
  1. o-rwx,
U
  1. ug+rwX ~username/Desktops



  2. Индивидуально разрешить пользователю читать файловые объекты. Для индивидуального изменения прав доступа используются ACL:

    Command
    sudo setfacl  -m u:username:r ~username/.config/user-dirs.dirs
    sudo setfacl  -R -m u:username:rX ~username/.config/user-dirs.dirs


  3. Дополнительно можно задать значения ACL "по умолчанию", которые будут автоматически применяться к создаваемым объектам:

    Command
    sudo setfacl -R -m d:u:${USER}:r ~username/.config/user-dirs.dirs
    sudo setfacl -R -m d:u:${USER}:rX ~username/.config/user-dirs.dirs


  4. Запретить переименование и удаление файловых объектов:

    Command
    sudo chattr +i ~username/.config/user-dirs.dirs
    sudo chattr +i ~username/.config/user-dirs.dirs



Информация
Модификации файловых объектов, на принадлежащих текщему пользователю, должны выполняться от имени суперпользователя.


Пример сценария

Приведённый ниже примерный сценарий может быть сохранён в файл и вызван с именем пользователя в качестве аргумента:

Command

#!/bin/bash
USER=$1
HOME="/home/$USER"

if [ -z "$USER" ] ; then
    echo "Укажите имя пользователя"
    exit 1
fi
sudo chown -R root:root           "${HOME}/.config/user-dirs.dirs" "${HOME}/Desktops"
sudo chmod -R o-rwx,gu+rwX        "${HOME}/.config/user-dirs.dirs" "${HOME}/Desktops"
sudo setfacl -R -m u:${USER}:rX   "${HOME}/.config/user-dirs.dirs" "${HOME}/Desktops"
sudo setfacl -R -m d:u:${USER}:rX "${HOME}/.config/user-dirs.dirs" "${HOME}/Desktops"
sudo chattr +i "$HOME/.config/user-dirs.dirs" "$HOME/Desktops"