Как да използвате sudo в Linux и да го управлявате сигурно

Последна актуализация: 22/03/2026
Автор: Isaac
  • Командата sudo ви позволява да извършвате специфични административни действия, без да влизате като root, намалявайки рисковете.
  • Конфигурацията на разрешенията и оторизираните потребители се управлява чрез файла sudoers и директорията /etc/sudoers.d/.
  • Опции като -u, -so, -i ви позволяват да изпълнявате команди или да отваряте шелове като други потребители, като същевременно поддържате проследимост.
  • Внимателното използване на sudo и ограничаването на директния достъп до root е ключово за поддържане на стабилността и сигурността на Linux системата.

Използване на командата sudo в Linux

Ако използвате Linux ежедневно, рано или късно ще се сблъскате с... командата sudoТази малка команда, която се появява в почти всеки урок, когато трябва да докоснете нещо деликатно в системата. Добавяне на потребител, инсталиране на пакет, редактиране на конфигурационен файл или рестартиране на услуга... веднага щом нещо изглежда като „администриране“, sudo влиза в действие, за да ви даде специални разрешения, без да се налага да влизате като root за постоянно.

Разбирането как да използвате sudo в Linux е ключово за сигурната работа със системата.Не става въпрос само за въвеждане на „sudo“ преди команда и въвеждане на парола: има цяла система от разрешения, групи, времена на валидност и конфигурационен файл (sudoers), който диктува кой какво може да прави. Нека го разгледаме спокойно, на разбираем език, но без да пропускаме важни подробности.

Какво точно е sudo в Linux и за какво се използва?

Командата sudo в Linux ви позволява да стартирате програми с привилегиите на друг потребител., обикновено корен суперпотребителИмето му обикновено се обяснява като „суперпотребител прави“ или „заместител потребител и прави“, а мисията му е проста: да ви позволи да изпълнявате административни задачи, без да влизате като root.

В повечето съвременни дистрибуции (Ubuntu, Debian, openSUSE и др.) sudo е предварително инсталиран и конфигуриран така, че група потребители да могат да го използват. Благодарение на това, обикновеният потребител поддържа ограничени разрешения за ежедневна употреба, но може да „заеме“ root права, когато е необходимо.

Този подход е много по-безопасен от това винаги да работите като root.Ако сърфирате в интернет, стартирате графични приложения или отваряте прикачени файлове с обикновен акаунт, всяка потенциална атака е значително по-ограничена. Само когато наистина е необходимо да промените системата, добавяте `sudo` към командата и се удостоверявате.

Важно: sudo не ви прави абсолютен root завинагиВ зависимост от конфигурацията, той ви предоставя повишени привилегии само за командата, която изпълнявате, или за определен интервал от време в рамките на тази терминална сесия. След това време ще ви поиска отново паролата.

В обобщение, sudo е контролираният мост между обикновения потребител и административните задачи.Тя ви позволява да инсталирате софтуер, да променяте критични разрешения или да управлявате услуги, но винаги под наблюдението на политика, дефинирана в системата.

Как работи sudo вътрешно и какъв е основният му синтаксис?

Команда sudo, изпълнена в Linux терминал

Основното използване на sudo е много лесно: поставяте го преди командата, която искате да изпълните с привилегии.Общата форма е:

sudo comando argumentos

Когато натиснете Enter, системата първо проверява дали потребителят е оторизиран да използва sudo.Това разрешение е дефинирано във файла /etc/sudoers и във файловете на директорията /etc/sudoers.dАко имате разрешение, системата ще ви поиска парола.

Паролата, която въвеждате със sudo, обикновено е вашата нормална потребителска парола, а не паролата на root.Освен в специфични конфигурации или определени корпоративни дистрибуции, когато го въвеждате в терминала, няма да виждате звездички или символи; въвежда се „на сляпо“, въпреки че това поведение може да се промени, както ще видим по-късно.

След като успешно се удостоверите, sudo изпълнява командата, сякаш сте целевият потребител. (обикновено root). Освен това, в системните логове обикновено се оставя запис, за да може администраторът да провери какво е направено със sudo.

По подразбиране, sudo удостоверяването има временен период на валидност. (обикновено около 15 минути). Докато не затворите терминала и това време не е изтекло, последващите команди със `sudo` няма да ви поискат парола отново. Можете да принудите обновяване или да нулирате това време, като използвате определени опции.

Често срещани опции и параметри на командата sudo

Освен че служи като прост префикс, sudo има редица много полезни опции Те ви позволяват да преглеждате информация, да подновявате идентификационни данни или да управлявате акаунти като други потребители. Някои от най-важните са:

  • -h: показва кратко помощно съобщение със синтаксиса и всички налични опции за sudo.
  • -V: показва инсталираната версия на програмата sudo и подробности за компилацията.
  • -v: Подновява „гратисния период“ за удостоверяване, без да изпълнява никакви команди. Използва се за обновяване на периода на валидност на паролата. и да предотвратите изтичането му, докато продължавате да работите.
  • -k: незабавно обезсилва кешираните идентификационни данни. След използване на -k, следващото sudo ще ви поиска отново паролата ви.въпреки че не са минали 15 минути.
  • -l: показва списъка с привилегии, които вашият потребител има със sudo. Много е полезно, за да знаете кои команди можете да изпълнявате. според конфигурацията на пуловерите.
  • -s: Отваря обвивка (shell) с помощта на sudo, наследявайки средата на текущия потребител.
  • -i: отваря „чиста“ обвивка за вход за целевия потребител, подобно на директното влизане като този потребител.
  • -u ПОТРЕБИТЕЛ: показва, че искате да изпълните командата като потребител, различен от root, например sudo -u pedro whoami.

Чрез комбиниране на тези опции можете да адаптирате поведението на sudo към вашите нужди по всяко време., от преглед на вашия списък с разрешения до получаване на обвивка със средата на друг потребител.

  Родителски контрол и детски акаунти: пълно ръководство за защита на вашите деца

Разлики между sudo и su: два начина за получаване на разрешения

В Linux има два класически начина за получаване на администраторски права: sudo и suТе често се бъркат, но в действителност покриват различни нужди и е важно да се изясни разликата.

Командата `su` (заместител на потребител) ви позволява да превключвате потребители в един и същ терминалАко не посочите към кого да превключите, ще се предположи, че искате да влезете като root. Ще ви поиска паролата на потребителя, към когото искате да превключите:

su pedro
Contraseña: **

Когато използвате `su`, сесията на оригиналния потребител не се затваря.Просто стартирате нова сесия, „вложена“ в предишната. Ако свържете няколко команди `su`, можете да получите любопитен куп сесии, вложени една в друга. За да се върнете назад, пишете exit толкова пъти, колкото е необходимо.

Практическият проблем с използването на вашия за всичко Проблемът е, че хората в крайна сметка работят като root потребители за дълги периоди от време, с всички произтичащи от това рискове: всяка лошо написана команда може да унищожи половината система.

Судо изглежда точно решава това.Вместо напълно да сменяте потребителите, вие запазвате нормалната си сесия и повишавате привилегиите само за специфичните команди, които го изискват. Много дистрибуции дори не препоръчват влизане като root чрез графичния интерфейс.

За да обобщим ключовата идея: превключвате потребители (обикновено към root), като същевременно запазвате тази идентичност, докато не излезете.sudo, докато той изпълнява специфична команда (или ограничена серия) с повишени права и след това автоматично се връщате към нормален потребител.

Практически примери: използване на sudo с често срещани администраторски команди

Най-добрият начин да видите силата на sudo е чрез ежедневни примери за системна администрация.където обикновен потребител би се сблъскал с класическото „Отказано разрешение“.

Инсталиране или актуализиране на пакетиАко се опитате да използвате мениджъра на пакети без привилегии, той обикновено ще се провали при запис в системни директории. Например в Debian или Ubuntu:

apt-get update

Без sudo, системата няма да може да отваря заключените файлове в /var/lib/apt/ Ще видите грешки, свързани с разрешенията. Ако повторите командата със `sudo`, ще бъдете помолени да въведете потребителската си парола (ако сте оторизирани) и процесът ще работи.

sudo apt-get update

Управление на потребителитеСъздаването на нов потребител, промяната на паролата му или модифицирането на групите му изисква привилегии. Типичен пример би бил:

sudo useradd edward

Без префикса sudo, обикновен потребител не може да получи достъп до системата от акаунти. и командата ще се провали. Същото важи и за помощни програми като usermod o deluser.

Редактиране на системни конфигурационни файловеМного настройки се съхраняват в текстови файлове в /etcЗа да отворите един от тези файлове с редактор, ви е необходим sudo. Например, за да редактирате /etc/hosts:

sudo nano /etc/hosts

На системи, които използват systemd, ще ви е необходим и sudo за управление на услугиНапример, рестартиране на Apache:

sudo systemctl restart apache2

Обърнете внимание, че това се отнася за действия, които само четат информация и не променят системата. (като например проверка на състоянието на услуга), в много случаи sudo не е необходимо, например:

systemctl status NetworkManager

Изпълнявайте команди като друг потребител със sudo (-u, -s, -i)

Освен че може да се изпълнява като root, sudo ви позволява да действате и като други системни потребители.Това е много полезно, когато искате да тествате разрешения, да преглеждате файлове, принадлежащи на друг акаунт, или да стартирате процеси с друга самоличност.

Най-прекият начин е да използвате -u, последвано от потребителското име И след това командата, която искате да изпълните:

whoami
sudo -u pedro whoami

В първия ред, whoami връща истинското ви потребителско име.; във втория, благодарение на sudo -u pedroКомандата се изпълнява с идентификацията „pedro“. Разбира се, за това ви е необходимо и разрешение в конфигурацията на sudoers.

Ако това, което искате, е пълна обвивка като друг потребител, имате две възможности много важно:

  • Sudo-sОтваря привилегирована обвивка, наследяваща текущата ви среда. Целевият потребител (root по подразбиране) стартира в същата директория и с вашите променливи на средата.
  • sudo -i: отваря обвивка за вход за целевия потребител. В този случай се зарежда неговата „чиста“ среда., изпълняват се неговите стартови скриптове (като например .profile o .bash_profile) и започва в своето $HOME.

И двата метода оставят следа в историята на командитекоето е интересно от гледна точка на одита и за да се запомни какво е правено в предишни сесии.

  Разширено ръководство за KeePassXC: Професионална настройка и употреба

Файлът sudoers: сърцето на sudo конфигурацията

Цялото поведение на sudo (кой може да го използва, с кои команди и при какви условия) се контролира от файла sudoers., намира се в /etc/sudoers и допълнени от файловете в директорията /etc/sudoers.d/.

Този файл не трябва да се редактира със стандартен редактор.Защото синтактична грешка може да направи sudo неизползваем и сериозно да усложни нещата. Правилният начин е да използвате командата visudo, който отваря файла с конфигурирания редактор и валидира съдържанието му, преди да го запази.

За да редактирате основния sudoers файл, обикновено използвате:

sudo visudo -f /etc/sudoers

Във файла ще видите няколко ключови реда, например:

  • корен ВСИЧКИ=(ВСИЧКИ:ВСИЧКИ) ВСИЧКИ: показва, че root потребителят може да изпълнява всяка команда на всеки хост, точно както всеки друг потребител и група.
  • %admin ВСИЧКИ=(ВСИЧКИ) ВСИЧКИСимволът % преди име се отнася до група. Потребителите в администраторската група имат привилегии, еквивалентни на root.
  • %sudo ALL=(ВСИЧКИ:ВСИЧКИ) ВСИЧКИ: същото, но за групата sudo, широко използвана в Debian и Ubuntu.
  • #include /etc/sudoers.dТази директива автоматично включва всички конфигурационни файлове в тази директория.

Препоръчителната практика е да се избягва прекомерното намесване в основната коренова линия. и вместо това създайте специфични файлове в /etc/sudoers.d/ за конкретни групи или потребители. Това улеснява поддържането на организираната конфигурация и намалява рисковете.

Предоставяне на sudo разрешения на потребител: групи и персонализирани записи

В много дистрибуции първият потребител, създаден по време на инсталацията, вече принадлежи към групата sudo. (или администратор) и затова те могат да използват sudo от самото начало. Ако искате да предоставите разрешения на повече потребители, най-лесният начин обикновено е да ги добавите към тази група.

За да видите кои потребители принадлежат към групата sudo, можете да използвате:

grep 'sudo' /etc/group

Ако искате потребител с име „bill“ да има пълни sudo привилегииПросто го добавете към съответната група:

sudo adduser bill sudo

След това Бил ще може да изпълни всяка команда със sudo. (с изключение на специфични ограничения, добавени в sudoers). Ако по-късно искате да премахнете тези привилегии, премахнете го от групата:

sudo deluser bill sudo

Когато имате нужда от по-фин контрол, sudoers ви позволява да дефинирате много подробни правила.Например, можете да създадете специална група (netadmin) и да я ограничите до специфични мрежови команди, използвайки псевдоними на команди:

Cmnd_Alias CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias SERVERS = /usr/sbin/apache2ctl, /usr/bin/htpasswd
Cmnd_Alias NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL

С тази конфигурация всеки, принадлежащ към групата netadmin, ще може да използва tcpdump. и някои Apache команди със sudo, но това няма да има пълна свобода на действие над цялата система. За да завършите настройката, трябва да добавите bill към групата netadmin:

sudo adduser bill netadmin

Конфигурирайте „сигурно“ и „удобно“ sudo (със или без парола)

Едно от най-честите практически решения е дали sudo винаги трябва да иска парола или не.И двата метода са възможни и се конфигурират в sudoers или във файлове. /etc/sudoers.d/.

„Безопасен“ режим: винаги изисква паролаТова е най-разумният вариант: потребителят може да изпълни всяка команда като root с `sudo`, но всеки път, когато го прави, трябва да въведе паролата си. Типичен запис за това би бил:

usuario ALL=(ALL:ALL) ALL

„Удобен“ режим: без парола (NOPASSWD)В десктоп среди или тестови машини, някои потребители предпочитат sudo да не ги пита за паролата всеки път. За да направите това, можете да използвате нещо подобно:

usuario ALL=(ALL) NOPASSWD: ALL

И в двата случая идеята е една и съща: файл за оторизация се създава в /etc/sudoers.d За въпросния потребител това може да се направи ръчно с Visudo или чрез скрипт. Някои хора автоматизират това с малки bash скриптове, които копират съответния ред в тази директория, използвайки su -c да пише като root.

Моля, обърнете внимание, че деактивирането на подканите за парола намалява сигурността.Команда, която неволно изпълните (или злонамерен скрипт), ще може да използва sudo без никакви допълнителни бариери.

Персонализиране на въвеждането на парола: Показване на звездички с pwfeedback

По дизайн, въведената със sudo парола не показва нищо на екрана.Без букви или звездички. Това беше замислено като мярка за сигурност, за да се избегне разкриването на дължината на ключа, но много потребители го намират за неудобно.

  Как да изтеглите и инсталирате Opera GX на Linux стъпка по стъпка

В продължение на години sudo позволяваше промяна на това поведение с опцията pwfeedback.Ако го активирате, ще виждате звездичка за всеки въведен символ, когато въвеждате паролата си.

За да го активирате, редактирайте настройките с visudo:

sudo visudo

Във файла добавете ред, подобен на този:

Defaults pwfeedback

Запазване на промените и затварянеОт този момент нататък, когато изпълните команда със `sudo` и тя ви подкани да въведете паролата си, ще видите звездички. Ако някога предпочетете да се върнете към безшумно поведение, просто премахнете този ред от `sudoers`.

Рискове от небрежно използване на sudo и root

Работата със sudo или като root е изключително мощна, но може да бъде и катастрофална. Ако не внимавате. Linux е проектиран да бъде защитен по подразбиране, но когато повишите привилегиите, много от тези предпазни мерки се премахват.

Един от най-очевидните рискове е изтриването на критични системни файлове.Команди като rm -rf / или вариации с неправилно изписани пътища могат да направят системата напълно неизползваема. Дори нещо на пръв поглед невинно като rm -rf "$directorio"/* Може да бъде фатално, ако променливата е празна.

Друга сериозна опасност е стартирането на скриптове или двоични файлове, изтеглени от интернет със sudo, без да ги проверявате.С права на суперпотребител те могат да инсталират руткитове, задни врати и всякакви видове зловреден софтуер, които са много трудни за откриване впоследствие.

Можете също така да нарушите системата, като промените разрешенията на важни файлове.Да играеш такива неща по луд начин /etc/passwd, /boot или самия GRUB с chmod o chown Това може дори да попречи на стартирането на машината, принуждавайки ви да преинсталирате или да използвате разширени инструменти за възстановяване.

Златното правило е ясно: когато използвате sudo или като root, помислете два пъти, преди да натиснете Enter.И, когато е възможно, копирайте команди от надеждни източници, прочетете ги и разберете какво правят.

Деактивирайте или ограничете root акаунта, като задържите sudo

В много споделени среди е желателно да се ограничи директното използване на root акаунта.Ако root паролата се споделя между твърде много хора, всеки може да направи значителни промени в системата без никаква проследимост.

Често срещана стратегия е блокирането на root акаунта. така че да не може да се влезе директно или да се използва su с него, но все пак позволява на определени потребители да използват sudo. Например:

sudo passwd -l root

Тази команда заключва root паролата.Няма да можете да влезете като root от login или да използвате su, за да превключите към него без валидна парола, но потребителите, оторизирани в групата sudo (или с правила в sudoers), все още ще могат да изпълняват администраторски команди.

Ако искате да активирате отново root достъпа по-късноПросто задайте нова парола, използвайки passwd root от среда с подходящи привилегии (например режим на възстановяване).

Алтернативни команди и свързани инструменти: your и doas

Освен sudo и su, алтернативна команда, наречена doas, става популярна в някои системи (и run0, заместител на sudo), вдъхновен от OpenBSD и с по-проста и минималистична философия.

Doas обикновено не се инсталира по подразбиране.Следователно, нормалната процедура е да се включи от хранилищата и след това да се създаде конфигурационният му файл. /etc/doas.conf. Основен пример би бил:

sudo apt-get install doas
sudo nano /etc/doas.conf

В този файл можете да дефинирате много прости правила, например:

permit nopass manz

Този ред показва, че потребителят „manz“ може да използва DOAS без парола.. Можете също да използвате deny да блокира или да конфигурира по-фини разрешения, но философията е, че синтаксисът трябва да бъде по-директен от този на sudoers.

Въпреки това, в повечето Linux дистрибуции де факто стандартът остава sudo., поради своята гъвкавост, голямото количество налична документация и интеграцията си с инструменти за одит.

Овладяването на използването на sudo в Linux ви позволява да преминавате плавно между нормалните потребителски задачи и административните задължения.Поддържането на системната сигурност чрез избягване на постоянни root сесии и адаптиране на разрешенията на всеки акаунт към реалните му нужди; разбирането на разликата между `sudo` и `sudo`, знанието как да се манипулира `sudo` с `visudo`, контролирането на опции като `pwfeedback` или `NOPASSWD` и осъзнаването на рисковете от лошо изпълнена команда са това, което отличава „просто изпробване на команди“ от отговорното управление на Linux система.

Създайте сигурна WSL среда
Свързана статия:
Как да създадете сигурна и добре конфигурирана WSL 2 среда