Многие команды могут быть запущены только суперпользователем, поэтому мы должны знать, как становится им (root-ом). Чтобы сделать это, мы можем использовать команду: su (смена пользователя). Команда su принимает следующие форматы:
но чаще всего мы будем использовать su для того, чтобы стать пользователем root:
su — root
su root
если имя пользователя в строке не указано, то автоматически предпологается пользователь root, поэтому команду можно сократить:
но обе команды ведут себя различно. ‘su ‘ дает текущему пользователю личность , тогда, как ‘su — ‘ дает текущему пользователю личность вместе с окружением , которое можно было бы получить, зарегистрировавшись в качестве .
Зачастую пользователи используют ‘su’ для перехода в root. Попробовав запустить команду (например — ifconfig), вы получите: ‘command not found’ error.
su Password: ifconfig bash: ifconfig: command not found
Причина заключается в том, что обычные пользователи системы и root пользователь имеют различные переменные окружения PATH (вы можете посмотреть PATH пользователя при помощи «echo $PATH). После ввода команды Linux, оболочка будет искать пользовательский PATH, чтобы попытаться найти команду для запуска. Она начинает поиск в каждой директории указанной в PATH, пока цель не будет найдена.
Как использовать GameGuardian без root прав! 100% рабочий способ!
Команды обычных пользователей обычно расположены в /usr/local/bin, /usr/bin и /bin. А команды пользователя root распологаются в основном в /usr/local/sbin, /usr/sbin, /sbin и корневой PATH это отражает. Поэтому, когда вы становитесь суперпользователем при помощи «su -«, то вы также принимаете и новый путь PATH к основным командам. А используя только ‘su’, сохраняется пользовательский путь PATH по умолчанию, следовательно, при попытке выполнить программу расположенную в /usr/local/sbin, /usr/sbin, /sbin выдаст результат: ‘command not found’ error. Для более детального объяснения, смотрите справочную страницу (man bash), особенно раздел login shells.
Таким образом, вы или должны указывать полный путь к команде (пример — /sbin/ifconfig) при использовании ‘su’, либо использовать ‘su -‘, когда становитесь root-ом.
2. Использование Sudo
Вам не нужно быть суперпользователем каждый раз, когда вы хотите запустить некоторые конкретные административные функции. Благодаря Sudo, вы можете запустить некоторые или все команды как под root-ом. Когда Sudo установлен (пакет: Sudo), вы можете настроить его при помощи команды ‘visudo’ под root-ом. В основном он редактирует (Vim по умолчанию) /etc/sudoers, но это не рекомендуется делать вручную.
Таким образом, быстрый и нерекомендуемый способ использования Sudo, это добавить в конце файла sudoers:
alex ALL=(ALL)ALL
Alex — имя пользователя. Сохраните (нажать escape, затем ввести wq), и все готово. Войдите как alex, и запустите например:
$sudo yum update
Sudo запросит пароль. Это пароль alex-а, а не пользователя root. Так что будте осторожны, когда вы даете права пользователя с Sudo.
Как получить root права на android за 3 минуты! 100%!
Но Sudo может сделать не только это, а гораздо больше. Мы можем позволить пользователю или группе пользователей запускать только одну команду или группу команд. Давайте вернемся к нашему sudoers файлу. Начнем с alex и alisa, членов группы administrator. Если мы хотим, чтобы все пользователи из группы»administrator» были в состоянии запустить каждую команду в качестве суперпользователя, мы должны изменить наш пример:
%admin ALL=(ALL)ALL
Alex так же может выполнить суперпользовательскую команду, и alisa получила право запускать Sudo, с теми же правами и со своим паролем. Если alex и alisa не члены одной группы, мы можем определить псевдоним пользователя в файле sudoers:
User_Alias ADMINS = alisa,alex
Здесь мы определили алиас под названием ADMINS, с членами alisa и alex.
Тем не менее, мы не хотим, чтобы alex и alisa могли запускать с правами суперпользователя любую програму. Мы хотим, чтобы они могли запускать только ‘updatedb’. Давайте определим команду псевдоним:
Cmnd_Alias LOCATE = /usr/sbin/updatedb
Но этого мало! Мы должны сказать Sudo, что пользователи, определенные как ADMINS, могут запускать команды заданные в LOCATE. Чтобы сделать это, мы заменим строки с «%admin» на эти:
ADMINS ALL = LOCATE
Это означает, что пользователи входящие в алиас ADMINS могут запускать все команды в алиасе LOCATE.
На этот раз, /etc/sudoers выглядит следующим образом:
User_Alias ADMINS = alisa, alex Cmnd_Alias LOCATE = /usr/bin/updatedb ADMINS ALL = LOCATE
В результате alex и alisa могут запускать updatedb, как root, введя свой пароль.
Если последнюю строчку в файле изменить:
ADMINS ALL = NOPASSWD:LOCATE
тогда alex и alisa смогут выполнить ‘sudo updatedb’ без ввода пароля.
Можно добавить другие команды в командный алиас и более алиасов в правило. Например мы можем создать алиас NETWORKING содержащий некоторые сетевые команды типа: ifconfig, route или iwconfig:
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhcclient, /usr/bin/net, sbin/iptables, /usr/bin/rfcom, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
Давайте все это добавим в наш /etc/sudoers файл (с помощью visudo!). А также предоставим нашей ADMINS групе права на выполнение программ и из алиаса NETWORKING:
User_Alias ADMINS = alice, bob Cmnd_Alias LOCATE = /usr/bin/updatedb Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net,/sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ADMINS ALL = LOCATE, NETWORKING
Маленькая проба: войдите в систему как alisa (или alex), и наберите:
$ping -c 10 -i localhost
Ответ должен вернуться быстро:
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. ping: cannot flood; minimal interval, allowed for user, is 200ms
Теперь, тоже-самое но с Sudo:
$sudo ping -c 10 -i 0 localhost PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.049 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.034 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 time=0.017 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=7 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 time=0.016 ms — localhost.localdomain ping statistics — 10 packets transmitted, 10 received, 0% packet loss, time 1ms rtt min/avg/max/mdev = 0.016/0.023/0.049/0.010 ms, ipg/ewma 0.187/0.028 ms
Sudo часто используется для предоставления определенным пользователям частичного доступа к привелигированным командам, чтобы они могли выполнять ограниченные административные функции. Одно из удобств Sudo в том, что все команды записываются в /var/log/secure. Приведенный выше пример будет описан строчкой в журнале:
Apr 18 11:23:17 localhost sudo: alex : TTY=pts/0 ; PWD=/home/alex ; USER=root ; COMMAND=/bin/ping -c 10 -i 0 localhost
Вот и все. Теперь никогда не забуду, когда использовал Sudo: «с большой властью приходит большая ответственность».
2.1 Sudo shell
Если у вас настроено достаточно прав в sudoers, вы также можете открыть root-ую оболочку shell используя:
sudo -s
sudo -i
В последних версиях только на CentOS 5, для запуска shell под root, используется sudo -s. Будьте очень осторожны, так как это может менять или создавать новые файлы в домашней директории Root, а установку вести в домашний каталог вызвавшего пользователя.
3. consolehelper
Consolehelper представляет собой оболочку для запуска GUI приложений. Когда он начинает работать, он проверяет конфигурацию PAM для требуемого применения. Это означает, что мы можем проводить аутентификацию пользователя с помощью всех установленных модулей PAM.
Основной метод состоит в том, чтобы запросить пароль, но если мы имеем надлежащее оборудование. мы можем аутентифицировать с помощью смарткарты, жетонов, отпечатков пальцев и т.д. Конфигурация PAM выходит за рамки этого документа (см. PAM Руководство администратора), поэтому мы рассмотрим этап настройки consolehelper, необходимый для запуска приложений под root-ом и запросом пароля root.
В качестве примера, давайте настроим /usr/bin/xterm для запуска в качестве root-ого.
Во-первых, мы хотим сохранить возможность запускать Xterm под обычным пользователем. Поэтому создадим символическую ссылку /usr/bin/xterm-root для /usr/sbin/consolehelper:
ln -s /usr/sbin/consolehelper /usr/bin/xterm-root
Теперь для конфигурирования PAM — создайте файл /etc/pam.d/xterm-root:
#%PAM-1.0 auth include config-util account include config-util session include config-util
Наконец, настройте consolehelper на запуск /usr/bin/xterm под root-ом, командой ‘xterm-root’. Создайте файл /etc/security/console.apps/xterm-root:
USER=root PROGRAM=/usr/bin/xterm
Вот и все. Запускайте ‘xterm-root’ (из командной строки или ярлыком .desktop file), введите пароль и в путь. Если вы получили сообщение об ошибке: «Xlib: connecttion to «:0.0″ refused by server», запустите сначала ‘xhost local:root’.
Источник: centos.name
Как запустить программу от имени суперпользователя?
Чтобы войти под пользователем root можно переключиться в одну из виртуальных консолей, например, с помощью сочетания клавиш Ctrl+Alt+F1 и затем ввести логин root и пароль root пользователя.
Как выполнить команду от root?
Выполнить команду от имени root: (по умолчанию в Debian) Gnome запрашивает пароль (для учетной записи администратора) при запуске программ, которые настраивают систему. Для выполнения команды от root, откройте Root Terminal (Приложения > Стандартные > Root Terminal), или запустите su в любом терминале.
Как запустить от имени администратора линукс?
Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt + F2 .
Как запустить командную строку от имени администратора Ubuntu?
Пользователи могут использовать команду «sudo» для запуска терминала от имени администратора в Ubuntu. Просто введите sudo перед остальной частью вашей команды. Команда «sudo» означает «замещающий пользователь do». Когда пользователь выполняет sudo в начале команды, команда запускается от имени пользователя root.
Как дать пользователю root права?
Как дать пользователю root—права в Linux
- Метод 1: добавление в корневую группу с помощью usermod. …
- Метод 2: добавление в корневую группу с помощью команды Useradd. …
- Метод 3: редактирование файла /etc/passwd. …
- Метод 4: установка в качестве пользователя Sudo.
Что означает команда sudo в Linux?
Команда sudo ( substitute user and do, подменить пользователя и выполнить ) позволяет строго определенным пользователям выполнять указанные программы с административными привилегиями без ввода пароля суперпользователя root.
Как выполнить команду с правами суперпользователя?
Чтобы использовать sudo в командной строке, просто наберите «sudo» перед командой, которую Вы хотите запустить. После этого sudo попросит ввести ваш пароль. Sudo будет помнить ваш пароль установленное время (по умолчанию 15 минут).
Как выполнить команду от другого пользователя?
Запустить команду от другого пользователя в Unix/Linux — способ 2
- Логин в root юзера Чтобы получить рута, выполните: $ su — …
- Запустить команду как root юзер Вот пример команды: # su — root -c «YOUR_COMMAND_HERE» …
- Выполнить команду от другого пользователя с помощью su.
Как зайти под sudo?
Чтобы использовать sudo в командной строке, просто наберите «sudo» перед командой, которую Вы хотите запустить. После этого sudo попросит ввести ваш пароль. Sudo будет помнить ваш пароль установленное время (по умолчанию 15 минут).
Как узнать пароль администратора в Linux?
Малыми средствами
- Если загрузчик — grub, следует:
- нажать «e» при курсоре на цели загрузки, соответствующей используемому экземпляру ALT Linux;
- в открывшемся редакторе отыскать строку, начинающуюся с linux /boot/vmlinuz;
- в её конец дописать то самое init=/bin/bash.
- нажать F10.
Как пользоваться командной строкой в Ubuntu?
В операционной системе Ubuntu 20.04 открыть командную строку можно двумя способами: через консоль и через графический терминал. Для работы через консоль следует нажать сочетание клавиш Ctrl+Alt+F1, для возврата в графический интерфейс — сочетание клавиш Ctrl+Alt+F7.
Как запустить программу из командной строки Убунту?
Команды cat и tac Если вам нужно открыть файл в терминале Linux, то для этого предусмотрено множество простых и эффективных способов. Пожалуй, самая часто используемая команда такого рода – это команда «cat». После выполнение данной команды все содержимое указанного файла будет выведено в терминал Linux.
Что делает команда sudo?
Команда sudo ( substitute user and do, подменить пользователя и выполнить ) позволяет строго определенным пользователям выполнять указанные программы с административными привилегиями без ввода пароля суперпользователя root.
Для чего нужен sudo?
Главное назначение sudo — это выполнить команду от имени другого пользователя, обычно от root. Смысл выполнения команды от root в том, что у него повышенные права доступа и, применяя sudo, обычный пользователь может выполнить те действия, на которые у него недостаточно прав.
Как использовать команду sudo?
Как пользоваться sudo Sudo прочитает файл /etc/sudoers и проверит, предоставлен ли вызывающему её пользователю доступ к sudo. При первом использовании sudo в сеансе вам будет предложено ввести ваш пароль пользователя (не пароль root), и команда будет выполнена от имени пользователя root.
Как открыть терминал с правами root?
Чтобы использовать терминал пользователя root, наберите «sudo -i» в командной строке Вся группа графических утилит конфигурации в Kubuntu уже использует sudo, так что при необходимости у вас попросят пароль с помощью приложения kdesu, которое является графической оболочкой sudo.
Как запускать программы от имени администратора на Mac?
Попробуйте быстрый метод.
- Введите sudo «путь к файлу программы на жестком диске. app/Contents/MacOS/название программы». …
- Введите пароль к учетной записи администратора, в которую вы вошли. Нажмите ⏎ Return .
- Если команда работает, программа откроется с правами суперпользователя.
Источник: toptitle.ru
Как разрешить выполнение приложений с sudo в определенном каталоге на Linux

Мануал
Автор cryptoparty На чтение 5 мин Опубликовано 16.09.2022
Это краткое руководство объясняет, как разрешить пользователю запускать все программы в каталоге через sudo и запретить ему запускать программы в других каталогах в Linux и Unix-подобных системах.
Введение
В Linux существует множество способов ограничить пользователя в выполнении определенных действий.
Вы можете разрешить пользователю выполнять только определенные команды и задачи.
Вы можете запретить пользователям изменять переменные среды или переходить в каталоги других пользователей.
Ознакомьтесь со следующим руководством, чтобы узнать больше о том, как ограничить доступ пользователей.
В этом руководстве мы собираемся разрешить пользователям выполнять только определенные команды.
В частности, мы разрешим пользователю запускать только те программы, которые доступны в определенном каталоге.
Пользователь сможет выполнять только опеределенные команды вместе с sudo, а команды из других мест не сможет.
Запуск всех программ в каталоге вместе с Sudo
Для демонстрации я собираюсь создать тестового пользователя с именем “user1” от root.
useradd user1
Установим пароль для пользователя user1 с помощью команды:
passwd user1
Затем отредактируйте файл /etc/sudoers с помощью команды:
Добавьте полный путь к каталогу (включая косую черту в конце), который содержит все программы.
user1 ALL=(root) /usr/bin/

В соответствии с приведенной выше строкой, пользователь user1 может запускать программы ТОЛЬКО из каталога /usr/bin/.
Сохраните файл и закройте его.
Выйдите из сеанса root и снова войдите в систему под именем user1.
Из сессии user1 запустите любую программу от имени root из разрешенного каталога, т.е. /usr/bin/:
sudo -u root /usr/bin/touch itsecforu.txt
Приведенная выше команда должна сработать нормально и создать текстовый файл с именем itsecforu.txt в текущем каталоге.
Обратите внимание, что пользователь user1 может запускать команды ТОЛЬКО из каталога /usr/bin/.
Он даже не может запускать программы из подкаталога каталога /usr/bin/.
Далее проверьте, может ли user1 запускать команды из других директорий через sudo:
sudo -u root /usr/local/bin/yt-dlp —help
Вы увидите следующую ошибку:
Sorry, user user1 is not allowed to execute ‘/usr/local/bin/yt-dlp —help’ as root on Almalinux8CT.
Пользователю user1 не разрешено выполнять команды в каталоге /usr/local/bin/.
Как уже было сказано, пользователь user1 имеет право запускать любые команды только из каталога /usr/bin/, но не из подкаталога /usr/bin/ и других каталогов.
Также стоит сказать, что этот совет эффективен только в том случае, если user1 выполняет команды от имени пользователя root через sudo.
user1 может выполнять все команды из любой точки системного пути.
Например, он может выполнить:
yt-dlp —help
Но не от пользователя root:
sudo -u root /usr/local/bin/yt-dlp —help
Здесь используется программа yt-dlp для демонстрации.
Вы можете использовать любую программу по своему выбору.
Чтобы вернуться к первоначальным настройкам по умолчанию, просто удалите строку, которую вы добавили в файл /etc/sudoers.
Авторизация пользователей для выполнения команд через Sudo из пользовательской директории
Вы также можете создать пользовательский каталог и хранить в нем все исполняемые двоичные файлы.
Например, я собираюсь создать следующую директорию под пользователем root:
mkdir /home/user1/programs
Скопируйте все бинарные исполняемые файлы, которые вы хотите запускать от имени user1.
Затем добавьте полный путь к каталогу в файл /etc/sudoers:
user1 ALL=(root) /home/user1/programs/
Выйдите из сеанса root и снова войдите в систему как user1 и проверьте, можете ли вы запускать какие-либо программы из других каталогов через sudo.
Пользователь user1 не может запускать программы через sudo из других каталогов, кроме разрешенного каталога /home/user1/programs/.
Для получения более подробной информации обратитесь к man-страницам.
man sudoers
В этом руководстве мы обсудили, как разрешить пользователю запускать все программы в каталоге через sudo и запретить этому же пользователю запускать команды из других мест.
Я не смог найти никаких практических примеров использования этого совета.
Но, независимо от причин, если вы когда-нибудь задавались вопросом, как запускать программы в каталоге от имени root через sudo, это руководство определенно поможет вам.
- Почему процессы в контейнерах Docker не должны запускаться от имени Root
- Как сбросить или восстановить пароль пользователя Root во FreeBSD
- Что такое Docker без root (rootless)?
- Как удалить не root пользователя с UID 0 в системах Linux
- Что такое chroot jail и как им пользоваться?
- Как предоставить пользователю права root на Kali Linux
- Как включить вход под учеткой root на Kali Linux
- Как разрешить вход пользователю root по SSH в Ubuntu 20.04 Focal Fossa Linux
- Как стать пользователем root на Linux
- Как запустить сервисы Systemd без пользователя root / sudo
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Источник: itsecforu.ru