Почему это в обход пароля SUDO?

У меня есть скрипт bash, который я использую для автоматизации проверки SVN. Содержимое файла было:

#!/bin/bash
cd /var/www-cake
sudo svn checkout file:///usr/local/svn/bash_repo/repo/

Затем, когда я дважды щелкнул по файлу, меня спросили, что делать, я бы нажал кнопку « Run In Terminal », а затем терминал будет всплывать и спрашивать у меня пароль SUDO. Я хотел бы ввести его, скрипт будет выполнен, и терминал закроется.

Я хотел дать какое-то указание на то, что сценарий успешно запущен, поэтому я отредактировал мой файл так:

#!/bin/bash
cd /var/www-cake
sudo svn checkout file:///usr/local/svn/bash_repo/repo/
echo "Head revision has been pushed to live server"

Я ожидал, что терминал теперь останется открытым, и сообщит мне сообщение позже. К моему удивлению, он теперь открывается и сразу закрывается. Скрипт действительно выполняется, и мне больше не нужно вводить пароль SUDO.

Это правильно? Я не понимаю, почему это происходит, похоже на проблему безопасности.

6
задан 29 April 2015 в 20:45

3 ответа

sudo запоминает ваш пароль на некоторое время (по умолчанию 15 минут). Вы можете заставить sudo забыть пароль, запустив sudo -k

0
ответ дан 29 April 2015 в 20:45

Чтобы оставить приглашение открытым после выполнения сценария, вы можете попробовать две вещи:

  • Добавить команду read в качестве последней строки.
  • Чтобы создать модуль запуска, который выполняет команду в терминале и держит окно открытым, создайте профиль для gnome-терминал, скажем Hold, который делает именно это (посмотрите параметры профиля) и используйте следующее.

    gnome-terminal --window-with-profile="Hold" -e "/path/to/script"
    
0
ответ дан 29 April 2015 в 20:45

Что происходит, когда вы запускаете скрипт прямо из терминала? Обычно, если пароль sudo был введен один раз, его запомнили на 15 минут. Если вы запустите графически, подсказка терминала закроется после полного выполнения. У меня нет репозитория SVN, чтобы играть с ним - однако я провел аналогичный тест, который соберет информацию от пользователя и коснется файла с этим именем.

#!/usr/bin/env bash

echo -n "Hello, enter the file name: "
read NAME
touch $NAME
echo "All done"

При выполнении с терминала:

alt text

Затем дважды щелкните:

alt text

[ 119] alt text

Приглашение закрывается, когда завершается, но выполняет то, что запрашивается.

0
ответ дан 29 April 2015 в 20:45

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

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