Как я отбрасываю полномочия пользователя root в сценариях оболочки?

Ext4 монтируют опции

Метаданные, только журналирующие (Это - значение по умолчанию),

data=ordered

Полностью отключить журналирование ext4 (не рекомендуемый)

norecovery
noload

Изменить время фиксации

commit=

commit имеет значение по умолчанию и минимальное значение 5. Увеличивание значения фиксации может увеличить производительность диска, но не может уменьшить объем журналирования.

Применение монтирует опции

В /etc/fstab, добавьте их к 4-му столбцу, отдельному запятыми

#                                   
/dev/sde1    /home5      auto    auto,noatime,noload,data=ordered,commit=10  0      0

Поскольку полные EXT4 монтируют опцию: https://www.kernel.org/doc/Documentation/filesystems/ext4.txt

Windows NTFS имеет журналирование. Это чаще всего относится как Журнал NTFS.

13
23.05.2017, 15:39
5 ответов
[1188143] Я использую инструмент [1188574] runit[1188575] chpst[1188576] [1188577] для таких задач. Например, из верхнего скрипта вызовите свой непривилегированный скрипт:

7
27.01.2020, 19:53
[1189176]скрипта, который сбрасывает привилегии и запускает другой скрипт (но здесь я просто сделал это, чтобы запустить его сам):

Пример:

pdfxcview /A "nolock=yes=OpenParameters" document.pdf

3
27.01.2020, 19:53

А как насчет:

sudo -Eu <user> <command>

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

sudo -u <user> printenv
sudo -Eu <user> printenv
1
29.04.2021, 00:40

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

  • В daemontools Дэниела Дж. Бернштейна есть setuidgid:
    setuidgid user /home/user/unprivileged. sh
  • util-linux (установлен по умолчанию на новых Debians) имеет setpriv:
    setpriv --reuid=user --regid=group --init-groups --inh-caps=-all /home/user/unprivileged. sh
  • Adam Sampson's freedt has setuidgid:
    setuidgid user /home/user/unprivileged. sh
  • Bruce Guenter's daemontools-encore имеет setuidgid:
    setuidgid user /home/user/unprivileged. sh
  • Gerrit Pape's runit имеет chpst:
    chpst -u user /home/user/unprivileged. sh
  • У преступника Уэйна Маршалла есть runuid:
    runuid user /home/user/unprivileged. sh
  • У s6 Лорана Берко есть s6-setuidgid:
    s6-setuidgid user /home/user/unprivileged. sh
  • у моего nosh есть setuidgid:
    setuidgid user /home/user/unprivileged.sh

Они не смешивают разные задачи добавления привилегий, и никогда не попадают в интерактивный режим.

Ваши добавочные проблемы - это не более чем забывание о том, что в вашем sbin, а также bin в PATH, кстати.

Дальнейшее чтение

20
20.08.2021, 12:51

В системах на базе Linux -вы можетеsetpriv(изutil-linux):

setpriv --reuid=1000 --regid=1000 --init-groups COMMAND [ARGUMENTS...]  # Like su/runuser/sudo
setpriv --reuid=1000 --regid=1000 --clear-groups COMMAND [ARGUMENTS...]  # Like daemontools setuid(8)

Используйте runuser, если требуется сеанс PAM (также изutil-linux):

runuser -u USER [--] COMMAND [ARGUMENTS...]

Из справочной страницыsu:

su is mostly designed for unprivileged users, the recommended solution for privileged users (e.g. scripts executed by root) is to use non-set-user-ID command runuser(1) that does not require authentication and provide separate PAM configuration. If the PAM session is not required at all then the recommend solution is to use command setpriv(1).

6
20.08.2021, 12:51

Теги

Похожие вопросы