Можно выполнить в нем screen
оконечный мультиплексор.
Примечание: После разделения необходимо войти в новый регион и запустить новую сессию через ctrla затем c, прежде чем можно будет использовать ту область.
РЕДАКТИРОВАНИЕ, основное экранное использование:
У Вас есть другая запись в sudoers
файл, обычно расположенный в /etc/sudoers
, который также соответствует Вашему пользователю. NOPASSWD
управляйте должен быть после того для него для имения приоритет.
Сделав это, sudo
будет обычно запрашивать пароль для всех команд кроме /path/to/my/program
, который это будет всегда позволять Вам выполнить, не прося Ваш пароль.
Если существует несколько записей соответствия в /etc/sudoers
, sudo использует последний. Поэтому, если можно выполнить какую-либо команду с подсказкой пароля, и Вы хотите смочь выполнить конкретную команду без подсказки пароля, Вам нужно исключение в последний раз.
myusername ALL = (ALL) ALL
myusername ALL = (root) NOPASSWD: /path/to/my/program
Отметьте использование (root)
, позволить программе быть выполненной как корень, но не как другие пользователи. (Не давайте больше полномочий, чем минимум потребовал, если Вы не продумали последствия.)
Отметьте читателями, которые не запускают Ubuntu или кто изменил значение по умолчанию sudo конфигурация (sudo Ubuntu в порядке по умолчанию): Выполнение сценариев оболочки с поднятыми полномочиями опасно, необходимо запустить с чистой среды (после того как оболочка запустилась, слишком поздно (см., Позволяют setuid на сценариях оболочки), таким образом, Вам нужен sudo для заботы об этом). Удостоверьтесь, что Вы имеете Defaults env_reset
в /etc/sudoers
или что эта опция является значением по умолчанию времени компиляции (sudo sudo -V | grep env
должен включать Reset the environment to a default set of variables
).
john ALL=(ALL) NOPASSWD: all
. Нет никакого смысла в движении через su
.
– Gilles 'SO- stop being evil'
13.07.2014, 17:08
Я думаю, что Ваш синтаксис является неправильным. По крайней мере, я использую следующее, которое работает на меня:
myusername ALL=(ALL) NOPASSWD: /path/to/executable
(ALL)
часть является дополнительной, пропущение ее имеет точно тот же эффект. Наличие (root)
было бы лучше, хотя, но его отсутствие не объясняет проблему.
– Gilles 'SO- stop being evil'
12.05.2011, 14:39
При выполнении сценария, необходимо выполнить его как sudo /path/to/my/script
.
Править: На основе Вашего комментария к другому ответу Вы хотите выполнить это от значка. Необходимо будет создать a .desktop
файл, который выполняет Вашу программу с sudo, точно так же, как на терминале.
Вы могли также рассмотреть использование gtk-sudo
для визуальной подсказки пароля.
Необходимо, вероятно, рассмотреть идею, что Вы не должны выполнять вещи как корень и что, изменяя систему дальше в будущем так, чтобы Вы не должны были базироваться, полномочия вообще были бы лучшим способом пойти.
Это решило проблему для меня (также попробовал некоторые из других ответов, которые, возможно, помогли):
Сценарий, который я называл, был в /usr/bin
, каталог, к которому у меня нет полномочий записи (хотя я могу обычно читать любые файлы там). Сценарий был chmodded +x (исполняемое разрешение), но это все еще не работало. Перемещение этого файла к пути в моем корневом каталоге, вместо /usr/bin
, Мне наконец удалось называть его с sudo, не вводя пароль.
Также что-то я сомневался о (разъясняющийся для будущих читателей): необходимо запустить скрипт как sudo. Ввести sudo
при вызове сценария. Не использовать sudo
для команды в Вашем сценарии, который на самом деле должен базироваться (изменяющаяся подсветка клавиатуры в моем случае). Возможно, это также работает, но Вы не должны, и это походит на лучшее решение не к.
sudo
в сценарии превосходно, если Вы имеете соответствующие права (начаться sudoers
) выполнять рассматриваемую команду без пароля. Это делает вещи немного более безопасными.
– peterph
19.07.2014, 11:21
Полное решение: следующие шаги помогут Вам достигнуть желаемого вывода:
Создайте новый файл сценария (замена create_dir.sh
с Вашим желаемым названием сценария):
vim ~/create_dir.sh
Сценарий будет создан в корневом каталоге пользователя
Добавьте некоторые команды это только a root
или sudo
пользователь может выполниться как создание папки на уровне корневого каталога:
mkdir /abc
Примечание: Не добавлять sudo
к этим командам. Сохраните и выйдите (использование :wq!
)
Присвойтесь выполняют полномочия к нему использование:
sudo chmod u+x create_dir.sh
Внесите изменения так, чтобы этот сценарий не требовал пароля.
Откройтесь sudoers
файл:
sudo visudo -f /etc/sudoers
Добавьте следующую строку в конце:
ahmad ALL=(root) NOPASSWD: /home/ahmad/create_dir.sh
Замена ahmad
с чем Ваше имя пользователя. Также удостоверьтесь, что это - последняя строка. Сохраните и выйдите.
Теперь, когда выполнение команды добавляет sudo
перед ним как:
sudo ./create_dir.sh
Это выполнит команды в файле сценария, не прося пароль.
Выполните легкие шаги, упомянутые здесь http://step4wd.com/2013/09/14/run-root-commands-in-linux-ubuntu-without-password/
sudo
часть sudo chmod u+x create_dir.sh
является ненужным, поскольку у пользователя есть (по-видимому), владение по его домашнему dir. Так как пользователь может записать в create_dir.sh
, Вы эффективно дали свободную корневую оболочку тому пользователю.
– Lekensteyn
19.07.2014, 11:36
Убедитесь, что судо не является псевдонимом. Запустите как это
/usr/bin/sudo /path/to/my/program
Например, псевдоним оболочки как этот:
alias sudo="sudo env PATH=$PATH"
может вызвать такое поведение.
Если у вас есть такой дистрибутив, как Manjaro, вы должны сначала разобраться с файлом, который переопределяет определение / etc / sudoers, вы можете удалить его или работать напрямую с этим файлом, чтобы добавить свои новые конфигурации.
Это файл:
sudo cat /etc/sudoers.d/10-installer
ЕДИНСТВЕННЫЙ способ увидеть его - под привилегиями root, вы не можете перечислить этот каталог без него, этот файл специфичен для Manjaro, вы можете найти эту конфигурацию с другим именем, но в том же каталоге.
В выбранном вами файле вы можете добавить следующие строки, чтобы получить желаемую конфигурацию (и):
Игнорировать аутентификацию для группы
%group ALL=(ALL) NOPASSWD: ALL
или Игнорировать аутентификацию для пользователя
youruser ALL=(ALL) NOPASSWD: ALL
или Игнорировать аутентификацию исполняемый файл для конкретного пользователя
youruser ALL=(ALL) NOPASSWD: /path/to/executable
КРАТКОЕ ПРИМЕЧАНИЕ: вы открываете дверь для использования SUDO без аутентификации, это означает, что вы можете запускать все, изменяя все в вашей системе, использовать его с ответственностью.
В идеале, если вы настраиваете команды, которые можно запускать через sudo
, эти изменения следует вносить в отдельный файл в папке /etc/sudoers.d/
вместо прямого редактирования файла sudoers
. Вы также всегда должны использовать visudo
для редактирования файлов. НИКОГДА не следует предоставлять NOPASSWD
для ВСЕХ
команд.
Пример:
sudo visudo -f /etc/sudoers.d/mynotriskycommand
Вставьте строку, предоставляющую разрешение:
myuser ALL= NOPASSWD: /path/to/your/program
Затем сохраните и выйдите, и visudo
предупредит вас о синтаксических ошибках.
Вы можете запустить sudo -l
, чтобы увидеть разрешения, которые были предоставлены вашему пользователю, если какая-либо из специфичных для пользователя команд NOPASSWD
появляется ДО любой %groupyouarein ALL= (ALL) ALL
в выводе вам будет предложено ввести пароль.
Если вы обнаружите, что создаете много таких файлов sudoers.d, возможно, вы захотите создать их с именами для каждого пользователя, чтобы их было легче визуализировать. Имейте в виду, что порядок ИМЕН ФАЙЛОВ и ПРАВИЛ в файле очень важен, выигрывает ПОСЛЕДНИЙ загруженный, независимо от того, является ли он БОЛЕЕ или МЕНЬШЕ разрешающим, чем предыдущие записи.
Вы можете управлять порядком имен файлов, используя префикс 00-99 или aa/bb/cc, но также имейте в виду, что если у вас есть ЛЮБЫЕ файлы без числового префикса, они будут загружаться после пронумерованного файлы, переопределяя настройки. Это связано с тем, что в зависимости от ваших языковых настроек «лексическая сортировка» оболочка сначала использует числа сортировки, а затем может чередовать прописные и строчные буквы при сортировке в «возрастающем» порядке.
Попробуйте запустить printf '%s\n' {{0..99},{A-Z},{a-z}} | sort
и printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort
, чтобы узнать, печатает ли ваш текущий язык AaBbCc
etc или ABC
, затем abc
, чтобы определить, какой префикс «последней» буквы лучше всего использовать было бы.
Если вы хотите избежать необходимости использовать sudo или изменять файл конфигурации sudoers, вы можете использовать:
sudo chown root:root path/to/command/COMMAND_NAME
sudo chmod 4775 path/to/command/COMMAND_NAME
Это заставит команду выполняться от имени пользователя root без необходимости использования sudo.
Другой возможностью может быть установка, настройка, а затем использование команды super для запуска вашего скрипта как
super /path/to/your/script
Если вы хотите запустить какой-нибудь двоичный исполняемый файл (, например. который вы скомпилировали в ELF двоичный файл из некоторого исходного кода C)-который не скрипт -как root, вы можете подумать о том, чтобы сделать его setuid(и на самом деле /bin/login
, /usr/bin/sudo
, /bin/su
и super
используют эту технику ). Однако будьте очень осторожны, вы можете открыть огромную дыру в безопасности .
Конкретно, ваша программа должна быть закодирована параноидально (, поэтому проверьте все аргументы, среду и внешние условия, прежде чем «действовать», предполагая потенциально враждебного пользователя ),тогда вы можете использовать seteuid (2)и друзей (см. также setreuid (2))осторожно (см. также возможности (7)& учетные данные (7)& execve (2)...)
Вы будете использоватьchmod u+s
(read chmod (1))при установке такого двоичного файла.
Но будьте очень осторожны .
Прочтите много информации о setuid , в том числеAdvanced Linux Programming , прежде чем программировать подобные вещи.
Заметьте, что сценарий или любая переделанная-вещь не может быть setuid. Но вы можете закодировать (в C )небольшой двоичный файл setuid -, обернув его.
Имейте в виду, что в Linux код приложения взаимодействует с ядром Linux с помощью системных вызовов (2). Большинство из них могут выйти из строя, см. errno (3). Многие приложения для Linux (, например. GNU bash , GNU make , GNU gdb , GNOME)с открытым исходным кодом :вам разрешено загружать, затем изучать и вносить свой вклад их исходный код.
Чтобы разрешить любому пользователю выполнять программу как sudo без запроса пароля, вы можете добавить следующую строку
%sudo ALL=(root) NOPASSWD: /path/to/your/program
в/etc/sudoers
Обратите внимание, что %sudo делает это.
В качестве альтернативы вы можете использовать пакет python pudo .
Установка:
user$ sudo -H pip3 install pudo # you can install using pip2 also
Ниже приведен фрагмент кода для использования в автоматизации Python для запуска команд с привилегиями root:
user$ python3 # or python2
>>> import pudo
>>> (ret, out) = pudo.run(('ls', '/root')) # or pudo.run('ls /root')
>>> print(ret)
>>> 0
>>> print(out)
>>> b'Desktop\nDownloads\nPictures\nMusic\n'
Ниже приведен пример cmd для запуска команд с привилегиями root:
user$ pudo ls /root
Desktop Downloads Pictures Music
/path/to/my/program
был сценарий Python? – sadmicrowave 03.03.2014, 22:29.bashrc
)? Или даже сценарий оболочки внутри/usr/local/sbin
? Испытывать. – Nikos Alexandris 05.08.2016, 19:11