Запускать команды sudo без запуска всего скрипта с помощью sudo (с помощью панели запуска на рабочем столе) [duplicate]

В этом вопросе уже есть ответ: Как запустить команду «sudo» внутри скрипта? 7 ответов

Мой сценарий выглядит примерно так:

#!/bin/bash sudo teamviewer --daemon enable teamviewer sudo teamviewer --daemon disable

Он отлично работает сам по себе, и он запрашивает мой пароль с оконечным окном. Итак, теперь я хочу сделать для нее пусковую установку. У меня это в файле .desktop:

[Desktop Entry] Version=1.0 Encoding=UTF-8 Type=Application Categories=Network; Name=TeamViewer 12 Comment=Remote control and meeting solution. Exec=gksu /path/here/Start.sh Icon=teamviewer

Таким образом, он запрашивает мой пароль с всплывающим окном, а не с терминальным окном, но при этом выполняется весь скрипт с sudo, который является проблема, потому что TeamViewer отказывается начинать с sudo. Как я могу это решить?

1
задан 7 June 2017 в 22:14

3 ответа

Вы можете изменить сценарий на:

#!/bin/bash

teamviewer --daemon enable

sudo -u USERNAME teamviewer

teamviewer --daemon disable

Таким образом, вы можете выполнить teamviewer в качестве пользователя USERNAME, пока все еще запускаете остальных в качестве пользователя sudo, поскольку вы запускаете скрипт с gksu .

Если вам нужен простой способ проверить его, запустите с помощью gksu следующее:

#!/bin/bash

echo "Without 'sudo' -->" ; whoami

echo "With 'sudo -u USERNAME' -->" ; sudo -u USERNAME whoami
3
ответ дан 22 May 2018 в 21:46
  • 1
    Ага. Но вам не нужны 1-й и последний sudo, если скрипт уже запущен через gksu (и он должен быть для того, чтобы пароль запрашивался один раз графически). – terdon♦ 7 June 2017 в 22:09
  • 2
    Это не сработало, не знаю, почему «Ошибка: не удалось создать /root/.local/share/teamviewer12/logfiles" msgstr "mkdir: невозможно создать каталог '/ root': Permission Denied " Ошибка «InitDirs». (2) & Quot; Случайное нажатие вводит до завершения ответа – POPCORNS 7 June 2017 в 22:15
  • 3
    Хорошо, это сработало, когда я заменил свое имя пользователя на root. Спасибо за помощь! – POPCORNS 7 June 2017 в 22:21
  • 4
    @UltimatePOPCORNS Но sudo -u root teamviewer совпадает с sudo teamviewer, который, как вы утверждали, не работает (и для меня это звучит как ужасная проблема безопасности). – Byte Commander 7 June 2017 в 22:25
  • 5
    К сожалению, я не могу заставить его запускаться с моим собственным именем пользователя, поскольку по какой-либо причине он пишет в каталог / root. – POPCORNS 8 June 2017 в 00:36

Вы можете изменить сценарий на:

#!/bin/bash teamviewer --daemon enable sudo -u USERNAME teamviewer teamviewer --daemon disable

Таким образом, вы можете выполнить teamviewer в качестве пользователя USERNAME, пока все еще запускаете остальных в качестве пользователя sudo, поскольку вы запускаете скрипт с gksu .

Если вам нужен простой способ проверить его, запустите с помощью gksu следующее:

#!/bin/bash echo "Without 'sudo' -->" ; whoami echo "With 'sudo -u USERNAME' -->" ; sudo -u USERNAME whoami
3
ответ дан 18 July 2018 в 12:00

Вы можете изменить сценарий на:

#!/bin/bash teamviewer --daemon enable sudo -u USERNAME teamviewer teamviewer --daemon disable

Таким образом, вы можете выполнить teamviewer в качестве пользователя USERNAME, пока все еще запускаете остальных в качестве пользователя sudo, поскольку вы запускаете скрипт с gksu .

Если вам нужен простой способ проверить его, запустите с помощью gksu следующее:

#!/bin/bash echo "Without 'sudo' -->" ; whoami echo "With 'sudo -u USERNAME' -->" ; sudo -u USERNAME whoami
3
ответ дан 24 July 2018 в 19:53

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

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