Содержание

Skip to end of metadata
Go to start of metadata


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

sudo tune2fs -l /dev/sda1 | grep "Default mount options:"
При этом в строке вывода должен присутствовать параметр acl:

Default mount options: user_xattr acl

Данная статья применима к:

  • ОС ОН Орёл 2.12
  • ОС СН Смоленск 1.6
  • ОС СН Ленинград 8.1

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

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

 Click here to expand...
# 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. Сохранить ограничения по чтению для прочих пользователей;

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

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

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

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

    sudo chmod 660 ~username/.config/.config/user-dirs.dirs
    sudo chmod -R o-rwx,ug+rwX ~username/Desktops

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

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

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

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

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

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

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

#!/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"

  • No labels

1 Comment