Как я позволяю пользователю запись 'Y' в папке 'A' только при выполнении сценария 'X'?

Как я позволяю пользователю Y записать в папке единственное при выполнении сценария X?

1
задан 18.02.2010, 00:18

3 ответа

Я полагаю, что это потребует программы X, имеющей setuid полномочия и принадлежащей пользователю UA, который имеет полномочия записи к папке A. Затем, когда X вызывается, это работает как UA, каким пользователем это было вызвано.

Большинство оболочек (возможно, все) не позволит сценариям иметь setuid полномочия, они просто проигнорируют тот бит полномочий, если X не будет двоичный файл. конечно, x мог быть двоичной оберткой, которая просто выполняет некоторый отдельный сценарий X.sh.

Вы не были должны setuid X как корень, если Вы не имеете к. Вы могли заставить папку A быть перезаписываемой пользователем UA с меньшим количеством полномочий.

С другой стороны, Вы могли заставить папку A быть перезаписываемой специализированной группой, и присвоить X той группе и использовать setgid на X вместо setuid.

4
ответ дан 12.12.2019, 08:17

С этой проблемой обычно сталкиваются игры - nethack, например, имеет файлы "костей" и hiscore таблицу, которая должна быть перезаписываема игрой, но не любым из отдельных пользователей неадминистратора. Это сделано при наличии исполняемого файла setgid.

http://nethack.wikia.com/wiki/Setgid имеет краткое изложение в этой системе. Преимущество состоит в том, что использование nethack только получило бы Вас игровые полномочия группы, скорее пользовательские полномочия пользователя root.

2
ответ дан 12.12.2019, 08:17

Как насчет того, чтобы иметь запись сценария x к/usr/bin, но как пользователь z, который является учетной записью пользователя для этой определенной цели?

Предоставленный, это означает использовать липкий бит, который имеет его собственные проблемы безопасности, но можно заблокировать вниз пользователя z (никакие логины, очень ограниченные полномочия вне/usr/bin, и т.д.)

Я не являюсь лучшим на безопасности Linux, но это была единственная вещь, которую я мог придумать незамедлительно.

Большое разделение полномочия на исполнение приложений - они делают все, что они могут как непривилегированный пользователь и затем одна или две операции, которые требуют, чтобы корень был на самом деле сделан отдельным процессом. (Поочередно: запустите как корень, сделайте одну-две вещи, которые требуют корня и отбрасывают полномочия.)

Ваша другая опция, первое, что пришло на ум, является sudo.

0
ответ дан 12.12.2019, 08:17

Теги

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