Buong Gabay sa sudo: Paggamit, Config, at Pag-aayos

目次

1. Paunang Salita: Ano ang sudo?

Kahulugan at Papel ng sudo

Sa mga systema ng Linux at Unix, 「sudo」 ay isa sa mga napakahalagang utos.
sudo」 ay pinaikling anyo ng 「superuser do」, isang tool para pansamantalang hiramin ang mga karapatan ng administrador (root) upang magpatakbo ng utos. Karaniwan, ang mga karaniwang user ay walang pahintulot na magsagawa ng mga operasyon na makakaapekto sa buong systema (tulad ng pag-install ng mga pakete o pagbabago ng mga setting ng systema). Gayunpaman, sudo command ay nagbibigay-daan upang limitadong isakatuparan ang mga ganitong pribilehiyong operasyon.

Halimbawa, sa pamamagitan ng pagpapatakbo ng utos tulad ng nasa ibaba, maaari mong patakbuhin ang apt command na may root na karapatan.

sudo apt update

Sa ganitong paraan, ang sudo ay 「isang mekanismo para ligtas na gamitin ang mga karapatan ng administrador」 bilang naglilingkod upang pagsamahin ang seguridad at kaginhawahan ng systema.

Pagkakaiba sa su command

suo at isang command na katulad nito ay su, ngunit may malinaw na pagkakaiba ang dalawang ito.

  • su ay pinaikling bersyon ng “substitute user” at isang utos na ginagamit upang lumipat sa ibang user (karaniwang root) para sa utos. su ay ginagamit upang ganap na mag-imitate ng tinukoy na user sa pagganap ng mga operasyon.
  • Sa kabilang banda, sudo ay nagsasagawa ng mga utos nang pansamantalang humiram ng pribilehiyo ng administrador habang nananatili bilang kasalukuyang gumagamit.

Sa madaling salita, ang su ay paraan ng pagpapalit ng session, samantalang ang sudo ay paraan ng pag-elevate ng karapatan sa antas ng utos. Ang pagkakaibang ito ay malaki rin sa aspeto ng seguridad; mas madaling pamahalaan ang kasaysayan ng mga operasyon gamit ang sudo, at sa mga modernong distribusyon, ang sudo na ang itinuturing na pamantayan.

Mga Kilalang Linux Distribution na Gumagamit ng sudo

Sa maraming Linux distribution, sudo ay default na ginagamit, at partikular sa mga sumusunod na distribution, ito ay inaasahan.

  • Ubuntu-based (Ubuntu, Linux Mint, atbp.)→ Sa paunang estado, huwag mag-log in nang direkta sa root account, at pamahalaan gamit ang sudo.
  • Debian-based→ sudo may be enabled later in some cases, but it is often recommended as a security policy.
  • Fedora, CentOS, at ang pamilya ng Red Hat→ maaaring gamitin ang root account, ngunit karaniwan din ang paggamit ng sudo.

Lalo na sa Ubuntu, ang root account ay naka-disable sa default, at lahat ng administratibong operasyon ay ginagawa sa pamamagitan ng sudo, kaya ang pag-unawa sa sudo ay mahalaga para sa mga Ubuntu user.

Bakit hinahanap ang “sudo sudo”?

Ang keyword na “sudo sudo” ay maaaring mukhang labis, ngunit ito ay hinahanap dahil sa mga sumusunod na layunin:

  • sudo ang mga baguhan na nais malaman ang kahulugan at paggamit ng sudo, nag-input ng paulit-ulit para sa layuning bigyang-diin
  • sudoNaranasan ang problema sa paggamit ng sudo (halimbawa: sudo: sudo: command not found) at naghahanap.
  • Sa mga script at pipeline, nagtanong ako nang makita ko ang isang halimbawa kung saan dalawang beses na ginamit ang sudo.

Sa pag-unawa sa ganitong layunin ng paghahanap, sa mga susunod na kabanata ay detalyadong tatalakayin ang tamang paggamit, pag-configure, at pag-aayos ng mga problema ng sudo.

侍エンジニア塾

2. Pangunahing Paggamit ng sudo Command

Pangunahing Sintaks ng sudo

sudoAng pangunahing format ng sudo ay napakasimple.

sudo [opsyon] command

Halimbawa, kung nais mong i-update ang impormasyon ng mga pakete ng sistema, gawin ito:

sudo apt update

Ang command na ito ay nangangahulugang ‘apt update’ ay isasagawa nang may root na pribilehiyo.

Mekanismo ng Pagpapatunay ng Password at Cache

Sa unang paggamit ng sudo, o pagkatapos ng ilang oras, hihingin ng sistema ang pagpasok ng password ng user. Ito ay mekanismo para mapataas ang seguridad, upang maiwasan ang maling operasyon o maling paggamit ng ibang tao.

Pagkatapos ilagay ang password, ito ay naka-cache para sa ilang oras (default 5 minuto sa Ubuntu), kaya kapag muling gagamit ng sudo, maaaring laktawan ang pagpasok ng password. Maaaring baguhin ang oras na ito sa sudoers file.

Mga Madalas Gamitin na Opsyon

sudo ay may maraming opsyon upang gawing mas maginhawa at flexible ang paggamit. Narito ang ilan sa mga karaniwang ginagamit.

-u (patakbuhin bilang ibang user)

Sa default, ito ay root, pero gamit ang -u option, maaari mong patakbuhin ang command bilang anumang user.

sudo -u www-data whoami

Ang resulta ay www-data, na nagpapatunay na ang command ay pinatakbo bilang www-data, hindi bilang sarili mo.

-s (magbukas ng shell)

Sa pamamagitan ng sumusunod na command, maaari mong pansamantalang buksan ang isang shell na may root na pribilehiyo.

sudo -s

Gayunpaman, kailangan mag-ingat kapag gumagawa ng operasyon bilang root.

-i (ganap na pag-login bilang root user)

Ito ay nagre-recreate ng mas kumpletong root environment. Ang mga environment variable ay nagbabago rin sa root, kaya nagiging katulad ito ng root session agad pagkatapos mag-login.

sudo -i

-l (tingnan ang mga maaaring patakbuhing command)

Maaari mo ring tingnan kung aling mga command ang maaari mong patakbuhin gamit ang sudo.

sudo -l

Ito ay nakakatulong sa pag-verify ng mga security restriction at pagsubok ng mga permission settings.

Mga Punto na Dapat Tandaan ng mga Baguhan

  • sudo requires a space afterward. Example: sudoapt is incorrect.
  • Kung nais mong magpatakbo ng maraming utos, kailangan mong balutin ang buong utos sa mga quote (" o ') o paghiwalayin ito ng mga semicolon.
  • sudo If you run a GUI app with it attached, there is a possibility that the configuration file may be corrupted, so caution is needed (e.g., sudo gedit etc.).

3. sudoers file at kontrol ng access

Ano ang sudoers file?

sudo Ang configuration file na kumokontrol sa pag-andar ng command ay nasa loob ng system na /etc/sudoers. Sa file na ito, Sino ang maaaring magpatakbo ng anong uri ng command gamit ang sudo ay tinukoy.

Halimbawa, posible ang detalyadong kontrol ng access kung pahihintulutan lamang ang isang user na magpatakbo ng tiyak na command gamit ang sudo.
Sa pamamagitan ng flexibility na ito, pagbibigay lamang ng minimal na karapatan sa user ay naipapatupad ang prinsipyo ng seguridad (principle ng least privilege).

Ligtas na pag-edit gamit ang visudo command

/etc/sudoers ay, hindi dapat i-edit direkta gamit ang text editor.

Dahil kung may syntax error, hindi na magagamit ang sudo mismo, at mahirap ibalik. Dahil dito, visudo command ay inirerekomenda para sa pag-edit.

sudo visudo

visudo ay nagsasagawa ng syntax check kapag nagsa-save, kaya ligtas ang pag-edit.

Pangunahing syntax at mga halimbawa ng setting

sudoers Ang pangunahing syntax ng sudoers file ay ang mga sumusunod:

Pangalan ng User Pangalan ng Host = (User na tatakbo) Mga command na maaaring ipatupad

Halimbawa:

alice ALL=(ALL:ALL) ALL

Ito ay setting kung saan ang user “alice” ay maaaring magpatakbo ng lahat ng command sa lahat ng host bilang anumang user.

Kung nais magdagdag ng limitasyon:

bob ALL=(ALL) /usr/bin/systemctl restart nginx

Ang setting na ito ay naglilimita kay user “bob” na magpatakbo lamang ng “nginx restart command” gamit ang sudo.

Kontrol sa antas ng grupo: sudo group

Sa maraming distribution tulad ng Ubuntu, ang mga user na kabilang sa sudo group ay binibigyan ng karapatan na gamitin ang sudo.

%sudo   ALL=(ALL:ALL) ALL

Sa ganitong paraan, sa pamamagitan ng pagsulat ng %sudo, posible ang pamamahala sa antas ng grupo.

Upang idagdag ang user sa sudo group, gamitin ang sumusunod na command:

sudo usermod -aG sudo pangalan ng user

Paggamit ng NOPASSWD option at mga paalala

sudo kung nakakainis na magpasok ng password sa bawat pagtakbo, maaaring gamitin ang NOPASSWD option upang laktawan ang pagpasok ng password.

alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

Sa setting na ito, ang user “alice” ay maaaring mag-restart ng nginx nang walang password.

Gayunpaman, dahil tumataas ang panganib sa seguridad, mahalaga na limitahan lamang sa pinakakaunting mga command.
Lalo na, ang kombinasyon ng ALL ay hindi inirerekomenda.

4. Mga advanced na paggamit ng sudo

Pagpapatakbo ng utos bilang isang tiyak na gumagamit

Karaniwan, sudo ay nagpapatakbo ng mga utos na may root na karapatan, ngunit sa pamamagitan ng mga opsyon, maaari ring patakbuhin ang mga utos bilang anumang gumagamit.

Halimbawa, kung nais mong patakbuhin ang utos bilang user “www-data” na ginagamit ng Web server, gawin ito tulad ng sumusunod.

sudo -u www-data whoami

Ang resulta ay www-data, na nagpapatunay na ang utos ay pinatakbo hindi bilang ikaw, kundi bilang www-data.

Ang ganitong paggamit ay kapaki-pakinabang kapag nais mong suriin ang iba’t ibang kapaligiran at karapatan ng bawat user.

Pagsasama ng redirect at pipe

Madaling malito ang mga baguhan sa pagsasama ng sudo at redirect (>) o pipe (|).
Halimbawa, ang sumusunod na utos ay mukhang tama ngunit hindi gumagana ayon sa inaasahan:

sudo echo "test" > /etc/test.conf

Sa kasong ito, ang echo mismo ay pinatakbo ng sudo, ngunit ang redirect > ay isinasagawa gamit ang karapatan ng karaniwang user. Dahil dito, nabigo ang pagsulat.

Ang tamang paraan ay gamitin ang command na tee:

echo "test" | sudo tee /etc/test.conf

Sa ganitong paraan, ang bahagi ng redirect ay pinapatakbo rin ng sudo, kaya naiiwasan ang error.

Paggamit ng sudo sa loob ng script

Kung ang isang shell script ay may mga utos na nangangailangan ng admin privileges, ilagay ang sudo bago ang utos.
Gayunpaman, kung ang script ay nilikha para patakbuhin ng karaniwang user, ilagay lamang ang sudo sa mga kinakailangang bahagi, at iwasan ang pagpapatakbo ng buong script gamit ang sudo para sa kaligtasan.

Halimbawa (install.sh):

#!/bin/bash

echo "Installing package..."
sudo apt install -y nginx

May pattern din na sinusuri kung root ang script sa simula:

if [ "$EUID" -ne 0 ]; then
  echo "Kailangang patakbuhin ang script na ito bilang root"
  exit 1
fi

Sa pamamagitan ng paglagay ng ganitong kontrol, magiging ligtas ang pagpapatakbo ng script.

Mga madalas gamitin na kapaki-pakinabang na utos

  • sudo !!→ I-re-execute ang nakaraang utos na may sudo. Halimbawa:
  apt update
  sudo !!

Ito ay kapareho ng sudo apt update.

  • sudo -k→ Manu-manong nililinis ang password cache ng sudo. Sa seguridad, ito ay kapaki-pakinabang bago pansamantalang iwanan.
  • sudo -v→ Pinapahaba ang sudo na pribilehiyo sa kasalukuyang session. Maginhawa ito sa mga mahabang gawain.

5. Seguridad at Mga Best Practice

Sundin ang Prinsipyo ng Minimum na Pribilehiyo

Ang pangunahing layunin ng paggamit ng sudo ay upang magawang mag-operate sa system gamit ang pinakamaliit na kinakailangang pribilehiyo.
Sa madaling salita, hindi ito tungkol sa pagiging root user na may kakayahang gawin lahat palagi, kundi ang paggamit ng kapangyarihan ng root lamang kapag kailangan at sa kinakailangang saklaw.

Kung susundin ang prinsipyong ito, halimbawa, ang mga sumusunod na setting ay kanais-nais.

  • Ipayagan lamang ang partikular na utos sa sudo para sa user (halimbawa: systemctl restart nginx)
  • Limit the use of NOPASSWD to a minimum.
  • Ang mga gumagamit na may karapatang pang-administrasyon ay pinamamahalaan sa isang grupo (halimbawa: sudo)

Pagre-record ng Log at Auditing

Ang sudo ay nagre-record ng mga pinatakbong utos bilang log. Dahil dito, maaaring tingnan pagkatapos kung sino, anong utos, at kailan ito ginamit.

Ang mga pangunahing destinasyon ng log ay ang mga sumusunod (iba-iba depende sa distribusyon):

  • /var/log/auth.log(Ubuntu, Debian family)
  • journalctl(distribution na may naka-install na systemd)

Halimbawa, upang tingnan ang kasaysayan ng paggamit ng sudo sa Ubuntu:

grep 'sudo' /var/log/auth.log

O kaya:

journalctl _COMM=sudo

Sa ganitong paraan, kahit na may maling o hindi awtorisadong operasyon, maaaring subaybayan kung sino ang gumawa ng ano. Ito ay mahalagang aspeto sa pamamahala ng server.

Aktwal na mga kahinaan ng sudo (CVE-2021-3156)

Ang sudo ay isang napaka-mapagkakatiwalaang tool, ngunit may mga nakaraang ulat ng malubhang kahinaan.

Isang kilalang halimbawa ay ang inilathala noong 2021 na CVE-2021-3156 (kilala bilang: Baron Samedit).
Ito ay isang seryosong kahinaan kung saan, sa pamamagitan ng mapanirang input sa ilang kapaligiran, ang karaniwang user ay maaaring makuha ang root privileges.

Ang problemang ito ay naayos na, ngunit tulad ng ipinapakita ng mga ganitong kaso,

  • Ang mga mahahalagang pakete na kasama ang sudo ay laging panatilihin sa pinakabagong bersyon.
  • official websites and vulnerability databases regularly check

Kailangan ng mga hakbang tulad nito.

Paltan sa sudo: Pagpapakilala sa doas

Sa ilang minimal na Linux environment at sa mga user na nagbibigay-pansin sa seguridad, ginagamit din ang command na doas bilang kapalit ng sudo.

doas ay isang simpleng tool para sa pagtaas ng pribilehiyo na nagmula sa OpenBSD, at may katangiang mas simple ang configuration at mas mataas ang seguridad kumpara sa sudo.

Halimbawa:

doas apt update

Ang configuration file ay isusulat sa /etc/doas.conf. Ang syntax ay simple din, at

permit nopass :wheel

Gaya ng permit nopass :wheel, madaling isulat ang setting na nagpapahintulot sa mga user ng wheel group na gumamit ng doas nang walang password.

Gayunpaman, sa ilang Linux environment, hindi kasama ang doas bilang default, kaya nangangailangan ng kaunting pagsisikap sa pag-install at pag-configure.
Depende sa gamit at layunin, piliin kung alin sa sudo o doas ang mas angkop.

6. Karaniwang mga Error at Pag-troubleshoot

“Ang user ay hindi kasama sa sudoers file” error

username is not in the sudoers file. This incident will be reported.

Ang error na ito ay lumalabas kapagang kasalukuyang user ay walang pahintulot na gumamit ng sudo. Karaniwan, nangyayari ito kapag ang bagong user na hindi idinagdag sa sudo group ay nagpapatakbo ng command.

Solusyon:

  1. Mag-log in bilang ibang user na may pribilehiyo ng root
  2. Idagdag ang target na user sa sudo group
sudo usermod -aG sudo username

Pagkatapos nito, kapag nag‑log in muli sa session, magiging magagamit na ang sudo.

Error na “Permission denied” kapag gumagamit ng redirect o pipe

Permission denied

Ang error na ito ay nangyayari kahit na iniisip mong pinatakbo ang command gamit ang sudo, dahilang redirect o pipe ay isinasagawa sa labas ng sudo.

Maling halimbawa:

sudo echo "test" > /etc/test.conf

Sa kasong ito, angecho ay pinatakbo gamit ang sudo, ngunit ang pagsulat sa file ay ginagawa ng karaniwang user, kaya nagkakaroon ng error.

Tamang paraan:

echo "test" | sudo tee /etc/test.conf

O kung magsusulat ng maraming linya nang sabay, maaaring gamitin angsudo tee o sudo bash -c.

sudo bash -c 'echo "line1" > /etc/test.conf'

Hindi magamit dahil sa maling pag‑edit ng sudoers file

sudores file na direktang ini‑edit at nagkaroon ng syntax error, maaaring hindi na magamit ang sudo mismo. Ito ay napakadelikado.

Solusyon:

  1. Mag-log in gamit ang root account (tandaan na ito ay hindi pinagana sa default sa Ubuntu)
  2. Ayusin gamit ang sumusunod na utos
pkexec visudo

pkexec ay hindi magagamit, kailangan mong mag‑boot sa recovery mode at iayos ang file /etc/sudoers.

At para maiwasan ang syntax error, siguraduhing gamitin ang sumusunod kapag nag‑eedit:

sudo visudo

“sudo: command not found”

sudo: command not found

Ang error na ito ay nangyayari kapag ang sudo ay hindi naka‑install sa system o hindi matatagpuan dahil sa problema sa sudo o PATH environment variable.

Solusyon:

  • Mag-log in gamit ang root na pribilehiyo, at muling i-install ang sudo tulad ng sumusunod.

apt update apt install sudo

  • o /usr/bin/sudo tukuyin ang direktang landas at patakbuhin

/usr/bin/sudo ls

7. FAQ: Mga Karaniwang Tanong tungkol sa sudo

Q1. Ano ang pagkakaiba ng sudo at su?

A:
sudo ay “pansamantalang nagpapatakbo ng isang tiyak na utos na may pribilehiyong administrador” kumpara sa su na “lumilipat sa buong user (karaniwang root)” na command.

  • sudo: habang nananatili ang kasalukuyang user, tumaas lamang ang ilang operasyon sa pribilehiyo
  • su: magpalit ng buong tagagamit

Mula sa pananaw ng seguridad at kasaysayan ng mga operasyon, kamakailan ay inirerekomenda ang paggamit ng sudo.

Q2. Kailangan ba ang password ng root kapag gumagamit ng sudo?

A:
Hindi, karaniwan ay hindi mo ilalagay ang hindi ang password ng root, kundi ang password ng sarili mong kasalukuyang naka-login.
Ito ay upang mabawasan ang panganib ng paglabas ng password ng root at upang mas madaling masubaybayan ang kasaysayan ng mga operasyon ng user.

Q3. Saan nakatala ang mga log ng sudo?

A:
Sa maraming Linux distribution, ang mga log ng operasyon na ginawa ng sudo ay itinatala sa isa sa mga sumusunod:

  • Ubuntu/Debian-based: /var/log/auth.log
  • RHEL/CentOS na serye: /var/log/secure
  • Sa pangkalahatang kapaligiran ng systemd: journalctl _COMM=sudo

Sa ganitong paraan, kahit na may maling operasyon o pagkakamali, maaaring subaybayan kung sino ang gumawa ng ano.

Q4. Nakapag-edit ako nang mali sa sudoers file. Ano ang dapat gawin?

A:
Una, siguraduhing gamitin ang sudo visudo bago mag-edit.
Kung dahil sa syntax error atbp. ang sudo ay hindi magamit, subukan ang isa sa mga sumusunod na paraan para ayusin.

  • Mag-log in gamit ang root account, at i-edit gamit ang visudo
  • Kung Ubuntu, i-start bilang root mula sa recovery mode at ayusin.
  • pkexec visudopolkit na may aktibong polkit na kapaligiran)

Ang syntax error ay maaaring makaapekto sa buong sistema, kaya pagkatapos ayusin, magsagawa muli ng pagsubok.

Q5. May paraan ba para makakuha ng root privileges nang hindi gumagamit ng sudo?

A:
Mayroon, ngunit hindi inirerekomenda dahil mataas ang panganib sa seguridad.

Halimbawa:

  • suI-switch sa root gamit ang command (kailangan ang root password)
  • Mag-log in nang direkta gamit ang root account (hindi pinagana sa default sa Ubuntu)

Sa maraming Linux distribution, may patakaran na iwasan ang direktang paggamit ng root account, at mas ligtas na gamitin ang sudo.

Q6. Ligtas ba na magpatakbo ng GUI app gamit ang sudo?

A:
Sa pangkalahatan, mas mabuting iwasan ito. Halimbawa, kung patakbuhin mo ang sudo gedit, maaaring magsulat ng mga file ng GUI na setting gamit ang root privileges, na maaaring magdulot ng hindi pagkakasundo sa permissions o pinsala sa mga setting.

Kung gagamit ng GUI, inirerekomenda na gamitin ang gksudo o pkexec tulad ng sumusunod (bagaman ang mga tool na ito ay maaaring hindi inirerekomenda o hindi pa naka-install depende sa kapaligiran):

pkexec gedit

8. Buod

Unawain nang tama ang papel ng sudo

Sa artikulong ito, tinalakay namin nang malawakan ang «sudo» na isang napakahalagang utos sa mga Linux at Unix-like na sistema, tungkol sa mga pangunahing papel, paggamit, paraan ng pagtatakda, aplikasyon, mga hakbang sa seguridad, karaniwang error, at FAQ.

sudo ay hindi lamang basta «ilalagay bago ang utos», kundi isang mekanismo ng mahalagang kontrol sa access na nagbibigay-daan sa kinakailangang gawain habang pinapanatili ang seguridad ng sistema.

Ang tamang paggamit ay pumipigil sa mga problema

Lalo na ang pagtuon sa mga sumusunod na punto ay susi upang magamit nang ligtas ang sudo.

  • Mag-operate gamit ang pinakamaliit na kinakailangang pribilehiyo (prinsipyo ng pinakamaliit na pribilehiyo)
  • visudo Gamitin ang visudo upang ligtas na pamahalaan ang mga setting
  • Gamitin ang mga log upang suriin at pamahalaan ang kasaysayan ng operasyon.
  • Kapag pinagsama sa mga pipe at redirect, mag-ingat sa pag-andar.
  • Iwasan ang paggamit nito sa GUI application.

Kung hindi nauunawaan ang mga puntong ito, maaaring magdulot ito ng mga problema tulad ng “nasira ang file”, “hindi naibalik ang mga setting”, o “hindi na gumagana ang sudo”.

Pumili ng istilong angkop sa iyong pamamahala ng sistema

Ang Linux ay napaka-flexible na sistema. Hindi lamang sudo ang maaaring gamitin, kundi maaari ring gumamit ng mga alternatibong tool tulad ng doas kung kinakailangan.
Ayon sa patakaran sa pamamahala at seguridad, piliin ang istilong angkop sa iyo, at itakda at pamahalaan nang tama upang magdulot ng mas mahusay na pamamahala ng sistema.

Sa huli

sudo ay unang hakbang sa pag-unawa sa unang hakbang sa pag-unawa sa Linux.
Hindi ito basta isang maginhawang utos, kundi isang “susi” na nagpoprotekta sa buong sistema; mangyaring kunin ang tamang kaalaman at paggamit.

Sa susunod na paggamit mo ng Linux, nawa’y maging mas tiwala ka sa bawat utos na iyong isinasagawa.

侍エンジニア塾