root-shell

Kung paano ipaalam sa mga gumagamit na ligtas na i-edit ang mga file gamit ang sudoedit sa Linux

Kung paano ipaalam sa mga gumagamit na ligtas na i-edit ang mga file gamit ang sudoedit sa Linux

Ipagpalagay na ikaw ay isang tagapangasiwa ng system sa isang kumpanya kung saan karamihan sa mga koponan ay nagtatrabaho sa Linux na may limitadong mga pribilehiyo. Ngayon isipin ang isang sitwasyon kung saan ang mga miyembro ng isa sa mga koponan - bilang bahagi ng ilang bagong gawain - kailangang madalas na mag-edit ng isang file na nangangailangan ng mga pribilehiyo ng superuser. Ano ang gagawin mo?

Ang isang pagpipilian ay upang bigyan sila ng pag-access sa 'sudo', ngunit magiging tulad ng pagbibigay ng isang hindi kilalang tao sa pag-access sa iyong kumpletong tahanan kapag ang lahat ng hinihiling nila ay nasa isa lamang sa iyong mga silid - ang ibig kong sabihin ay, default na pag-access ng 'sudo' hayaan silang gumawa ng anumang bagay na nangangailangan ng mga pribilehiyo sa ugat, kung ang lahat ng kinakailangan ay ang kakayahang mag-edit ng isang tiyak na file ng system.

Ibinigay ang uri ng kakayahang umangkop ng 'sudo' na alok, ang iba pang pagpipilian na mayroon ka ay ang pag-tweak ang patakaran ng 'sudo' sa isang paraan na tanging pribilehiyo na i-edit ang file na pinag-uusapan ay ipinagkaloob. Halimbawa, tulad nito:

% newsudo LAHAT = vim / path / to / file

Habang walang alinlangan na isang mas mahusay na solusyon kaysa sa pagbibigay ng kumpletong pag-access sa sudo, mayroon pa ring isang loophole na maaaring samantalahin ng isang tao.

Upang maunawaan ang pinag-uusapan ko, isaalang-alang ang isang senaryo kung saan-sa nabanggit na limitadong pag-access ay ibinibigay sa grupo, at isang tao ang magbubukas ng file na pinag-uusapan para sa pag-edit gamit ang utos na 'sudo'.

Ngayon, ang isang matalinong isip na may mahusay na kaalaman sa vim ay malalaman na maaari silang maglunsad ng isang bagong shell mula sa loob ng editor - ang kailangan lang nilang gawin ay patakbuhin ang sumusunod na vim na utos:

: shell

Ito ay agad na ilalagay ka sa isang interactive na shell. Kung sinusubukan mo ang mga hakbang na ito sa iyong makina, isakatuparan mo lamang ang utos na 'whoami' at mauunawaan mo kung ano ang pinag-uusapan ko - Oo, ikaw ay nasa shell bilang ugat.

Narito ang screenshot ng halimbawa:

Hindi na kailangang sabihin, ang layunin ng pagbibigay ng pag-edit ng access sa isang solong file lamang ay natalo, at ang gumagamit ay maaaring gumawa ng ANUMANG ngayon.

Tingnan natin kung may iba pang pagpipilian na mayroon tayo. May umiiral na isang NOEXEC na tag na maaari mong gamitin sa iyong sudoers entry:

% newsudo LAHAT = NOEXEC: vim / path / to / file

WALANG nagbibigay-daan ang NOEXEC upang maiwasan ang isang programa na pinapatakbo ng sudo mula sa pagsasagawa ng anumang iba pang mga programa. Kaya, ito ba ang pangwakas na solusyon? Ikinalulungkot kong hindi. Tulad ng para sa mga kadahilanan, narito kung paano ang manu-manong sudoers nagpapaliwanag ng tag na ito:

noexec
Maraming mga system na sumusuporta sa ibinahaging mga aklatan ay may kakayahang mag-override default na mga function ng library sa pamamagitan ng pagturo ng isang variable ng kapaligiran (karaniwang LD_PRELOAD) sa isang kahaliling ibinahaging library. Sa ganitong mga sistema, maaaring magamit ang pag-andar ng noexec ng sudo upang maiwasan ang isang programa na pinapatakbo ng sudo mula sa pagsasagawa ng anumang iba pang mga programa. Gayunpaman, tandaan na nalalapat lamang ito sa mga katutubong executable na nauugnay sa dinamikong katutubong. Ang mga statically-link na executable at dayuhang executable na tumatakbo sa ilalim ng binary emulation ay hindi apektado.
Ang tampok na noexec ay kilala upang gumana sa SunOS, Solaris, * BSD, Linux, IRIX, Tru64 UNIX, MacOS X, HP-UX 11.x at AIX 5.3 at sa itaas. ... ... ... Upang paganahin ang noexec para sa isang utos, gamitin ang NOEXEC na tag bilang dokumentado sa seksyon ng Pagtutukoy ng Gumagamit sa itaas. Narito ang halimbawa na muli: aaron shanty = NOEXEC: / usr / bin / higit pa, / usr / bin / vi Pinapayagan nito ang user aaron na tumakbo / usr / bin / higit pa at / usr / bin / vi na pinagana ang noexec. Pipigilan nito ang dalawang utos na ito sa pagsasagawa ng iba pang mga utos (tulad ng isang shell). Kung hindi ka sigurado kung kaya o hindi ang iyong system ay may kakayahang suportahan ang noexec maaari mo lamang itong subukan ito at suriin kung ang pag-ikot ng shell ay gumagana kapag ang pagpapaandar ng noexec.
Tandaan na ang paghihigpit sa pag-iwas sa shell ay hindi isang panacea. Ang mga programa na tumatakbo bilang ugat ay may kakayahan pa rin sa maraming potensyal na mapanganib na operasyon (tulad ng pagbabago o pag-overwriting ng mga file) na maaaring humantong sa hindi sinasadya na paglala ng pribilehiyo. ... ... ...

Kung maingat mong basahin ang teksto na naka-highlight nang matapang, malalaman mo na ang NOEXEC ay may sariling hanay ng mga limitasyon.

Kaya, ano ang pinaka maaasahang solusyon pagkatapos? Aba, ito na sudoedit. Kahit na ang manu-manong sudoers ay inirerekomenda din ang tool na ito:

Sa tiyak na kaso ng isang editor, ang isang mas ligtas na diskarte ay upang bigyan ang pahintulot ng gumagamit na magpatakbo ng sudoedit.

Sudoedit

Ang Sudoedit ay isang built-in na utos na nagbibigay-daan sa mga gumagamit na ligtas na mag-edit ng mga file. Ayon sa pahina ng tao ng sudo, ang 'sudoedit' ay katumbas ng pagpapatupad ng 'sudo' na may pagpipilian na command na '-e'.

Bakit mas mabuti

Sa pamamagitan ng 'sudoedit', ang mga gumagamit ay may pagpipilian na gamitin ang kanilang ginustong editor - na hindi katulad ng solusyon na tinalakay namin sa simula ng tutorial na ito kung saan-sa mga gumagamit ay pinipilit na gamitin ang Vim editor - pinapayagan silang masiyahan sa kanilang sariling mga pagpapasadya. At ang pinakamalaking kadahilanan ng lahat, na may 'sudoedit', i-edit ng gumagamit ang file bilang kanilang sarili, at hindi 'ugat'.

Paano gumagana ang Sudoedit

Upang magamit ang sudoedit, ang pagpasok sa mga sudoer ay dapat, halimbawa, isang bagay na tulad nito:

newsudo LAHAT = sudoedit / landas / sa / file

At ang mga gumagamit na bahagi ng pangkat ng 'newsudo' ay mai-edit ang file sa pamamagitan ng pagpapatakbo ng sumusunod na utos:

sudoedit / landas / sa / file

Kaya kung ano ang gagawin ng utos na ito, gagawa muna ito ng isang pansamantalang kopya ng file na nais mong i-edit. Pagkatapos, hahanapin ng utos ang mga variable na kapaligiran ng SUDO_EDITOR, VISUAL at EDITOR (sa pagkakasunud-sunod) upang matukoy kung aling editor ang dapat tawagan upang buksan ang pansamantalang kopya na nilikha lamang. Matapos magawa ang gumagamit sa gawaing pagbabago, ang mga pagbabago ay kinopya pabalik sa orihinal na file.

Narito ang detalyadong paliwanag mula sa pahina ng utos ng 'sudo':

-e, --edit 
I-edit ang isa o higit pang mga file sa halip na tumakbo ng isang utos. Bilang kapalit ng isang pangalan ng landas, ang string na "sudoedit" ay ginagamit kapag kumunsulta sa patakaran sa seguridad. Kung ang gumagamit ay pinahintulutan ng patakaran, ang mga sumusunod ay kukuha ng: 1. Ang mga pansamantalang kopya ay ginawa ng mga file na mai-edit kasama ang may-ari sa nakatakdang gumagamit. 2. Ang editor na tinukoy ng patakaran ay tatakbo upang mai-edit ang pansamantalang mga file. Ang patakaran ng sudoers ay gumagamit ng mga variable na kapaligiran ng SUDO_EDITOR, VISUAL at EDITOR (sa pagkakasunud-sunod). Kung wala sa SUDO_EDITOR, VISUAL o EDITOR ang nakatakda, ginamit ang unang programa na nakalista sa editor ng sudoers (5). 3. Kung nabago ang mga ito, ang pansamantalang mga file ay kinopya pabalik sa kanilang orihinal na lokasyon at tinanggal ang mga pansamantalang bersyon. Kung ang tinukoy na file ay hindi umiiral, malilikha ito. Tandaan na hindi tulad ng karamihan sa mga utos na pinapatakbo ng sudo, ang editor ay pinapatakbo kasama ang kapaligiran ng gumagamit ng invoking na hindi nabago. Kung, sa ilang kadahilanan, hindi mai-update ng sudo ang isang file na may na-edit na bersyon, tatanggap ang gumagamit ng isang babala at ang na-edit na kopya ay mananatili sa isang pansamantalang file.

Konklusyon

Sa ngayon, dapat kang magkaroon ng isang pangunahing ideya tungkol sa 'sudoedit', kasama na kung kailan ito gagamitin, at kung bakit ito ay mas mahusay kaysa sa paggamit ng 'sudo' kapag ang lahat ng gusto mo ay mag-edit ng isang file, o ng ilang mga file. Siyempre, tulad ng anumang iba pang tool na may kaugnayan sa seguridad, ang 'sudoedit' ay nagkaroon ng bahagi ng mga pagsasamantala, ngunit isang rekomendasyong solusyon pa rin sa maraming mga kaso ng paggamit.

pinagmulan

Mag-iwan ng komento