Как выполнять команды в качестве пользователя, не являющегося пользователем root, в сценарии, запущенном с правами root?

Это фиксировало мои проблемы с воспроизведением цвета:

Ctrl + P для настроек и rarr; Видео & rarr; Выход Измените выходное значение на видеовыход X11 (XCB)
2
задан 22 November 2017 в 23:44

3 ответа

Если вы запускаете свой скрипт с правами root, но вам нужно запускать определенные команды в качестве определенного пользователя без полномочий root, вы можете использовать sudo с опцией -u либо для запуска одной команды, например,

sudo -u USERNAME whoami # outputs USERNAME's user name

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

sudo -u USERNAME bash -c 'whoami;echo $USER' # outputs USERNAME's user name twice

Строка в вашем скрипте не работает на самом деле, вы просто запускаете только bash как пользователь meteor , а поскольку bash ничего не может сделать, он просто выходит, а исходная корневая оболочка запускает остальную часть скрипта. То, что вы действительно хотите сделать (я полагаю):

…
echo "Trying sudo -u meteor bash"
sudo -u meteor bash -c '\
  echo "$ whoami" && whoami && echo "^^^^^^ meteor expected"
  curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh |\
  bash
'
echo "ls -al /home/meteor/.nvm # should be populated"
…

Другим способом достижения этого является документ:

…
echo "Trying sudo -u meteor bash"
sudo -u meteor bash <<EOF
  echo "$ whoami" && whoami && echo "^^^^^^ meteor expected"
  curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh |\
  bash
EOF
echo "ls -al /home/meteor/.nvm # should be populated"
…
1
ответ дан 22 May 2018 в 16:03

Если вы запускаете свой скрипт с правами root, но вам нужно запускать определенные команды в качестве определенного пользователя без полномочий root, вы можете использовать sudo с опцией -u либо для запуска одной команды, например,

sudo -u USERNAME whoami # outputs USERNAME's user name

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

sudo -u USERNAME bash -c 'whoami;echo $USER' # outputs USERNAME's user name twice

Строка в вашем скрипте не работает на самом деле, вы просто запускаете только bash как пользователь meteor , а поскольку bash ничего не может сделать, он просто выходит, а исходная корневая оболочка запускает остальную часть скрипта. То, что вы действительно хотите сделать (я полагаю):

… echo "Trying sudo -u meteor bash" sudo -u meteor bash -c '\ echo "$ whoami" && whoami && echo "^^^^^^ meteor expected" curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh |\ bash ' echo "ls -al /home/meteor/.nvm # should be populated" …

Другим способом достижения этого является документ:

… echo "Trying sudo -u meteor bash" sudo -u meteor bash <<EOF echo "$ whoami" && whoami && echo "^^^^^^ meteor expected" curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh |\ bash EOF echo "ls -al /home/meteor/.nvm # should be populated" …
1
ответ дан 18 July 2018 в 02:56

Если вы запускаете свой скрипт с правами root, но вам нужно запускать определенные команды в качестве определенного пользователя без полномочий root, вы можете использовать sudo с опцией -u либо для запуска одной команды, например,

sudo -u USERNAME whoami # outputs USERNAME's user name

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

sudo -u USERNAME bash -c 'whoami;echo $USER' # outputs USERNAME's user name twice

Строка в вашем скрипте не работает на самом деле, вы просто запускаете только bash как пользователь meteor , а поскольку bash ничего не может сделать, он просто выходит, а исходная корневая оболочка запускает остальную часть скрипта. То, что вы действительно хотите сделать (я полагаю):

… echo "Trying sudo -u meteor bash" sudo -u meteor bash -c '\ echo "$ whoami" && whoami && echo "^^^^^^ meteor expected" curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh |\ bash ' echo "ls -al /home/meteor/.nvm # should be populated" …

Другим способом достижения этого является документ:

… echo "Trying sudo -u meteor bash" sudo -u meteor bash <<EOF echo "$ whoami" && whoami && echo "^^^^^^ meteor expected" curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh |\ bash EOF echo "ls -al /home/meteor/.nvm # should be populated" …
1
ответ дан 24 July 2018 в 17:41

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

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