Действительно ли возможно ограничить определенные команды в том, чтобы быть выполненным в каталоге?

Кажется, что у Вас есть тот интерфейс, настроенный с помощью DHCP. Если так, Вы хотите уничтожить существующего клиента DHCP и перезапустить его. Для большого количества дистрибутивов Вы сделали бы это:

dhcpcd -k eth0
dhcpcd -d eth0

но не каждый дистрибутив используется dhcpcd. Я знаю некоторое использование dhclient, и не делает использования Debian pump?

Кроме того, "eth0" не может составить корректное имя интерфейса: сделать ifconfig -a видеть то, что это VM имеет.

4
31.05.2013, 02:14
2 ответа

Трудно препятствовать тому, чтобы двоичный файл был выполнен, но для типичных ситуаций существует легкий метод защиты:

  1. Вы определяете функцию оболочки, которая перезаписывает имя. Это не будет, очевидно, работать в другом (также другой пользователь) оболочка.
  2. Вы вынимаете двоичный файл из $PATH и заменяете его сценарием обертки. Это более безопасно, но очевидно вызовет проблемы с обновлениями программного обеспечения (сценарий перезаписывается).

Функция оболочки могла быть похожей на это:

git () {
  local cwd="$(pwd -P)"
  if ! [ "/path/to/src" = "$cwd" -o "/path/to/projects" = "$cwd" ]; then
    echo "The current working directory is: '${cwd}'"
    echo "git must not be run from here; from src and projects only."
    echo "Aborting."
  else
    command git "$@"
  fi
}
7
27.01.2020, 20:48
  • 1
    Это - приемлемое решение для меня - я собираюсь ожидать немного и видеть, открываются ли какие-либо другие опции. В противном случае я приму.Спасибо! –  sdasdadas 30.05.2013, 23:26

Необычный: при использовании zsh, Вы могли использовать регион, выделяющийся для установки флага полужирным красный git слово, если используется, в то время как $PWD не то, где Вы хотите. Как:

self-insert() {
  zle .$WIDGET
  if [[ $BUFFER = git(| *) && $PWD != */src && $PWD != */projects ]]; then
    region_highlight=("0 3 fg=red,bold,standout")
  else
    region_highlight=()
  fi
}
zle -N self-insert

Тем путем это не стоит на пути, но сообщать о потенциальной проблеме.

Отметить git где угодно на строке:

self-insert() {
  zle .$WIDGET
  if [[ $BUFFER =~ '\<git\>' && $PWD != */src && $PWD != */projects ]]; then
    region_highlight=("$((MBEGIN-1)) $MEND fg=red,bold,standout")
  else
    region_highlight=()
  fi
}
zle -N self-insert

Пример:

example

3
27.01.2020, 20:48

Теги

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