Использовать псевдоним после выполнения команды sudo su

Используя идею Сержа выше, я отредактировал функцию mungefilename в конфигурационном файле .abcde.conf.

Я начал с конфигурационного файла, предоставленного здесь: В Andew's Corner есть очень полезный учебник

Я отредактировал функцию, чтобы она добавляла первый бит строки, возвращаемой из cd-discid.

mungefilename ()
    {
        CDDISKIDENT=$(cd-discid "$CDROM")

        FIRSTPARTID=$(echo $CDDISKIDENT | cut -d' ' -f1)
  echo "$@" | sed "s/Unknown\ Album/Unknown\ Album$FIRSTPARTID/" | sed -e 's/^\.*//' | tr -d ":><|*/\"'?[:cntrl:]"
}

3
29.05.2015, 17:38
1 ответ

Если вы хотите иметь возможность выполнять псевдонимы другого пользователя как root без необходимости выполнять дополнительную работу (например, копировать определения псевдонимов в файл профиля root, преобразовывать псевдонимы пользователя в сценарии оболочки), тогда вы можете извлечь команду псевдонима и передать ее оболочке.

Пример:

sudo su - otheruser -s /bin/bash -c "alias ll | sed -E \"s/.+='(.+)'/\1/\" | bash"

Или вы можете использовать мою общую функцию «запустить как»:

runas() {
  if [ $# -eq 2 ]; then
    # Check if user exists
    id -u $1 > /dev/null 2>&1
    if [ $? -gt 0 ]; then
      echo "$FUNCNAME: no such user"
      return 1
    fi
    # Check if alias exists
    sudo su - $1 -s /bin/bash -c "alias $2" > /dev/null 2>&1
    if [ $? -eq 0 ]; then
      # Alias is defined; execute $2 as alias
      sudo su - $1 -s /bin/bash -c "alias $2 | sed -E \"s/.+='(.+)'/\1/; s/'\\\'//g\" | bash"
    else
      # Alias is not defined; execute $2 as command
      sudo su - $1 -s /bin/bash -c "$2"
    fi
  else
    echo "Execute a command or alias as another user"
    echo "Usage: $FUNCNAME USER ALIAS"
    return 2
  fi
}
0
27.01.2020, 21:19

Теги

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