LINUXTALKS.CO
БлогиHow-to

Запуск программ под другим пользователем через sudo при минимальной раздаче прав

 ,

L


0

1

Данное HOWTO объясняет как запускать команды под другим пользователем на примере запуска файлового менеджера MidNight Commander (mc) командами вида:

sudo -u mc_user /usr/bin/mc

Подготовка компьютера

Сначала если пользователь под которым мы хотим запускать команду отсутствует в системе то создаём его аккаунт:

adduser mc_user

Там надо ответить на несколько вопросов, подробности в справке команды adduser получить доступ к которой можно набрав man adduser.

Убедиться в наличии или отсутствии этого пользователя можно проведя поиск командой grep по файлу /etc/passwd

$cat /etc/passwd | grep mc_user 
mc_user:x:1001:1001::/home/mc_user:/bin/sh
$

Как можно видеть такая строка есть и значит пользователь mc_user присутствует в системе.
(Получение справки аналогично: man cat и man grep по поводу | искать в интернете по запросу перенаправление ввода-вывода linux.

Потом командой passwd mc_user надо задать ему пароль и отдав ту же команду с параметром -l провести БЛОКИРОВАНИЕ аккаунта если доступ будет осуществляться с директивой NOPASSWD или на оборот, разблокировать аккаунт если директива(опция) NOPASSWD использована не будет запустив команду с опцией -u)
Примеры:

adduser -l mc_user
adduser -u mc_user

Обратите внимание, блокировка и разблокировка пользователя на заданный ему пароль никак не влияют, если пароль не задан то после разблокировки пользователя он сам не появится, вы должны его самостоятельно задать.
(Или не задать если он вам не нужен и вы не боитесь что к вам из сети придёт гость. а он придёт и даже быстрее чем на винду, за БЕЗЗАБОТНЫМИ линуксойдами целая охота).

Более подробную информацию о команде passwd можно получить запросом в системе справки линух man passwd

Сбор информации нужной для настройки sudo

Затем надо посмотреть содержимое файла /etc/hostname

$ cat /etc/hostname
kitchen
$

Из этого можно узнать что в данном случае компьютер называется kitchen.
Затем файл /etc/hosts

$ cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	kitchen.local	kitchen

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
$

В нём можно видеть 127.0.1.1 kitchen.local из этого можно узнать что компьютер входит в виртуальный домен .local.

Обратите внимание, неправильная настройка этих файлов может привести к тому что sudo не будет вам разрешать запускать указанные в конфиге команды.
В принципе ошибки в этих двух файлах вообще могут нарушить работу части ДЕМОНОВ и софта на вашем компьютере.

Настройка sudo собственно как таковая

Для настройки sudo в каталоге /etc/sudoers.d создаётся один или несколько файлов с произвольными названиями которые заполняются строками вида:

user	kitchen.local=(mc_user:kitchen.local)      NOPASSWD:/usr/bin/mc

в этой строке

  • user это имя пользователя который ЗАПУСКАЕТ команду sudo
  • kitchen.local название моего компьютера при этом .local условный домен внутри компьютера.
    • при этом первое упоминание kitchen.local это компьютер с которого можно отдавать команду ЯВЛЯЯСЬ пользователем user.
    • а второе упоминание в круглых скобках это название компьютера на котором можно отдавать команду ОТ ИМЕНИ пользователя mc_user.
  • mc_user пользователь, от имени которого я запускаю команду.
  • NOPASSWD директива sudo запускать команду без запроса пароля запускающего её пользователя, если её не указать то пароль будет запрошен.
    (Как не трудно догадаться у sudo есть и другие директивы которые вы можете изучить в её руководстве пользователя в интернете или через man sudo)
  • /usr/bin/mc абсолютный путь к исполняемому файлу файлового менеджера MidNight Commander.

!!! ВАЖНО! команда sudo разрешает запускать команду без указания полного пути, но так делать не следует, потому что если не указать путь то будет запущенная первая найденная в указанных переменной окружения PATH директориях команда с таким именем!!!
Если вы не знаете полный путь к нужной вам команде то вы может просмотреть её ярлык как текстовый файл и найти параметр Exec или отдать команду

type 'your_prog_name'

которая выведет полный путь к указанной ей команде если она находится в одной из директорий указанных в переменной окружения PATH.

После этих настроек команда sudo -u mc_user /usr/bin/mc отданная под пользователем user должна работать.
(Но под другими пользователями, в том числе под root НЕ ДОЛЖНА!!!)

Дополнительные настройки

Так же рекомендую закомментировать в файле /etc/sudoers строки с
%sudo ALL=(ALL:ALL) ALL и root ALL=(ALL:ALL) ALL.
Что они делают и с другими настройками sudo разбирайтесь самостоятельно.

Я, torvn77, как оригинальный автор этого HOWTO даю разрешение на его распространение и использование на условиях лицензии CC BY-SA и обязательного указания ссылки на его первую публикацию https://linuxtalks.co/blogs/how-to/2611

★★

Проверено: cocucka ()

Угадал автора по первым строчкам.

sudopacman    
★★★★★★★★★★
Windows / Firefox

cetjs2 , я отменил подтверждение пока не получу разъяснения от cocucka . я считаю, что пока сайт раскручивается, мы не должны видеть на всю главную портянку, о том, как пользоваться sudo. это писец! новости только в режиме mini. основные новости должны быть о развитие сайта.

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome
Ответ на: комментарий от crypt

Да, я походу зря по умолчанию включил блоги в ленту на главную. Ну и torvn77, осиль уже cut.

cocucka    
★★★★★★★★★★
iPhone / Firefox
Ответ на: комментарий от cocucka

все ок. главное, что разобрались. это же бета. я попробую сам это отключить. всеравно хотел понять, как галочку по умолчанию ставить-снимать.

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от cocucka

Ну и torvn77, осиль уже cut. Тут есть два возражения: В этом тексте нет крупных объектов, в cut нечего помещать. Это обучающий материал, люди не будут открывать этот cut и будут жаловаться что ничего не понятно. Ты лучше вот о чём подумай, может имеет смысл сделать специальный блок в который будет размещаться краткая версия новости для показа на главной странице, совсем не обязательно туда помещать всю новость целиком.

torvn77    
★★
Android / Chrome
Ответ на: комментарий от cocucka

Да, я походу зря по умолчанию включил блоги в ленту на главную. Я когда предлагал делать раздел howto тоже считал что они не будут показываться на главной, просто ещё один раздел как средство каталогизации и побуждения к написанию ховто. Но имхо стоит сделать кнопку Разместить на главной которой модератор сможет любую тему из Форума или Толксов поместить на главную страницу.

torvn77    
★★
Последнее исправление: torvn77 (всего исправлений: 1)

Android / Chrome
Ответ на: комментарий от torvn77

в cut нечего помещать. Это с чего вдруг? Кат просто отрезает портянку чтоб не забивать ленту. Правило простое – пишешь кратко вступление, ставишь кат, пишешь портянку.

cocucka    
★★★★★★★★★★
Windows / Firefox
Ответ на: комментарий от LINUXTALKS-CO

Ты учти, что всё это указание конкретных программ легко обходится через указание в опциях всяких ««инъекций»». У sudo есть директива для отбрасывания или фильтрации передаваемых опций, но я так и не понял где про неё написано.

torvn77    
★★
Последнее исправление: torvn77 (всего исправлений: 3)

Android / Chrome
Ответ на: комментарий от torvn77

так-с… мы порешали вопрос с публикацией блогов на главной. теперь по-умолчанию они не видны и теперь я могу одобрить, чтобы cetjs2 одобрил твою писанину. но сделай как сосиска сказал насчет тега cut, лады?

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome
Ответ на: комментарий от crypt

но сделай как сосиска сказал насчет тега cut, лады? Нет, я не хочу так делать по той причине, что мне бы не понравилось если бы так сделали другие. И имхо делать для ховто и блогов премодерацию это заочно гробить разделы. Вместо премодерации надо сделать кнопку отправить на главную и специальный код для текста который будет показан на главной.

torvn77    
★★
Android / Chrome
Ответ на: комментарий от torvn77

Нет, я не хочу так делать по той причине, что мне бы не понравилось если бы так сделали другие. ну… я не знаю, в чем тут проблема… хз… И имхо делать для ховто и блогов премодерацию это заочно гробить разделы. а если голых баб запостят? надо сделать кнопку отправить на главную т.е. чтобы все видели твой текст про sudo сразу на главной что ли?? ничего, что это нубская фигня? ей место как раз в ленте личных блогов, а не на главной.

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 2)

FreeBSD / Chrome
Ответ на: комментарий от torvn77

Более того, в этом ховто есть нерешённая проблема инекций команд через передаваемые опции и его как минимум его надо дополнить секцией где у отдающего и исполняющего команду хоста будут разные доменные имена. То есть мне это ховто когда нибудь пртребуется дописать.

torvn77    
★★
Последнее исправление: torvn77 (всего исправлений: 1)

Android / Chrome
Ответ на: комментарий от crypt

а если голых баб запостят? Их сейчас по всему сайту могут запостить т.е. чтобы все видели твой текст про sudo сразу на главной что ли?? Кнопка будет у модератора|коректора.

torvn77    
★★
Android / Chrome
Ответ на: комментарий от crypt

ничего, что это нубская фигня? Ты смотришь с высот своих навыков, мне потребовалось два года чтобы выработать эту информацию из того бардака что представляют из себя ховто по sudo написанное другими авторами. По факту имхо ховто такого направления и качества(в хорошем смысле) сейчас уникально не только для рунета, но и для англоязычных ресуросов. Если хочешь то можешь его перевести на английский и прославить нашу Родину и Русский язык.

torvn77    
★★
Последнее исправление: torvn77 (всего исправлений: 2)

Android / Chrome
Ответ на: комментарий от torvn77

Их сейчас по всему сайту могут запостить да но… хм… Кнопка будет у модератора|коректора. т.е. ты апруф одобряешь, но только для того, чтобы отправлять на главную?

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от torvn77

и прославить нашу Родину и Русский язык. Данное HOWTO объясняет как запускать перед «как» запятая… сначала хорошо бы научиться не позорить Русский язык и Родину… такие хаутушки есть почти у каждого технаря, который постоянно занимается айти. они появляются за пару дней, а не два года. мне кажется, ты придаешь своему хауту слишком много значения, т.к. для тебя это какой-то особый случай. можешь постить в своем блоге, что хочешь, конечно.

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome
Ответ на: комментарий от crypt

т.е. ты апруф одобряешь, но только для того, чтобы отправлять на главную? На главной должно быть лучшее в качестве доски почёта, либо важное или то, что по той или иной причине следует показать.

torvn77    
★★
Android / Chrome
Ответ на: комментарий от torvn77

на главной должно быть то, что привлечет аудиторию (но не сиськи).

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от crypt

такие хаутушки есть почти у каждого технаря У технаря есть, а в интернете нету, или ты думаешь я стал бы писать то, на что есть полная документация?

torvn77    
★★
Android / Chrome
Ответ на: комментарий от torvn77

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

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome
Ответ на: комментарий от torvn77

kitchen.local название моего компьютера при этом .local условный домен внутри компьютера. не название, а «имя» (host name). название - это мак мини. а «.local» - это не условный, а вполне конкретный домен локальной сети. и т.д. и т.п.

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 2)

FreeBSD / Chrome
Ответ на: комментарий от torvn77

в виртуальный домен .local. почему-то домен теперь стал виртуальным… у тебя совсем плохо с точностью технического языка.

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от crypt

уже знает. такому человеку достаточно Ховто для тех кто не знает и не умеет и даже после всех таких пояснений будет путаться и совершать ошибки.

torvn77    
★★
Последнее исправление: torvn77 (всего исправлений: 1)

Android / Chrome
Ответ на: комментарий от torvn77

блин, лучше помоги мне с тем, чем реально можешь помочь. тут спуфинг перепутал серые звезды с погашенными. ты как считаешь, можно так ошибиться? они правда похожи на погашенные? Главный недостаток юзабилити LINUXTALKS.CO

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome
Ответ на: комментарий от crypt

Я думал что серые звёзды это новый дизайн, который мне ещё больше понравился чем предыдущий с красными. Ну и сравнивать то не с чем, у нас ещё звёзд то не гасили.

torvn77    
★★
Android / Chrome
Ответ на: комментарий от torvn77

спасибо! можешь туда в тред отписать?

crypt    
★★☆☆☆
FreeBSD / Chrome
Ответ на: комментарий от crypt

Текст действительно слабый, но вместе с тем: я в нём не вижу фактических ошибок или злого умысла он безусловно является howto Т.о. предлагаю прекратить переталкивать его по разделам как срущегося котэ и укрепить на законном месте.

d_a    
★★★★★★★★
Linux / Chrome
Ответ на: комментарий от d_a

я говорю, мы техническую проблему решали. никто по разделам не переталкивает. сейчас я могу это подтвердить, но торн [как всегда] недоволен текущим состоянием блогов. более того, поскольку я идею сосиски с блогами тоже не оч. хорошо понимаю. например, откуда все поймут, что меню сверху - это лента блогов и там их и нужно искать, то я подтвержать сам не буду, пока они с торном сами не договорятся.

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome
Ответ на: комментарий от cetjs2

Я не разрешаю изменять ховто под моим аккаунтом.
Хочешь менять внизу ховто указаны лицензия и условия, публикуй под своим и хоть на патч Бармина переписывай, это уже твоё творчество.

torvn77    
★★
Android / Chrome
Ответ на: комментарий от cetjs2

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

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=90