2017-02-08 1 views
0

Можно создать скрипт, который запрещает команду rm в linux?Можно создать скрипт, который запрещает команду rm в linux?

+0

Вы имеете в виду для конкретного пользователя? –

+0

может быть для sudo также –

+2

Запретная команда rm может быть возможна, однако пользователь может запустить ruby-скрипт, который вызывает 'File.unlink()', и другой метод удаления файла. Я думаю, что это [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). с чем вы столкнулись? – ymonad

ответ

1

Вы можете создать свою собственную оболочку, которая имитирует командную строку и отправляет весь обычный ввод в текущую командную строку, за исключением команд rm.

Я бы не удивился, если есть более элегантное решение.

+0

На самом деле нет. Насколько я вижу, это единственный способ - и вы должны быть ОЧЕНЬ ограничительным в том, что вы позволяете пользователю делать в этой оболочке. Например, нет доступа к компилятору. Конечно, нет доступа к другим оболочкам или программам, которые могут неявно выполнять команды. Фактически, это будет оболочка, где вы предлагаете только очень ограниченное количество функций.Вы * можете * разрешить sudo, пока вы убедитесь, что команды, выполняемые через sudo, не нарушают эти ограничения безопасности. – user1934428

1

можно добавить псевдоним в вашем .bashrc

alias rm='rm -i' 

это заставит вас подтвердить каждый раз, когда вы Р.М. файл, если вы не запустите rm -f

и если вы псевдоним, как это:

alias rm='echo "command rm is forbidden"' 

это запретит команду rm

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

$which rm 
-rwxr-xr-x 1 root root 64424 Jan 20 22:46 /bin/rm 
$sudo chomd 744 /bin/rm 

, что заставит пользователя быть суперпользователем для запуска rm команды.

Технически вы не можете отключить корень для удаления файлов в вашей системе, так как корень может сделать что-нибудь, но если пользователь получит привилегию через sudo (который не является реальным пользователем корень но получить привилегию временно) там способы отключить конкретную команду запуска даже Судо через файл конфигурация Суда check this post

+0

, который работал бы даже с sudo? –

+0

Вы хотите запретить пользователю запускать 'rm' даже с помощью' sudo' (который получит привилегию root)? – armnotstrong

+0

@xx проверить обновление – armnotstrong

0

для конкретного пользователя вы можете сделать, как этот

Lshell конфигурируется с помощью файла INI. По умолчанию он содержит белый список разрешенных команд, но его можно легко настроить, чтобы запретить пользователю использовать определенную команду.

Эта конфигурация (по умолчанию конф /etc/lshell.conf) запрещает пользователю Foo с помощью MKDIR:

[foo] 
allowed = 'all' - ['mkdir', 'bash', 'sh', 'csh', 'dash', 'env']