Настройка персонализированных правил
Мы познакомились с общим синтаксисом файла, а теперь попробуем создать новые правила.
Создание псевдонимов
Файл можно организовать более эффективно, группируя элементы с помощью разнообразных псевдонимов.
Например, мы можем создать три разных группы пользователей с некоторыми общими участниками:
/etc/sudoers
Имена групп должны начинаться с заглавной буквы. Затем мы можем дать участникам группы разрешение на обновление базы данных , создав следующее правило:
/etc/sudoers
Если мы не укажем пользователя или группу для запуска, команда по умолчанию использует пользователя root.
Мы можем дать членам группы разрешение на выключение и перезагрузку системы, создав псевдоним команды и используя его в правиле для :
/etc/sudoers
Мы создадим псевдоним команды с именем , который будет содержать команды выключения и перезагрузки системы. Затем мы дадим членам группы разрешение на выполнение этих команд.
Также мы можем создать псевдонимы запуска от имени, которые могут заменять часть правила, где указывается, от имени какого пользователя следует выполнить команду:
/etc/sudoers
Это позволит любому участнику группы выполнять команды от имени пользователя или пользователя .
Необходимо помнить, что в случае конфликта правил более поздние правила имеют приоритет перед более ранними.
Фиксация правил
Есть ряд способов, которые позволяют более точно контролировать реакцию на вызов.
Команда , связанная с пакетом , относительно безобидна при ее выполнении в системе с одним пользователем. Если мы хотим разрешить пользователям выполнять ее с привилегиями root без ввода пароля, мы можем создать правило следующего вида:
/etc/sudoers
— это свойство, означающее, что пароль не запрашивается. У него есть сопутствующее свойство , которое используется по умолчанию и требует ввода пароля. Данное свойство актуальной для остальной части строки, если его действие не переопределяется дублирующим тегом в этой же строке.
Например, мы можем использовать следующую строку:
/etc/sudoers
Также полезно свойство , которое можно использовать для предотвращения опасного поведения некоторых программ.
Например, некоторые программы, такие как , могут активировать другие команды, вводя их через свой интерфейс:
При этом все команды пользователя выполняются с теми же разрешениями, что и команда , что может быть довольно опасно.
Чтобы ограничить такое поведение, мы можем использовать следующую строку:
/etc/sudoers
Системные команды Linux
Эти команды используются для просмотра информации и управления, связанной с системой Linux.
1. uname
Команда Uname используется в Linux для поиска информации об операционных системах. В Uname существует много опций, которые могут указывать имя ядра, версию ядра, тип процессора и имя хоста.
Следующая команда uname с опцией отображает всю информацию об операционной системе.
2. uptime
Информация о том, как долго работает система Linux, отображается с помощью команды uptime. Информация о времени безотказной работы системы собирается из файла ‘/proc/uptime‘. Эта команда также отобразит среднюю нагрузку на систему.
Из следующей команды мы можем понять, что система работает в течение последних 36 минут.
Полное руководство команды Uptime
3. hostname
Вы можете отобразить имя хоста вашей машины, введя в своем терминале. С помощью опции вы можете просмотреть ip-адрес компьютера. А с помощью параметра вы можете просмотреть доменное имя.
4. last
Команда last в Linux используется для определения того, кто последним вошел в систему на вашем сервере. Эта команда отображает список всех пользователей, вошедших (и вышедших) из «/var/log/wtmp » с момента создания файла.
Вам просто нужно ввести «last» в своем терминале.
5. date
В Linux команда date используется для проверки текущей даты и времени системы. Эта команда позволяет задать пользовательские форматы для дат.
Рекомендуем статью Команда Date (Дата) в Linux с примерами использования
Например, используя «date +%D«, вы можете просмотреть дату в формате «ММ/ДД/ГГ«.
6. cal
По умолчанию команда cal отображает календарь текущего месяца. С помощью опции вы можете просмотреть календарь на весь год.
9. reboot
Команда reboot используется для перезагрузки системы Linux. Вы должны запустить эту команду из терминала с правами суперпользователя sudo.
10. shutdown
Команда shutdown используется для выключения или перезагрузки системы Linux. Эта команда позволяет планировать завершение работы и уведомлять пользователей сообщениями о выключении и перезагрузке.
По умолчанию компьютер (сервер) выключится через 1 минуту. Вы можете отменить расписание, выполнив команду:
Немедленное отключение тоже возможно, для этого используется опция «now»
Команда runuser
Существует альтернатива команде su с именем runuser. Разница между этими двумя командами в том, что runuser может использовать только root. Команда runuser не запрашивает пароль, и у нее другая конфигурация PAM (подключаемые модули аутентификации Linux).
Как вы, возможно, знаете, запускать браузеры с правами root запрещено, что является плохой практикой; ваша система должна препятствовать этому.
Если вы являетесь пользователем root и хотите запустить небезопасное приложение с правами root, вы можете использовать как команду su, за которой следует флаг -c, как объяснялось ранее, так и команду runuser, показанную в приведенном ниже примере, за которой следует флаг -u, пользователя, от имени которого вы хотите запустить команду, и команду, которую вы хотите выполнить.
Примеры использования su
Смена пользователя на суперпользователя root, без смены окружения оболочки:
Обратите внимание, что здесь вам нужно набрать пароль не своего пользователя, а именно того, от имени которого вы хотите авторизоваться. В данном случае, пользователя root
Если вы получаете ошибку сбой при проверке подлинности su linux, то это может означать, что либо вы ввели пароль неверно, либо пароль для этого пользователя не задан. Такое можно встретить у пользователя root в Ubuntu и Linux Mint. Информацию о том как установить пароль вы можете найти в этой статье. Смена пользователя на суперпользователя root со сменой параметров окружения оболочки:
Смена пользователя на пользователя user01:
Смена пользователя на пользователя user01 со сменой окружения:
Запуск оболочки zsh для пользователя user01:
Запуск оболочки bash из оболочки zsh для пользователя user01:
Запуск файлового менеджера Midnight Commander для пользователя user01:
Просмотр содержимого директории boot суперпользователем root:
Чтобы выйти из оболочки, открытой командой su можно использовать встроенную команду exit или сочетание клавиш Ctrl+d.
su Command Syntax
To use the command, enter it into a command-line as follows:
If a username is specified, defaults to the superuser (root). Simply find the user you need and add it to the command syntax.
su Command Options
To display a list of commands, enter the following:
Here are some common options to use with the command:
- – Replace username with the actual username you want to log in with. This can be any user, not just root.
- or – Runs a specific command as the specified user.
- or or – Runs a login script to change to a specific username. You’ll need to enter a password for that user.
- or – Allows you to specify a different shell environment to run in.
- or – Show the help file for the command.
- or – Preserve the shell environment (HOME, SHELL, USER, LOGNAME).
4. dmidecode
Утилита dmidecode собирает подробную информацию об оборудовании системы на основе данных DMI в BIOS. Отображаемая информация включает производителя, версию процессора, доступные расширения, максимальную и минимальную скорость таймера, количество ядер, конфигурацию кэша L1/L2/L3 и т д. Здесь информация о процессоре Linux намного легче читается чем у предыдущей утилиты.
5. hardinfo
Hardinfo это графическая утилита которая позволяет получить информацию о процессоре и другом оборудовании в системе в графическом интерфейсе. Утилиту надо установить:
Запуск
6. i7z
Утилита i7z — монитор параметров процессора в реальном времени для процессоров Intel Core i3, i5 и i7. Он отображает информацию по каждому ядру в реальном времени, такую как состояние TurboBoost, частота ядер, настройки управления питанием, температура и т д. У i7z есть консольный интерфейс основанный на Ncurses, а также графический на базе библиотек Qt.
7. inxi
Команда inxi — это bash скрипт, написанный для сбора информации о системе в удобном и понятном для человека виде. Он показывает модель процессора, размер кэша, скорость таймера и поддерживаемые дополнительные возможности процессора. Для установки используйте:
Для запуска:
8. likwid-topology
Likwid (Like I Knew What I’m Doing) — это набор инструментов командной строки для измерения, настройки и отображения параметров оборудования компьютера. Информация о процессоре может быть выведена с помощью утилиты likwid-topology Она показывает модель и семейство процессора, ядра, потоки, кэш, NUMA. Установка:
9. lscpu
Команда lscpu отображает содержимое /proc/cpuinfo в более удобном для пользователя виде. Например, архитектуру процессора, количество активных ядер, потоков, сокетов.
10. lshw
Команда lshw — универсальный инструмент для сбора данных об оборудовании. В отличии от других инструментов для lshw необходимы права суперпользователя так как утилита читает информацию из DMI в BIOS. Можно узнать общее количество ядер, и количество активных ядер. Но нет информации об кэше L1/L2/L3.
11. lstopo
Утилита lstopo входит в пакет hwloc и визуализирует топологию системы. Сюда входит процессор, память, устройства ввода/вывода. Эта команда полезна для идентификации архитектуры процессора и топологии NUMA. Установка:
12. numactl
Первоначально разрабатываемая для настройки планировки NUMA и политик управления памятью в Linux numactl также позволяет посмотреть топологию NUMA:
13. x86info
x86info — инструмент командной строки для просмотра информации о процессорах архитектуры x86. Предоставляемая информация включает модель, количество ядер/потоков, скорость таймера, конфигурацию кэша, поддерживаемые флаги и т д. Установка в Ubuntu:
14. nproc
Утилита просто выводит количество доступных вычислительных потоков. Если процессор не поддерживает технологию HyperThreading, то будет выведено количество ядер:
15. hwinfo
Утилита hwinfo позволяет выводить информацию о различном оборудовании, в том числе и о процессоре. Программа отображает модель процессора, текущую частоту, поддерживаемые расширения. Наверное, это самый простой способ узнать частоту процессора Linux:
×
команда su / sudo —
Есть некоторые команды, которым требуются привилегированные права для запуска в системе Linux. Таким образом, вы запускаете их как системный администратор, чего не могут делать обычные пользователи.
Команда su изменяет оболочку, которая будет использоваться в качестве суперпользователя, и пока вы не используете команду exit, вы можете оставаться суперпользователем
sudo . Если вам просто нужно что-то запустить от имени суперпользователя, вы можете использовать команду sudo . Это позволит вам выполнить команду с повышенными правами, и после ее выполнения вы вернетесь к своим обычным правам и разрешениям.
Пример — команда shutdown безопасно отключает компьютер.
- sudo shutdown 2 — выключение компьютера через 2 минуты
- sudo shutdown –r 2 — выключается и перезагружается через 2 минуты
- Использование ctrl C или shutdown –c помогает остановить процесс выключения.
Повышение пользовательских прав командой sudo
Существует более современный способ повышения пользовательских прав с помощью команды sudo (substitute user and do — подменить пользователя и выполнить).
Sudo является программой системного администрирования, дающей возможность выполнять команды от имени root. Если для выполнения команды su все пользователи должны были знать пароль root, что само по себе небезопасно, то sudo его не требует. В sudo нужен пароль самого пользователя.
Sudo работает следующим образом, перед командой которую необходимо выполнить, нужно добавить sudo, например:
От имени root: yum install -y wget При помощи sudo: sudo yum install -y wget
Sudo определяет пользователя сверяясь с настройками находящимися в файле /etc/sudoers, если пользователь внесен в sudoers, то команда выполняется. Если выполнить команду sudo от имени пользователя не внесенного в sudoers, то можно увидеть такую картину:
$ sudo yum install -y wget password for test: test is not in the sudoers file. This incident will be reported.
При попытке выполнить команду sudo, от имени пользователя test, выдается ответ что такого пользователя в файле sudoers не обнаружено. О событии создается запись в лог файле, также высылается электронное письмо root-пользователю с уведомлением о случившемся.
From root@test2.localdomain Sat Feb 11 20:19:12 2017 Return-Path: <root@test2.localdomain> X-Original-To: root Delivered-To: root@test2.localdomain Received: by test2.localdomain (Postfix, from userid 0) id CD2AF8051BC; Sat, 11 Feb 2017 20:19:12 +0300 (MSK) To: root@test2.localdomain From: test@test2.localdomain Auto-Submitted: auto-generated Subject: *** SECURITY information for test2 *** Message-Id: <20170211171912.CD2AF8051BC@test2.localdomain> Date: Sat, 11 Feb 2017 20:19:12 +0300 (MSK) test2 : Feb 11 20:19:12 : test : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/test ; USER=root ; COMMAND=/bin/yum install wget
Для того чтобы пользователь мог выполнять sudo, его надо внести в файл sudoers. Сделать это можно двумя способами.
Первый способ — внесение имени пользователя непосредственно в сам файл /etc/sudoers. Для изменения файла sudoers, требуется обладать правами root.
nano /etc/sudoers Находим строку: root ALL=(ALL) ALL Добавляем под нее имя пользователя, которому будет разрешен доступ к sudo: root ALL=(ALL) ALL test ALL=(ALL) ALL Сохраняем и выходим.
После того как пользователь будет внесен в список допущенных к использованию, он может выполнять команду sudo.
Вторым способом разрешить пользователям выполнять команду sudo, является внесение пользователя в группу wheel, точно так же как в случае с командой su.
Вносим пользователя в группу wheel: usermod -a -G wheel techlist_1 Проверяем: id techlist_1 uid=1001(techlist_1) gid=1004(techlist_1) группы=1004(techlist_1),10(wheel) Перезагружаем систему: reboot
После перезагрузки системы, пользователь внесенный в группу wheel, сможет выполнять sudo.
Для того чтобы полностью сменить окружение пользователя на окружение root, используется команда sudo -i, что равносильно использованию команды su —
$ sudo -i password for test: #
Возвращение в свое пользовательское окружение, происходит при помощи команды exit.
Каждый раз при использовании sudo, требуется ввод пароля пользователя. При вводе пароля, происходит обновление временной метки, что позволяет выполнять sudo без ввода пароля на протяжении некоторого времени. По умолчанию ввод пароля не требуется на протяжении пяти минут, после чего пароль опять будет затребован. Временной промежуток можно изменить при помощи опции timeout в файле sudoers. Существует возможность отключения ввода пароля.
Отключить ввод пароля для пользователей принадлежащих к группе wheel:
Открываем для внесения изменений: nano /etc/sudoers Находим строку: # %wheel ALL=(ALL) NOPASSWD: ALL Раскомментировать строку: %wheel ALL=(ALL) NOPASSWD: ALL Сохраняем изменения и выходим.
Отключить ввод пароля для пользователей добавленных вручную:
Открываем для внесения изменений: nano /etc/sudoers Находим строку с нужным пользователем: test ALL=(ALL) ALL Изменяем ее: test ALL=(ALL) NOPASSWD: ALL Сохраняем изменения и выходим.
Sudo гибкая в настройке и позволяет настроить множество различных параметров. Грамотный администратор знающий sudo может творить настоящие чудеса с пользователями.
Для просмотра руководства по настройке sudo, выполняется команда:
Посмотреть руководство sudo: man sudoers Выйти из руководства: q Посмотреть список дополнительных опций команды: sudo -h
Опции sudo
Здесь мы поговорим о различных опциях для утилиты . Как показано в примере выше, синтаксис подразумевает, что опции будут идти сразу после самой команды и перед названием целевой программы.
- или – — sudo по умолчанию запрашивает ввод пароля пользователя в терминале. Если задана эта опция, утилита будет использовать графическую утилиту для запроса пароля. К слову, в терминале не показывается слово и там пароль вводится так, что на экране ничего нет.
- или — опция позволит запустить выбранную команду в фоновом режиме;
- или — опция закроет для конкретной программы все файловые дескрипторы за исключением стандартного ввода/вывода.
- или — опция передает переменные окружения текущего пользователя непосредственно выполняемой программе.
- Помимо этого, она принимает на вход список переменных, которые нужно разрешить для программы.
- или — опция открывает файл на редактирование вместо запуска той или иной команды. Система копирует файл во временный каталог, проводит необходимые коррекции, после чего записывает обратно с теми самыми правами. При этом для редактирования применяется редактор, установленный по умолчанию в системе. Чаще всего это nano, однако это различается в разных системах.
- — опция запускает команду с указанной группой вместо группы пользователя, от имени которого и запускается программа.
- — опция позволяет выполнить команду от имени другого хоста.
- или — опция устанавливает домашний каталог вместо установленного по умолчанию.
- или — опция дает возможность авторизации в консоли от имени другого пользователя. При этом система выбирает его домашний каталог, а также загружает все его переменные окружения.
- — эта опция отключает временное сохранение пароля в . Суть в том, что по умолчанию, сохраняет пароль, что позволяет через некоторое время после ввода команды выполнить снова ее или уже другую команду без ввода пароля. Фактически, это опция для параноиков, которые боятся, чтобы кто-то скрытно не ввел команду, потому и отключают эту возможность.
- или — эта опция выводит перечень доступных команд для удаленных пользователей.
- или — это так называемый «не интерактивный режим». Если в нем будет необходимо ввести пароль, то программа сообщит об ошибке.
- или — опция позволит использовать собственное приглашение для ввода пароля.
- или — довольно специфическая опция, позволяющая выполнить программу с контекстом , которому назначена указанная роль. — узкоспециализированная опция, которая позволяет использовать стандартный поток ошибок для запроса пароля.
- или — опция запускает указанный командный интерпретатор.
- или — опция дает возможность просмотра привилегий для пользователя и запуска программ от имени этого пользователя. Можно использовать в паре с .
- или — опция устанавливает время выполнения команды. Если заданный диапазон истечет до окончания выполнения, то процесс будет автоматически прерван.
- — опция указывает, от имени какого пользователя необходимо запустить программу или команду.
- — показывает версию утилиты.
- — эта опция говорит системе о том, что опции, идущие следом, обрабатывать не нужно.
Разница между командой Sudo и командой SU в Linux
http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>style=»clear:both;»>
SU: Эффект эквивалентен войти в пользователь корневого пользователя после выполнения команд, вы должны ввести пароль пользователя root
Интеллектуальная рекомендация
App App App Applet RSA шифрование использует jsencrypt Перспективы: хочу использовать открытый ключ RSA, чтобы перейти на задний план, чтобы обеспечить безопасность данных, хотя приложение может быть …
1. Установите cuda9.0 и cudnn7.0 Установить cuda9.0 очень просто, непосредственно загрузите cuda_9.0.176_windows.exe и cudnn-9.0-windows7-x64-v7.zip, здесь загрузка cudnn должна быть зарегистрирована….
12. Когда заранее неизвестно, сколько пользовательских вводов должно использоваться, обычно используется контур, однако, в дополнение к установке переменной управления контуром, условие цикла также мо…
Общее время: 1000 мс Ограничение памяти: 65536 КБ Описание В последнее время все больше и больше людей привлекаются к работе на фондовом рынке, и Ай Фу также немного продвинулся. Помня, что «фон…
Оригинальная ссылка:https://leetcode.com/problems/merge-two-sorted-lists/ Название Введение Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together …
Вам также может понравиться
1. Описание заголовка: введите несколько наборов соответствующих строк, одна из которых является английской, а другая — иностранной. Начните с ввода словаря, затем запросите словарь в соответствии с и…
Жена позвонила своему мужу-программисту: купи десять булочек после работы и купи одну, если увидит одну, продающую арбуз. Той ночью ее муж принес булочку в дом. Жена сердито сказала: почему вы покупае…
основы numpy 1. Массив 1) Используйте объекты класса np.ndarray для представления n-мерных массивов Фактические данные: элементы в массиве Метаданные: описывают элементы в массиве отделяет фактические…
Ошибка «Эта категория является ключевым стандартом, а кодирование не является критическим значением» — распространенная проблема в разработке для iOS, которая приводит к сбою приложения пр…
Спецификация языковой компиляции GO Объединение пустого среза должен использовать следующий формат Вывод печати Аббревиатура должна быть последовательной, например, URL -адрес капитализации или нижний…
chown –
Эта команда используется для изменения владельца файла / папки или даже нескольких файлов / папок для указанного пользователя / группы.
chown owner_name имя_файла
Предположим, что если вы пользователь с именем user1 и хотите сменить владельца на root , используйте « sudo » перед синтаксисом.
$ sudo chown root script.sh
13. cat —
Команда cat (сокращение от «concatenate») является одной из наиболее часто используемых команд в Linux. Команда cat позволяет создавать один или несколько файлов, просматривать содержимое файла, объединяет файлы и перенаправляет вывод в терминал или файлы.
Вывод покажет все содержимое файла (ов).
14. echo –
Эта команда используется для отображения текста или строки для стандартного вывода или файла.
$ echo «Это статья об основных командах Linux»
Опция echo –e действует как интерпретация escape-символов, которые имеют обратную косую черту.
голоса
Рейтинг статьи
№ 10: pmap – использование процессами оперативной памяти
Команда pmap выдает данные о распределении памяти между процессами. Использование этой команды позволит найти причину узких мест, связанных с использованием памяти.
# pmap -d PID
Для того, чтобы получить информацию об использовании памяти процессом с pid # 47394, введите:
# pmap -d 47394
Пример вывода данных:
47394: /usr/bin/php-cgi Address Kbytes Mode Offset Device Mapping 0000000000400000 2584 r-x-- 0000000000000000 008:00002 php-cgi 0000000000886000 140 rw--- 0000000000286000 008:00002 php-cgi 00000000008a9000 52 rw--- 00000000008a9000 000:00000 0000000000aa8000 76 rw--- 00000000002a8000 008:00002 php-cgi 000000000f678000 1980 rw--- 000000000f678000 000:00000 000000314a600000 112 r-x-- 0000000000000000 008:00002 ld-2.5.so 000000314a81b000 4 r---- 000000000001b000 008:00002 ld-2.5.so 000000314a81c000 4 rw--- 000000000001c000 008:00002 ld-2.5.so 000000314aa00000 1328 r-x-- 0000000000000000 008:00002 libc-2.5.so 000000314ab4c000 2048 ----- 000000000014c000 008:00002 libc-2.5.so ..... ...... .. 00002af8d48fd000 4 rw--- 0000000000006000 008:00002 xsl.so 00002af8d490c000 40 r-x-- 0000000000000000 008:00002 libnss_files-2.5.so 00002af8d4916000 2044 ----- 000000000000a000 008:00002 libnss_files-2.5.so 00002af8d4b15000 4 r---- 0000000000009000 008:00002 libnss_files-2.5.so 00002af8d4b16000 4 rw--- 000000000000a000 008:00002 libnss_files-2.5.so 00002af8d4b17000 768000 rw-s- 0000000000000000 000:00009 zero (deleted) 00007fffc95fe000 84 rw--- 00007ffffffea000 000:00000 ffffffffff600000 8192 ----- 0000000000000000 000:00000 mapped: 933712K writeable/private: 4304K shared: 768000K
Последняя строка очень важна:
- mapped: 933712K общее количество памяти, отведенного под файлы
- writeable/private: 4304K общее количество приватного адресного пространства
- shared: 768000K общее количество адресного пространства, которое данный процесс использует совместно другими процессами.
Ссылки:
Примеры использования su
Смена пользователя на суперпользователя root, без смены окружения оболочки:
Обратите внимание, что здесь вам нужно набрать пароль не своего пользователя, а именно того, от имени которого вы хотите авторизоваться. В данном случае, пользователя root
Если вы получаете ошибку сбой при проверке подлинности su linux, то это может означать, что либо вы ввели пароль неверно, либо пароль для этого пользователя не задан. Такое можно встретить у пользователя root в Ubuntu и Linux Mint. Информацию о том как установить пароль вы можете найти в этой статье. Смена пользователя на суперпользователя root со сменой параметров окружения оболочки:
Смена пользователя на пользователя user01:
Смена пользователя на пользователя user01 со сменой окружения:
Запуск оболочки zsh для пользователя user01:
su -s /usr/bin/zsh user01
Запуск оболочки bash из оболочки zsh для пользователя user01:
su -s /usr/bin/bash user01
Запуск файлового менеджера Midnight Commander для пользователя user01:
Просмотр содержимого директории boot суперпользователем root:
Чтобы выйти из оболочки, открытой командой su можно использовать встроенную команду exit или сочетание клавиш Ctrl+d.
Запустить команду от другого пользователя в Unix/Linux
Иногда, просто необходимо запустить команду от другого пользователя. И существует несколько способов, как это можно сделать. Я расскажу о них в своей статья «Запустить команду от другого пользователя в Unix/Linux».
Запустить команду от другого пользователя в Unix/Linux — способ 1
И так, можно использовать утилиту SUDO. Рассмотрим пример:
$ sudo -H -u Your_another_user -c 'ping linux-notes.org'
Пояснения:
- -H YOUR_HOME: Задает HOME (Переменное окружение для хома конкретного юзера) и по умолчанию — это root.
- -u YOUR_USER: Задаем пользователя от которого будет выполнена команда.
- -c YOUR_COMMAND: Служит опцией для ввода команды.
Как-то так.
Запустить команду от другого пользователя в Unix/Linux — способ 2
Можно использовать утилиту SU. И сейчас приведу несколько примеров.
Логин в root юзера
Чтобы получить рута, выполните:
$ su -
Или:
$ su - root
Запустить команду как root юзер
Вот пример команды:
# su - root -c "YOUR_COMMAND_HERE"
Или
su - -c "YOUR_COMMAND_HERE arg1"
Идем дальше….
Выполнить команду от другого пользователя с помощью su
И так, вот пример:
# su -c "/opt/solr/bin/solr create -c test_solr_core -n solrconfig.xml" -s /bin/sh solr Created new core 'test_solr_core'
Рассмотрим другой пример:
$ su another_user -c 'ping linux-notes.org'
Или:
$ su - YOUR_USER -c "YOUR_COMMAND_HERE"
Где:
- — — Будет имитировать логин указанного пользователя.
- -c — Служит для указания команды для выполнения (для указанного юзверя).
Как-то так.
Запустить команду от другого пользователя в Unix/Linux — способ 3
И так, можно использовать утилиту runuser. Команда runuser запускает оболочку с заменяющими идентификаторами пользователей и групп. Эта команда полезна только когда вы залогинены как пользователь root. Синтаксис выглядит следующим образом:
# runuser -l YOUR_USER -c 'YOUR_COMMAND_HERE'
Как пример, я покажу следующую строку:
# runuser -l nginx -c 'service nginx start'
PS: Для использования команды runuser пароль не требуется, и он должен запускаться только пользователем root.
Основные опции:
- -l: Создаст оболочку для входа в систему, используя файл runuser-l PAM вместо стандартного.
- -g: Указывает на основную группу.
- -G: Указывает на дополнительную группу.
- -c: Собственно, служит для указания команды.
- –session-command=COMMAND: Передает одну команду в оболочку с опцией «-c» и не создает новый сеанс.
- -m: Не сбрасывайте переменные среды (ENV).
Вот и все, тема «Запустить команду от другого пользователя в Unix/Linux» завершена.
Переменные окружения
Переменные окружения
или переменные среды — особый тип переменных, который существует только в рамках запущенной сессии командного интерпретатора. Эти переменные подгружаются туда по мере необходимости и могут содержать данные о настройках системы, конкретной программы и так далее.
Отметим, что команда sudo по умолчанию не передает переменные окружения текущего пользователя той программе, которая запускается. Если это нужно, то это придется делать в явном виде. К примеру, если запускается графическое приложение, может быть необходимость передать переменную для доступа к графическому серверу.
Если нужно передавать переменную окружения, то надо использовать ключ . Это выглядит так:
$sudo -E env
Отметим, что без этой опции программа получает лишь 18 стандартных переменных, а с ней — все, которые могут быть. Также можно явно указать список переменных, которые нужно передавать обязательно.
Разница между командами «su» и «su -»
Разница между командой su без флагов и su с дефисом или -l заключается в том, что команда без флагов сохраняет переменные среды и изменяет только пользователя.
При использовании с дефисами или флагом -l большинство переменных среды очищаются.
В следующем примере показано, как пользователь linuxhint переключается на root с помощью su без параметров.
Затем, после проверки переменной окружения $ LOGNAME, мы видим, что она остается как linuxhint, а не root.
В отличие от предыдущего примера, если используется дефис, он будет обновлен до корневого при проверке переменной $ LOGNAME.
Давайте попробуем то же самое с переменной окружения $ USER.
Как видите, при выполнении su как linuxhint для перехода на root и проверке переменной $ USER он остается как linuxhint.
В отличие от предыдущего примера, при использовании дефиса переменная $ USER будет очищена и обновлена, как показано ниже.
В завершение этого урока последний пример показывает, что флаг -l действует точно так же, как дефис.
Опции sudo
- -A или —askpass — по умолчанию sudo спрашивает пароль пользователя в терминале. Если задана эта опция, утилита попробует использовать графическую утилиту для запроса пароля.
- -b или —background — запускает переданную программу в фоновом режиме;
- -C или —close-from — опции нужно передать число больше трёх. Она позволяет закрыть для программы все файловые дескрипторы, кроме стандартного ввода и вывода;
- -E или —preserve-env — позволяет передать переменные окружения текущего пользователя выполняемой программе. Также можно передать этой опции список переменных, которые нужно разрешить;
- -e или —edit — позволяет редактировать файл вместо запуска команды. Файл копируется во временный каталог, редактируется с помощью редактора, установленного в системе по умолчанию, и если были изменения, записывается обратно с теми самыми правами;
- -g — запустить команду с указанной группой вместо группы пользователя, от имени которого запускается программа;
- -h — выполнить команду от имени другого хоста;
- -H или —set-home — установить домашний каталог;
- -i или —login — позволяет авторизоваться в консоли от имени другого пользователя. Будет выбран его домашний каталог, а также загружены все переменные окружения;
- -k — по умолчанию, sudo сохраняет пароль и некоторое время после выполнения команды, вы можете выполнить ещё раз, без ввода пароля. Эта опция отключает такую возможность;
- -l или —list — позволяет вывести список доступных команд для удалённых пользователей;
- -n или —non-interactive — не интерактивный режим, если будет необходимо ввести пароль, программа выдаст ошибку;
- -p или —prompt — использовать своё приглашение для ввода пароля;
- -r или —role — выполнить программу с контекстом SELinux, у которого есть указанная роль;
- -S — использовать стандартный поток ошибок для запроса пароля;
- -s или —shell — позволяет запустить указанный командный интерпретатор;
- -U или —User — вместе с опцией -l позволяет посмотреть привилегии для пользователя;
- -T или —timeout — позволяет установить время выполнения команды, если время истечёт раньше, чем завершится команда, то она будет завершена принудительно;
- -u — позволяет указать, от имени какого пользователя нужно выполнять программу;
- -V — выводит версию утилиты;
- — — означает, что следующие опции обрабатывать не нужно.
Это основные опции, которые вы можете использовать. А теперь давайте перейдём к примерам использования команды.
Переменные среды в Linux
Переменные среды — это значения, используемые для определения характеристик среды, в которой выполняются процессы оболочки и их дочерние процессы, например, процессы используют переменную среды $ SHELL, чтобы узнать используемую оболочку ( Bash, Zsh и т.д.).
В системе много переменных; в этой статье мы сосредоточимся на тех переменных, на которые влияет команда su.
Чтобы увидеть все переменные в вашей системе, вы можете запустить команду экспорта, как показано ниже.
Как вы видите на скриншоте выше, в нашей системе много переменных. Мы сосредоточимся на конкретных переменных HOME, SHELL, USER, LOGNAME и PATH.
Первая переменная, которую мы увидим, — это PATH. Значения этой переменной среды полезны для системы, чтобы знать, где найти команды или программы для выполнения. Системная переменная среды PATH по умолчанию определена в файле / etc / profile. Переменные PATH пользователей находятся в их домашних каталогах в ~ /.profile.
Чтобы узнать значения переменных среды PATH, вы можете использовать команду echo, за которой следует символ $ и переменная среды, которую вы хотите проверить, в данном случае PATH, как показано в примере ниже.
Как видите, система возвращает определенные переменные среды, чтобы наша система знала, где искать и находить команды, которые мы хотим выполнить.
Вторая переменная среды, описанная в этой статье, — это переменная SHELL. Значение этой переменной сообщает системе, какую оболочку мы используем, если Bash, Zsh, Ksh и т.д.
Чтобы увидеть значение переменной среды SHELL, повторите описанный ранее шаг, заменив $ PATH на $ SHELL, как показано на снимке экрана ниже.
Как видите, оболочка — это Bash. Вот как наша система узнает, какую оболочку мы используем, с указанным выше значением.
Еще одна важная переменная среды в Linux — это $ HOME. Это значение указывает домашний каталог пользователя. Чтобы узнать это значение, вы можете запустить команду ниже.
Значение переменной окружения $ LOGNAME — это пользователь, под которым вы вошли в систему.
Значение переменной среды $ USER — это идентификатор пользователя, который совпадает с $ LOGNAME.
Переменные среды, описанные выше, затрагиваются командой su при добавлении дефиса или флага -l.