Модуль ядра setcap.ko.

Модуль присутствует в версиях ядра kernel-tinyware-*.txz. Модуль линкуется в ядро статически, так как для динамической линковки нужен экспорт некоторых /security/ символов ядра (что небезопасно).

Модуль может отключть заданные системные возможности (man capabilities), или включать возможности для всех пользователей. Модуль настраивается исключительно суперпользователем root динамически (во время работы системы) через интерфейс sysctl или файлы /proc/sys/setcap. Например команда # sysctl setcap.disabled_caps=0,1,2,3 или аналог # echo "0,1,2,3" > /proc/sys/setcap/disabled_caps - отключит системные возможности CAP_CHOWN(0), CAP_DAC_OVERRIDE(1), CAP_DAC_READ_SEARCH(2), CAP_FOWNER(3). При попытке их использования возникает ошибка -EPERM для любого пользователя включая root. Если использовать замок # sysctl setcap.lock=1 или аналог # echo "1" > /proc/sys/setcap/lock, то изменить поведение системы будет невозможно до следующей перезагрузки.

В примере, с точки зрения файловых операций пользователь root стал равен рядовому пользователю за исключением возможности CAP_FSETID.
Включаются для всех возможности командой # sysctl setcap.enabled_caps=x,y,z. В этом случае прни попытке их использования возвращается 0 (Access granted) для любого пользователя системы.
Номера системных возможностей можно посмотреть в файле /usr/include/linux/capability.h.
По умолчанию при старте системы отключаются возможности 0,1,2,3 и 21(CAP_SYS_ADMIN). Команда tinyware-beforeadmin сбрасывает эти настройки, а команда tinyware-afteradmin возвращает обратно. Задаются отключаемые возможности в текстовом tinyware-afteradmin.

Требования к файловым операциям смены владельца и разрешений.

Теперь скажем немного о методах овладения и отдачи файлов пользователем root или рядовым владельцем поддерева файлов при включенной опции ядра CONFIG_FS_ADVANCED_CHOWN и отключенными возможностями 0-3. Овладевание файлами и смена разрешений должны происходить сверху вниз в порядке:

./file1
./subdir1

./subdir1/file2

./subdir1/subdir2

./subdir1/subdir2/file3

Отдача файлов и смена разрешений должна происходить снизу вверх в порядке:

./subdir1/subdir2/file3
./subdir1/subdir2
./subdir1/file2
./subdir1
./file1
.

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