Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
50 / 16 / 11
Регистрация: 27.03.2013
Сообщений: 788
1

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

01.06.2017, 14:36. Просмотров 1222. Ответов 5
Метки нет (Все метки)


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

Пример

Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
#!/usr/bin/env bash
 
suu(){
sudo -s
echo -e "---------- Первый -----------\n"
exit
}
 suu
 echo -e "---------------Второй---------\n"


Обычный ввод в консоли позволяет делать все по частям

Bash
1
sudo -s
Оболочка получает права суперпользователя, выполняем какие-то команды...
Для перехода в обычный профиль с правами пользователя, выполняем команду

Bash
1
exit
Выполнение

Bash
1
sudo какая-то_команда
не подходит.

Подскажите как можно видоизменить скрипт, чтобы возможно было во время работы одного сценария переключаться из профиля пользователя с правами root, в профиль обычного пользователя, и выполнять нужные команды уже под обычным пользователем.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2017, 14:36
Ответы с готовыми решениями:

Root права на определенный список программ для обычного пользователя
Возможно ли в ОС Windows 10 произвести следующие манипуляции с системой UAC? Например, есть...

Запуск программы от имени обычного пользователя
здравствуйте...Помогите запустить программу от имени обычного пользователя,а не от администратора.

Сделать, чтобы базовые слои layer и layer1, были в одном root а layer2 в другом root
Доброго времени суток. Вот код <html> <head> <title> A Basic GeoExt Page </title> <script...

Как совместить два графика на одном?
Как совместить два графика в один? В моем случае kg j (r j) должен идти от 0 до 1.633, а kgg t (r...

5
Модератор
Эксперт NIX
2780 / 2030 / 678
Регистрация: 02.03.2015
Сообщений: 6,512
01.06.2017, 20:14 2
Код
sudo --help
sudo — выполнение команд от имени другого пользователя
…
  -u, --user=user             выполнить команду (или редактировать файл) от имени
                              или ID указанного пользователя
0
50 / 16 / 11
Регистрация: 27.03.2013
Сообщений: 788
02.06.2017, 10:59  [ТС] 3
Кликните здесь для просмотра всего текста
PureBasic
1
2
3
4
5
6
7
8
9
sudo -u root echo -e "[share]" >> /etc/samba/smb.conf
sudo -u root echo -e "\tcomment = Ubuntu File Server Share\r
    \tpath = /home/alex/samba/share\r
    \tbrowsable = yes\r
    \tguest ok = yes\r
    \tread only = no\r
    \tcreate mask = 0755
    \tcreate mask = 0000
    " >> /etc/samba/smb.conf


Выходит ошибка

/etc/samba/smb.conf: Отказано в доступе
И добавить эти строки в /etc/samba/smb.conf можно только тогда, когда выполню команду

Bash
1
sudo -s
И это только в командной строке, а как сделать в сценарии, чтобы root выполнил нужные команды, а далее по сценарию все остальные файлы создаются и редактируются под правами обычного пользователя ???

А вот эта команда отрабатывается в сценарии без вопросов
Bash
1
 sudo -u root apt-get update
0
Модератор
Эксперт NIX
2780 / 2030 / 678
Регистрация: 02.03.2015
Сообщений: 6,512
02.06.2017, 14:13 4
Лучший ответ Сообщение было отмечено Marinero как решение

Решение

Потому что у Вас переадресация и она не подпадает под sudo
Цитата Сообщение от Marinero Посмотреть сообщение
sudo — выполнение команд от имени другого пользователя
Замените переадресацию на команду и всё заработает
Bash
1
echo -e "[share]" | sudo tee -a /etc/samba/smb.conf > /dev/null
Bash
1
2
3
4
5
6
7
8
9
sudo sed -i '$a\
\tcomment = Ubuntu File Server Share\r\
\tpath = /home/alex/samba/share\r\
\tbrowsable = yes\r\
\tguest ok = yes\r\
\tread only = no\r\
\tcreate mask = 0755\
\tcreate mask = 0000\
'  /etc/samba/smb.conf
1
50 / 16 / 11
Регистрация: 27.03.2013
Сообщений: 788
05.06.2017, 14:38  [ТС] 5
Вопросы по поводу вашей команды:

1. Что это за переменная - $a - для чего она ?
2. Если я запускаю этот скрипт еще раз, то он просто дописывает все в конец.
Как переделать скрипт так, чтобы он не дописывал , уже существующий текст ?
То есть написать условие и в нем произвести проверку существующего текста?
Или же есть более простой способ ?
0
50 / 16 / 11
Регистрация: 27.03.2013
Сообщений: 788
07.06.2017, 17:48  [ТС] 6
Что касается 1-го вопроса, ответ (как это я понимаю) такой:

Цитата Сообщение от masli Посмотреть сообщение
Что это за переменная - $a - для чего она ?

С помощью sed можно вставлять данные в текстовый поток, используя команды i и a:
• Команда i добавляет новую строку перед заданной.
• Команда a добавляет новую строку после заданной.
Bash
1
$ echo "Another test" | sed 'a\First test '
Разобрался

Это означает - вставить фрагмент текта после последней строки, в данный файл.
Здесь,
$ - символ, используемый в регулярных выражениях и означающий - конец строки.
a - команда, используемая с утилитой sed, и означающая, что нужно вставить указанный текст после указанной опорной строки.

Добавлено через 6 часов 9 минут
Тема решена
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2017, 17:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как совместить 2 графика на одном чертеже
как в labview показать на waveform graph 2 графика вместе для возможности сравнения?

Как совместить в одном запросе комбобокс и радиобатн
Всем доброго времени суток! Помогите новичку! Решила заняться саморазвитием, в универе изучала С++,...

Как совместить два рисунка на одном figure?
как вывести на одном рисунке ЛАЧХ и окружности????? ЛАЧХ K = 35; w1 = logspace(0,3,100000); ...

Как совместить две агрегатные функции в одном запросе
Доброго времени суток! Есть следующий запрос: select fio, count(inq_id) as quantity, sys_name...

Как совместить два эффекта (zoomIn и zoomOut) в одном
Есть вот такой вот код - animated infinite zoomIn, позволяющий элементу зациклено всплывать (с...

Как совместить функциональность EXE и DLL файлов в одном выполняемом.
Мне необходимо в одном выполняемом файле (EXE) совместить два способа загрузки: как DLL и как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.