2016-09-10 2 views
1

Права на Linux не могут остановить Lua от выхода за пределы своего собственного каталога и в другое.Lua позволяет удалять файлы в CS2D

Кроме того, если объявить эти значения перед:

os.execute = nil 
io.popen = nil 

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

+0

Вы действительно не можете использовать для этого разрешения Linux? Что делать, если вы создаете скрипт как другой пользователь с ограниченными разрешениями? (Я знаю, что apache делает что-то по этой линии, чтобы предотвратить запуск скрипта вне папки «www») – hugomg

ответ

2

Вы можете создать нового пользователя linux с разрешениями только для нужного каталога и запустить его.

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

+0

да, но вы можете переключаться между каталогами с помощью LUA afaik, даже если Linux не позволяет изменять каталог – Marcell

0

Вы всегда можете создать свои функции обертки вокруг оригинального os.execute, прежде чем устанавливать его в нуль, чтобы у вас было больше контроля за предпринятыми действиями. например:

local osExecute = os.execute 
os.execute = nil 

os.createDir = function(dir) 
    osExecute("mkdir "..dir) 
end 

os.saveScript(script) 
    osExecute("command to save script goes here") 
end 

Конечно, этот пример подвержен атакам, Вы должны были бы проверить параметры, чтобы убедиться, что на самом деле это имя папки, а не folder;rm -rf /, например.

То же самое касается popen, вы всегда можете создать свой набор команд для выполнения.

Тогда вы можете создать пользователя с ограниченными правами для дополнительной безопасности.

Смежные вопросы