Аргументы передачи команде, выполненной другим пользователем

Я протестировал китайскую Википедию и с 32.0.1687.2 и с 33.0.1711.3, и ни у одного из них не было проблемы при отображении заголовка. Btw, хром действительно имеет журнал. Попробуйте стартовый хром от эмулятора терминала как такового:

chromium --enable-logging --v=1 https://zh.wikipedia.org/

Затем проверьте, ~/.config/chromium/chrome_debug.log.

2
20.09.2014, 00:28
3 ответа

Если вы хотите, чтобы весь скрипт запускался от имени другого пользователя, мой обычный способ сделать это - добавить что-то похожее на следующее в самом верху скрипта:

target_user="foo"
if [ "$(whoami)" != "$target_user" ]; then
  exec sudo -u "$target_user" -- "$0" "$@"
fi

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

Если вы хотите запустить только небольшой фрагмент кода, вы можете в качестве альтернативы сделать что-то вроде:

target_user="foo"
sudo -u "$target_user" sh -s "$@" <<'EOF'
  echo "$@"
EOF

Это запустит sh , передаст ему аргументы текущего сценария, а затем выполнит предоставленный сценарий. через heredoc.

7
27.01.2020, 21:50

Помещая EOF в кавычки, вы фактически цитируете «здесь документ» ( echo $ 1 ), так что $ 1 интерпретируется оболочкой user2 . Но у этой оболочки нет позиционных параметров. Я не могу протестировать их прямо сейчас, но вот несколько подходов, которые могут сработать:

  • Не цитировать EOF :

     sudo su user2 << EOF
    эхо $ 1
    EOF
     
  • Передавать значения через среду:

     export my_val = "$ 1"
    sudo su user2 << 'EOF'
    эхо "$ my_val"
    EOF
     
2
27.01.2020, 21:50

Это может сработать :

#!/bin/bash
su - user2 -c 'echo "$0" "$@"' -- "$@"

Используйте простые кавычки ' для передачи аргумента команды в su, чтобы вам не пришлось избегать двойных кавычек ".

Ссылки :

Эвакуация аргументов функции bash для использования su -c - Переполнение стека

bash - Передача аргументов в оболочку, предоставленную su - Unix & Linux Stack Exchange

2
27.01.2020, 21:50

Теги

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