как заставить оболочку запрашивать подтверждение для команды rm -rf (даже sudo)?

О да, вы можете, вкладка и прокрутка вниз:

1
задан 25 April 2016 в 18:56

2 ответа

Вы можете создать сценарий bash, который запрашивает подтверждение, а затем запускает запрошенную программу. Создайте файл с именем ask, содержащий:

#!/bin/bash 
echo "Are you sure to run $1 command?"
read RES
if [ "$RES" = "Y" ] || [ "$RES" = "y" ] ; then
    echo "Running the command..."
    $@
else
    echo "Command aborted"
fi

Скопируйте скрипт в / usr / bin / и установите его как исполняемый файл (или добавьте путь скрипта к переменной PATH):

sudo mv path_to_ask_script/ask /usr/bin/ask
cd /usr/bin/
sudo chmod 777 ask

Затем вы должны создать псевдоним в файле ~/.bashrc:

alias dd='ask dd'

Теперь, набрав dd, скрипт ask должен быть выполнен, попросить подтверждения и в конце концов вызовите команду dd.

Чтобы перейти к другой команде, просто добавьте псевдоним типа:

alias command_name='ask command_name' в качестве примера: alias rm='ask rm'

Для команды rm вы можете просто создать псевдоним как: alias rm='rm -i'

Скрипт пробовал и полностью работал с 16.04 с помощью gnome-terminal

1
ответ дан 23 May 2018 в 11:47
  • 1
    Я думаю, что ваш скрипт ask не должен использовать $1, но $@ причина: ask /bin/cp -Rv /path/to/source /path/to/destination для $1 вернется только /bin/cp, а $@ вернет /bin/cp -Rv /path/to/source /path/to/destination – Dawid 25 April 2016 в 20:27
  • 2
    Вы правы, моя способность к bash немного ржаветь – velix 25 April 2016 в 20:37

Вы можете сделать следующее, если вы действительно хотите использовать эти команды только как sudo:

Перейдите к /bin (например, большинство команд здесь), поэтому:

cd /bin
# example how to make dd to posibly only for root/sudo (744)
sudo chmod go-x dd
# or even go further restrict the access to the file fully to root (700)
sudo chmod go-rx dd
# to reverse that setting you did do (755)
sudo chmod go+rx dd 

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

Отказ от ответственности: не нужно, я имею в виду, НЕ изменяю разрешения на sudo или su, вы можете заблокировать вас необходимого материала и будет трудно фиксировать время.

0
ответ дан 23 May 2018 в 11:47

Другие вопросы по тегам:

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