Mga pahintulot sa Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Kamusta kayong lahat. Isa itong pagsasalin ng isang artikulo mula sa aklat na RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 at EX300.

Itulak: Umaasa ako na ang artikulo ay magiging kapaki-pakinabang hindi lamang para sa mga nagsisimula, ngunit makakatulong din sa mas maraming karanasan na mga administrador na i-streamline ang kanilang kaalaman.

Kaya umalis na tayo.

Mga pahintulot sa Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Upang ma-access ang mga file sa Linux, ginagamit ang mga pahintulot. Ang mga pahintulot na ito ay itinalaga sa tatlong bagay: ang may-ari ng file, ang may-ari ng grupo, at isa pang bagay (iyon ay, lahat ng iba pa). Tuturuan ka ng artikulong ito kung paano mag-apply ng mga pahintulot.

Nagsisimula ang artikulong ito sa isang pangkalahatang-ideya ng mga pangunahing konsepto, na sinusundan ng talakayan ng Mga Espesyal na pahintulot at Mga Listahan ng Kontrol sa Pag-access (Mga ACL). Sa dulo ng artikulong ito, sinasaklaw namin ang pagtatakda ng mga default na pahintulot sa pamamagitan ng umask, pati na rin ang pamamahala sa mga attribute ng pinalawak na user.

Pamamahala ng pagmamay-ari ng file

Bago talakayin ang mga pahintulot, dapat mong malaman ang tungkulin ng may-ari ng file at direktoryo. Ang pagmamay-ari ng mga file at direktoryo ay mahalaga sa pagharap sa mga pahintulot. Sa seksyong ito, malalaman mo muna kung paano mo makikita ang may-ari. Matututunan mo pagkatapos kung paano baguhin ang may-ari ng grupo at user para sa mga file at direktoryo.

Pagpapakita ng may-ari ng isang file o direktoryo

Sa Linux, ang bawat file at bawat direktoryo ay may dalawang may-ari: isang user at isang may-ari ng grupo.

Nakatakda ang mga may-ari na ito kapag ginawa ang file o direktoryo. Ang user na lumikha ng file ay nagiging may-ari ng file na ito, at ang pangunahing pangkat kung saan kabilang ang parehong user ay magiging may-ari din ng file na ito. Upang matukoy kung ikaw bilang isang user ay may mga karapatan sa pag-access sa isang file o direktoryo, sinusuri ng shell ang pagmamay-ari.

Nangyayari ito sa sumusunod na pagkakasunud-sunod:

  1. Sinusuri ng shell kung ikaw ang may-ari ng file na gusto mong i-access. Kung ikaw ang may-ari, makakakuha ka ng mga pahintulot at huminto ang shell sa pagsuri.
  2. Kung hindi ikaw ang may-ari ng file, titingnan ng shell kung miyembro ka ng isang pangkat na may mga pahintulot sa file. Kung miyembro ka ng pangkat na ito, maa-access mo ang file na may mga pahintulot na itinakda ng grupo, at hihinto sa pagsuri ang shell.
  3. Kung hindi ka gumagamit o may-ari ng grupo, makakatanggap ka ng Iba pang mga karapatan ng gumagamit.

Upang makita ang kasalukuyang mga pagtatalaga ng may-ari, maaari mong gamitin ang command ls -l. Ipinapakita ng command na ito ang user at may-ari ng grupo. Sa ibaba makikita mo ang mga setting ng may-ari para sa mga direktoryo sa direktoryo ng /home.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

Gamit ang command ls maaari mong ipakita ang may-ari ng mga file sa isang ibinigay na direktoryo. Minsan maaari itong maging kapaki-pakinabang upang makakuha ng isang listahan ng lahat ng mga file sa system na may ibinigay na user o grupo bilang may-ari. Para dito maaari mong gamitin mahanap. Pangangatwiran hanapin -user maaaring gamitin para sa layuning ito. Halimbawa, ang sumusunod na command ay naglilista ng lahat ng mga file na pag-aari ng user na si linda:

find / -user linda

Maaari mo ring gamitin mahanap para maghanap ng mga file na may partikular na grupo bilang may-ari nito.

Halimbawa, hinahanap ng sumusunod na command ang lahat ng file na kabilang sa grupo gumagamit:

find / -group users

Pagbabago ng pagmamay-ari

Upang mailapat ang naaangkop na mga pahintulot, ang unang bagay na dapat isaalang-alang ay ang pagmamay-ari. May utos para dito chown. Ang syntax ng command na ito ay madaling maunawaan:

chown ΠΊΡ‚ΠΎ Ρ‡Ρ‚ΠΎ

Halimbawa, binago ng sumusunod na utos ang may-ari ng direktoryo ng /home/account sa user na si linda:

chown linda /home/account

Koponan chown ay may ilang mga opsyon, isa sa mga ito ay partikular na kapaki-pakinabang: -R. Maaari mong hulaan kung ano ang ginagawa nito dahil ang pagpipiliang ito ay magagamit din para sa maraming iba pang mga utos. Nagbibigay-daan ito sa iyong muling itakda ang may-ari, na nagbibigay-daan sa iyong itakda ang may-ari ng kasalukuyang direktoryo at lahat ng nasa ibaba. Ang sumusunod na utos ay nagbabago ng pagmamay-ari ng /home na direktoryo at lahat ng nasa ibaba nito sa linda user:

Ngayon ang mga may-ari ay ganito ang hitsura:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

Ating gawin:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Ngayon ang user na si lisa ay naging may-ari ng direktoryo ng account:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

Baguhin ang may-ari ng grupo

Mayroong dalawang paraan upang baguhin ang pagmamay-ari ng isang grupo. Magagawa mo ito gamit ang chown, ngunit mayroong isang espesyal na utos na pinangalanan chgrpna gumagawa ng trabaho. Kung gusto mong gamitin ang command chown, gamitin . o : sa harap ng pangalan ng grupo.

Binabago ng sumusunod na command ang sinumang may-ari ng /home/account group sa account group:

chown .account /home/account

pwede mong gamitin chown upang baguhin ang may-ari ng isang user at/o grupo sa maraming paraan. Narito ang ilang halimbawa:

  • chown lisa myfile1 itinatakda ang user na si lisa bilang may-ari ng myfile1.
  • chown lisa.sales myfile itinatakda ang user na si lisa bilang may-ari ng myfile file, at itinatakda din ang pangkat ng mga benta bilang may-ari ng parehong file.
  • chown lisa:sales myfile katulad ng naunang utos.
  • chown .sales myfile itinatakda ang pangkat ng pagbebenta bilang may-ari ng myfile nang hindi binabago ang may-ari ng user.
  • chown :sales myfile katulad ng naunang utos.

Maaari mong gamitin ang utos chgrppara baguhin ang may-ari ng grupo. Isaalang-alang ang sumusunod na halimbawa, kung saan mo magagamit chgrp itakda ang may-ari ng direktoryo ng account sa pangkat ng mga benta:

chgrp .sales /home/account

Kagaya ng chown, maaari mong gamitin ang opsyon -R с chgrp, pati na rin ang paulit-ulit na palitan ang may-ari ng grupo.

Pag-unawa sa Default na May-ari

Maaaring napansin mo na kapag ang isang user ay lumikha ng isang file, ang default na pagmamay-ari ay inilalapat.
Ang user na gumagawa ng file ay awtomatikong nagiging may-ari ng file na iyon, at ang pangunahing grupo ng user na iyon ay awtomatikong nagiging may-ari ng file na iyon. Kadalasan ito ang pangkat na nakalista sa /etc/passwd file bilang pangunahing pangkat ng user. Gayunpaman, kung miyembro ng maraming grupo ang isang user, maaari nilang baguhin ang epektibong pangunahing pangkat.

Upang ipakita ang kasalukuyang epektibong pangunahing pangkat, maaaring gamitin ng user ang command grupo:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Kung gusto ng kasalukuyang gumagamit ng linda na baguhin ang epektibong pangunahing pangkat, gagamitin niya ang utos newgrpna sinusundan ng pangalan ng pangkat na gusto niyang itakda bilang bagong epektibong pangunahing pangkat. Matapos gamitin ang utos newgrp ang pangunahing pangkat ay magiging aktibo hanggang sa magpasok ang user ng isang command lumabas o hindi mag log out.

Ipinapakita ng sumusunod kung paano ginagamit ng user na si linda ang command na ito, na may mga benta bilang pangunahing pangkat:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

Pagkatapos baguhin ang epektibong pangunahing pangkat, lahat ng bagong file na ginawa ng user ay magkakaroon ng pangkat na iyon bilang may-ari ng pangkat. Upang bumalik sa orihinal na setting ng pangunahing pangkat, gamitin lumabas.

Upang magamit ang utos newgrp, ang user ay dapat na miyembro ng pangkat na gusto niyang gamitin bilang pangunahin. Bilang karagdagan, ang isang password ng grupo ay maaaring gamitin para sa isang grupo gamit ang command gpasswd. Kung ang gumagamit ay gumagamit ng command newgrpngunit hindi miyembro ng target na grupo, ang shell ay nag-prompt para sa password ng grupo. Kapag naipasok mo na ang tamang password ng grupo, magtatakda ng bagong epektibong pangunahing grupo.

Pamamahala ng mga pangunahing karapatan

Ang sistema ng pahintulot ng Linux ay naimbento noong 1970s. Dahil ang mga pangangailangan sa pag-compute ay limitado sa mga taong iyon, ang pangunahing sistema ng pahintulot ay medyo limitado. Gumagamit ang sistema ng pahintulot na ito ng tatlong pahintulot na maaaring ilapat sa mga file at direktoryo. Sa seksyong ito, matututunan mo kung paano gamitin at baguhin ang mga pahintulot na ito.

Pag-unawa sa Pagbasa, Pagsulat, at Pagpapatupad ng Mga Pahintulot

Ang tatlong pangunahing pahintulot ay nagbibigay-daan sa iyo na magbasa, magsulat, at magsagawa ng mga file. Nag-iiba ang epekto ng mga pahintulot na ito kapag inilapat sa mga file o direktoryo. Kapag inilapat sa isang file, ang pahintulot sa pagbasa ay nagbibigay sa iyo ng karapatang buksan ang file para sa pagbabasa. Samakatuwid, maaari mong basahin ang mga nilalaman nito, ngunit nangangahulugan ito na maaaring buksan ng iyong computer ang file upang gumawa ng isang bagay dito.

Ang isang program file na nangangailangan ng access sa isang library ay dapat, halimbawa, ay may read access sa library na iyon. Kasunod nito na ang pahintulot sa pagbasa ay ang pinakapangunahing pahintulot na kailangan mo upang gumana sa mga file.

Kapag inilapat sa isang direktoryo, binibigyang-daan ka ng pagbabasa na ipakita ang mga nilalaman ng direktoryong iyon. Dapat mong malaman na ang pahintulot na ito ay hindi nagpapahintulot sa iyo na basahin ang mga file sa direktoryo. Hindi alam ng Linux permission system ang inheritance, at ang tanging paraan para magbasa ng file ay ang gumamit ng read permissions sa file na iyon.

Tulad ng maaari mong hulaan, magsulat ng pahintulot, kapag inilapat sa isang file, pinapayagan ang pagsulat sa file. Sa madaling salita, pinapayagan ka nitong baguhin ang mga nilalaman ng mga umiiral na file. Gayunpaman, hindi ka nito pinapayagang lumikha o magtanggal ng mga bagong file o magpalit ng mga pahintulot ng file. Upang gawin ito, kailangan mong magbigay ng pahintulot sa pagsulat sa direktoryo kung saan mo gustong likhain ang file. Sa mga direktoryo, pinapayagan ka rin ng pahintulot na ito na lumikha at magtanggal ng mga bagong subdirectory.

Ipatupad ang pahintulot ang kailangan mo upang maisagawa ang file. Hindi ito kailanman mai-install bilang default, na ginagawang halos ganap na immune ang Linux sa mga virus. Tanging isang tao na may mga pahintulot sa pagsulat sa direktoryo ang maaaring mag-apply ng pahintulot na magsagawa.

Ang mga sumusunod ay nagbubuod sa paggamit ng mga pangunahing pahintulot:

Mga pahintulot sa Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Gamit ang chmod

Upang pamahalaan ang mga karapatan, gamitin ang command chmod. Gamit chmod maaari kang magtakda ng mga pahintulot para sa user (user), mga grupo (grupo) at iba pa (iba pa). Maaari mong gamitin ang command na ito sa dalawang mode: relative mode at absolute mode. Sa absolute mode, tatlong digit ang ginagamit para magtakda ng mga pangunahing pahintulot.

Mga pahintulot sa Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Kapag nagtatakda ng mga pahintulot, kalkulahin ang halaga na kailangan mo. Kung nais mong itakda ang read/write/execute para sa user, basahin/execute para sa grupo, at basahin/execute para sa iba sa /somefile pagkatapos ay gamitin mo ang sumusunod na command chmod:

chmod 755 /somefile

Kapag ginamit mo chmod sa ganitong paraan, lahat ng kasalukuyang pahintulot ay papalitan ng mga pahintulot na iyong itinakda.

Kung gusto mong baguhin ang mga pahintulot na nauugnay sa kasalukuyang mga pahintulot, maaari mong gamitin chmod sa relatibong mode. Gamit chmod sa relatibong mode nagtatrabaho ka sa tatlong indicator para isaad kung ano ang gusto mong gawin:

  1. Una mong tukuyin kung kanino mo gustong baguhin ang mga pahintulot. Upang gawin ito, maaari kang pumili sa pagitan ng user (u), pangkat (g) at iba pa (o).
  2. Pagkatapos ay gumamit ka ng isang pahayag upang magdagdag o mag-alis ng mga pahintulot mula sa kasalukuyang mode, o ganap na itakda ang mga ito.
  3. Sa dulo ginagamit mo r, w ΠΈ xupang tukuyin kung aling mga pahintulot ang gusto mong itakda.

Kapag binabago ang mga pahintulot sa relative mode, maaari mong laktawan ang "to" na bahagi upang magdagdag o mag-alis ng pahintulot para sa lahat ng mga bagay. Halimbawa, ang utos na ito ay nagdaragdag ng pahintulot sa pagpapatupad para sa lahat ng mga gumagamit:

chmod +x somefile

Kapag nagtatrabaho sa relatibong mode, maaari ka ring gumamit ng mas kumplikadong mga utos. Halimbawa, ang utos na ito ay nagdaragdag ng pahintulot sa pagsulat sa isang grupo at nag-aalis ng pahintulot sa pagbasa para sa iba:

chmod g+w,o-r somefile

Kapag ginagamit ang chmod -R o+rx /data nagtakda ka ng pahintulot sa pagpapatupad para sa lahat ng mga direktoryo pati na rin ang mga file sa direktoryo ng /data. Upang magtakda ng pahintulot na magsagawa lamang para sa mga direktoryo at hindi para sa mga file, gamitin chmod -R o+ rX /data.

Tinitiyak ng uppercase na X na ang mga file ay hindi nakakakuha ng pahintulot sa pagpapatupad maliban kung ang file ay nagtakda na ng pahintulot sa pagpapatupad para sa ilang mga bagay. Ginagawa nitong mas matalinong paraan ang X upang harapin ang mga pahintulot na magsagawa; maiiwasan nito ang pagtatakda ng pahintulot na ito sa mga file kung saan hindi ito kinakailangan.

Mga pinalawig na karapatan

Bilang karagdagan sa mga pangunahing pahintulot na nabasa mo lang, ang Linux ay mayroon ding hanay ng mga advanced na pahintulot. Hindi ito ang mga pahintulot na itinakda mo bilang default, ngunit kung minsan ay nagbibigay ang mga ito ng kapaki-pakinabang na karagdagan. Sa seksyong ito, malalaman mo kung ano ang mga ito at kung paano i-set up ang mga ito.

Pag-unawa sa SUID, GUID, at Sticky Bit Extended Permissions

May tatlong advanced na pahintulot. Ang una sa mga ito ay ang pahintulot na magtakda ng user identifier (SUID). Sa ilang mga espesyal na kaso, maaari mong ilapat ang pahintulot na ito sa mga executable na file. Bilang default, pinapatakbo ng user na nagpapatakbo ng executable ang file na iyon gamit ang sarili nilang mga pahintulot.

Para sa mga ordinaryong gumagamit, ito ay karaniwang nangangahulugan na ang paggamit ng programa ay limitado. Gayunpaman, sa ilang mga kaso, ang gumagamit ay nangangailangan ng mga espesyal na pahintulot, para lamang magsagawa ng isang partikular na gawain.

Isaalang-alang, halimbawa, ang isang sitwasyon kung saan kailangang baguhin ng user ang kanilang password. Upang gawin ito, dapat isulat ng user ang kanilang bagong password sa /etc/shadow file. Gayunpaman, ang file na ito ay hindi maisusulat ng mga hindi root na user:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

Nag-aalok ang pahintulot ng SUID ng solusyon sa problemang ito. Ginagamit ng /usr/bin/passwd utility ang pahintulot na ito bilang default. Nangangahulugan ito na kapag binago ang password, pansamantalang nagiging ugat ang user, na nagpapahintulot sa kanya na magsulat sa /etc/shadow file. Maaari mong makita ang pahintulot ng SUID na may ls -l bilang s sa isang posisyon kung saan karaniwan mong inaasahan na makita x para sa mga custom na pahintulot:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

Ang pahintulot ng SUID ay maaaring mukhang kapaki-pakinabang (at sa ilang mga kaso ito ay), ngunit sa parehong oras ito ay potensyal na mapanganib. Kung hindi nailapat nang tama, maaari mong hindi sinasadyang magbigay ng mga pahintulot sa ugat. Samakatuwid, inirerekumenda kong gamitin lamang ito nang may lubos na pangangalaga.

Karamihan sa mga administrador ay hindi na kailangang gamitin ito; makikita mo lamang ito sa ilang mga file kung saan dapat itong itakda ng operating system bilang default.

Ang pangalawang espesyal na pahintulot ay ang group identifier (SGID). Ang pahintulot na ito ay may dalawang epekto. Kapag inilapat sa isang executable file, binibigyan nito ang user na nagpapatupad ng file ng mga pahintulot ng may-ari ng grupo ng file. Kaya't ang SGID ay maaaring gumawa ng higit o mas kaunti sa parehong bagay tulad ng SUID. Gayunpaman, ang SGID ay halos hindi ginagamit para sa layuning ito.

Tulad ng pahintulot ng SUID, inilalapat ang SGID sa ilang system file bilang default na setting.

Kapag inilapat sa isang direktoryo, maaaring maging kapaki-pakinabang ang SGID dahil magagamit mo ito upang itakda ang default na may-ari ng pangkat para sa mga file at subdirectory na ginawa sa direktoryong iyon. Bilang default, kapag ang isang user ay lumikha ng isang file, ang kanilang epektibong pangunahing pangkat ay nakatakda bilang ang may-ari ng pangkat para sa file na iyon.

Ito ay hindi palaging napaka-kapaki-pakinabang, lalo na dahil ang mga gumagamit ng Red Hat/CentOS ay nakatakda ang kanilang pangunahing pangkat sa isang pangkat na may parehong pangalan ng user, at kung saan ang user ay ang tanging miyembro. Kaya, bilang default, ang mga file na nilikha ng user ay ibabahagi nang maramihan.

Isipin ang isang sitwasyon kung saan ang mga user na sina linda at lori ay nagtatrabaho sa accounting at mga miyembro ng isang grupo account. Bilang default, ang mga user na ito ay mga miyembro ng isang pribadong grupo kung saan sila lang ang miyembro. Gayunpaman, ang parehong mga user ay mga miyembro ng grupo ng account, ngunit din bilang pangalawang parameter ng pangkat.

Ang default na sitwasyon ay kapag ang alinman sa mga user na ito ay lumikha ng isang file, ang pangunahing pangkat ang magiging may-ari. Samakatuwid, bilang default, hindi ma-access ni linda ang mga file na ginawa ni lori, at kabaliktaran. Gayunpaman, kung lumikha ka ng isang nakabahaging direktoryo ng pangkat (sabihin ang /groups/account) at matiyak na ang pahintulot ng SGID ay inilapat sa direktoryo na iyon at ang account ng grupo ay nakatakda bilang may-ari ng grupo para sa direktoryong iyon, lahat ng mga file na ginawa sa direktoryo na iyon at lahat ng mga subdirectory nito , kunin din ang group account bilang may-ari ng grupo bilang default.

Para sa kadahilanang ito, ang pahintulot ng SGID ay isang napaka-kapaki-pakinabang na pahintulot na itakda sa mga direktoryo ng pampublikong grupo.

Ang pahintulot ng SGID ay ipinapakita sa output ls -l bilang s sa posisyon kung saan karaniwan kang makakahanap ng pahintulot na magsagawa ng isang grupo:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

Ang pangatlo sa mga espesyal na pahintulot ay ang sticky bit. Ang pahintulot na ito ay kapaki-pakinabang para sa pagprotekta sa mga file mula sa hindi sinasadyang pagtanggal sa isang kapaligiran kung saan maraming user ang may access sa pagsulat sa parehong direktoryo. Kung gumamit ng sticky bit, makakapagtanggal lang ng file ang isang user kung sila ang may-ari ng user ng file o direktoryo na naglalaman ng file. Para sa kadahilanang ito, ginagamit ito bilang default na pahintulot para sa /tmp na direktoryo at maaaring maging kapaki-pakinabang para sa mga pampublikong direktoryo ng grupo.

Kung wala ang malagkit na bit, kung ang user ay makakalikha ng mga file sa isang direktoryo, maaari rin silang magtanggal ng mga file mula sa direktoryong iyon. Sa kapaligiran ng pampublikong grupo, ito ay maaaring nakakainis. Isipin ang mga user na sina linda at lori, na parehong may mga pahintulot sa pagsulat sa direktoryo ng /data/account at kinukuha ang mga pahintulot na iyon sa pamamagitan ng pagiging miyembro ng grupo ng account. Samakatuwid, maaaring tanggalin ni linda ang mga file na ginawa ni lori at kabaliktaran.

Kapag inilapat mo ang sticky bit, makakapagtanggal lang ng mga file ang user kung totoo ang isa sa mga sumusunod na kundisyon:

  • Ang gumagamit ay ang may-ari ng file;
  • Ang gumagamit ay ang may-ari ng direktoryo kung saan matatagpuan ang file.

Kapag ginagamit ang ls -l, makikita mo ang malagkit na bit bilang t sa posisyon kung saan karaniwan mong makikita ang pahintulot sa pagpapatupad para sa iba:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Paglalapat ng pinalawig na mga karapatan

Para mag-apply ng SUID, SGID at sticky bit maaari mo ring gamitin chmod. Ang SUID ay may numeric na value na 4, SGID ay may numeric value na 2, at ang sticky bit ay may numeric na value na 1.

Kung gusto mong ilapat ang mga pahintulot na ito kailangan mong magdagdag ng argumentong apat na character sa chmod, na ang unang digit ay tumutukoy sa mga espesyal na pahintulot. Ang sumusunod na linya, halimbawa, ay magdaragdag ng pahintulot ng SGID sa direktoryo at magtatakda ng rwx para sa user at rx para sa grupo at iba pa:

chmod 2755 /somedir

Ito ay medyo hindi praktikal kung kailangan mong makita ang kasalukuyang mga pahintulot na itinakda bago magtrabaho chmod sa ganap na mode. (Nasa panganib kang ma-overwrite ang mga pahintulot kung hindi mo gagawin.) Kaya inirerekomenda kong tumakbo sa relative mode kung kailangan mong ilapat ang alinman sa mga espesyal na pahintulot:

  1. Para sa paggamit ng SUID chmod u+s.
  2. Para sa paggamit ng SGID chmod g+s.
  3. Para sa paggamit ng sticky bit chmod +tsinusundan ng pangalan ng file o direktoryo kung saan mo gustong magtakda ng mga pahintulot.

Binubuod ng talahanayan ang lahat ng kailangan mong malaman tungkol sa pamamahala ng mga espesyal na pahintulot.

Mga pahintulot sa Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Halimbawa ng pagtatrabaho na may mga espesyal na karapatan

Sa halimbawang ito, gumagamit ka ng mga espesyal na pahintulot upang gawing mas madali para sa mga miyembro ng pangkat na magbahagi ng mga file sa nakabahaging direktoryo ng pangkat. Itatalaga mo ang ID bit sa set group ID pati na rin ang sticky bit, at makikita mo na kapag naitakda na ang mga ito, idinaragdag ang mga feature upang gawing mas madali para sa mga miyembro ng grupo na magtulungan.

  1. Magbukas ng terminal kung saan ikaw ang gumagamit ng linda. Maaari kang lumikha ng isang user gamit ang command Linda, magdagdag ng password passwd Linda.
  2. Lumikha ng /data directory sa root at ang /data/sales subdirectory gamit ang command mkdir -p /data/sales. Kumpleto cd /data/bentaupang pumunta sa direktoryo ng pagbebenta. Kumpleto hawakan si linda1 ΠΈ hawakan si linda2upang lumikha ng dalawang walang laman na file na pag-aari ni linda.
  3. Magpatupad su-lisa para ilipat ang kasalukuyang user sa user na si lisa, na miyembro din ng sales group.
  4. Magpatupad cd /data/benta at mula sa direktoryong ito tumakbo ls -l. Makakakita ka ng dalawang file na ginawa ng linda user at kabilang sa linda group. Kumpleto rm -f linda*. Tatanggalin nito ang parehong mga file.
  5. Magpatupad hawakan si lisa1 ΠΈ hawakan si lisa2upang lumikha ng dalawang file na pag-aari ng user na si lisa.
  6. Magpatupad su- upang maiangat ang iyong mga pribilehiyo sa ugat.
  7. Magpatupad chmod g+s,o+t /data/salespara itakda ang group identifier (GUID) bit gayundin ang sticky bit sa shared group directory.
  8. Magpatupad su-linda. Edi gawin hawakan si linda3 ΠΈ hawakan si linda4. Dapat mo na ngayong makita na ang dalawang file na iyong ginawa ay pagmamay-ari ng pangkat ng pagbebenta, na siyang may-ari ng pangkat ng direktoryo ng /data/sales.
  9. Magpatupad rm -rf lisa*. Pinipigilan ng sticky bit ang mga file na ito na matanggal sa ngalan ng linda user, dahil hindi ikaw ang may-ari ng mga file na ito. Tandaan na kung ang gumagamit ng linda ay ang may-ari ng direktoryo ng /data/sales, maaari pa rin nilang tanggalin ang mga file na ito!

Pamamahala ng ACL (setfacl, getfacl) sa Linux

Kahit na ang mga advanced na karapatan na tinalakay sa itaas ay nagdaragdag ng kapaki-pakinabang na pagpapagana sa paraan ng pakikitungo ng Linux sa mga pahintulot, hindi ka nito pinapayagang magbigay ng mga pahintulot sa higit sa isang user o isang grupo sa isang file.

Ang mga listahan ng kontrol sa pag-access ay nag-aalok ng tampok na ito. Bilang karagdagan, pinapayagan nila ang mga administrator na magtakda ng mga default na pahintulot sa isang kumplikadong paraan, kung saan ang mga nakatakdang pahintulot ay maaaring mag-iba mula sa direktoryo sa direktoryo.

Pag-unawa sa mga ACL

Bagama't ang ACL subsystem ay nagdaragdag ng mahusay na paggana sa iyong server, mayroon itong isang kawalan: hindi lahat ng mga utility ay sumusuporta dito. Samakatuwid, maaari mong mawala ang iyong mga setting ng ACL kapag kinopya o inilipat mo ang mga file, at maaaring mabigo ang iyong backup na software na i-back up ang iyong mga setting ng ACL.

Hindi sinusuportahan ng tar utility ang mga ACL. Upang matiyak na ang mga setting ng ACL ay hindi mawawala kapag gumagawa ng backup, gamitin bituin sa halip na alkitran. bituin gumagana sa parehong mga pagpipilian bilang tar; nagdaragdag lamang ito ng suporta para sa mga setting ng ACL.

Maaari mo ring i-back up ang mga ACL gamit ang getfacl, na maaaring maibalik gamit ang setfacl command. Para gumawa ng backup, gamitin getfacl -R /directory > file.acls. Upang ibalik ang mga setting mula sa isang backup na file, gamitin setfacl --restore=file.acl.

Ang kakulangan ng suporta para sa ilang mga tool ay hindi dapat maging isang problema. Ang mga ACL ay kadalasang inilalapat sa mga direktoryo bilang isang panukalang istruktura kaysa sa mga indibidwal na file.
Samakatuwid, hindi magkakaroon ng marami sa kanila, ngunit iilan lamang, na inilalapat sa mga matalinong lugar sa file system. Samakatuwid, ang pagpapanumbalik ng mga orihinal na ACL na pinagtrabaho mo ay medyo madali, kahit na hindi sinusuportahan ng iyong backup na software ang mga ito.

Paghahanda ng file system para sa mga ACL

Bago ka magsimulang magtrabaho sa mga ACL, maaaring kailanganin mong ihanda ang iyong file system upang suportahan ang mga ACL. Dahil kailangang palawigin ang metadata ng file system, hindi palaging may default na suporta para sa mga ACL sa file system. Kung nakakakuha ka ng mensaheng "hindi sinusuportahan ang operasyon" kapag nagse-set up ng mga ACL para sa isang file system, maaaring hindi sinusuportahan ng iyong file system ang mga ACL.

Upang ayusin ito kailangan mong idagdag ang opsyon acl mount sa /etc/fstab upang ang filesystem ay naka-mount na may suporta sa ACL bilang default.

Pagbabago at pagtingin sa mga setting ng ACL gamit ang setfacl at getfacl

Upang magtakda ng ACL kailangan mo ang utos setfacl. Upang makita ang kasalukuyang mga setting ng ACL, kailangan mo getfacl. Koponan ls -l ay hindi nagpapakita ng anumang mga umiiral na ACL; nagpapakita lamang ito ng + pagkatapos ng listahan ng pahintulot, na nagpapahiwatig na ang mga ACL ay nalalapat din sa file.

Bago mag-set up ng mga ACL, palaging magandang ideya na ipakita ang kasalukuyang mga setting ng ACL gamit ang getfacl. Sa halimbawa sa ibaba, makikita mo ang kasalukuyang mga pahintulot, tulad ng ipinapakita sa ls -l, at gaya rin ng ipinapakita sa getfacl. Kung titingnan mong mabuti, makikita mo na ang impormasyong ipinapakita ay eksaktong pareho.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Bilang resulta ng pagpapatupad ng utos getfacl sa ibaba makikita mo na ang mga pahintulot ay ipinapakita para sa tatlong magkakaibang mga bagay: user, grupo at iba pa. Ngayon, magdagdag tayo ng ACL para makapagbigay din ng mga pahintulot na basahin at isagawa ang pangkat ng mga benta. utos para dito setfacl -mg:sales:rx /dir. Sa pangkat na ito -m ay nagpapahiwatig na ang kasalukuyang mga setting ng ACL ay kailangang baguhin. Pagkatapos g:benta:rx nagsasabi sa command na magtakda ng read at execute ACL (rx) para sa pangkat (g) mga benta. Sa ibaba makikita mo kung ano ang hitsura ng command, pati na rin ang output ng getfacl command pagkatapos baguhin ang kasalukuyang mga setting ng ACL.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Ngayong nauunawaan mo na kung paano mag-set up ng isang pangkat na ACL, madaling maunawaan ang mga ACL para sa mga user at iba pang mga user. Halimbawa, ang utos setfacl -mu:linda:rwx /data Nagbibigay ng mga pahintulot sa user na si linda sa /data na direktoryo nang hindi siya ginagawang may-ari o binabago ang pagtatalaga ng kasalukuyang may-ari.

Koponan setfacl ay may maraming mga tampok at pagpipilian. Ang isang pagpipilian ay lalong mahalaga, ang parameter -R. Kung ginamit, ginagawa ng opsyon ang ACL set para sa lahat ng file at subdirectory na kasalukuyang umiiral sa direktoryo kung saan mo itinakda ang ACL. Inirerekomenda na palagi mong gamitin ang opsyong ito kapag nagpapalit ng mga ACL para sa mga kasalukuyang direktoryo.

Paggawa gamit ang mga Default na ACL

Ang isa sa mga benepisyo ng paggamit ng mga ACL ay maaari kang magbigay ng mga pahintulot sa maraming user o grupo sa isang direktoryo. Ang isa pang benepisyo ay maaari mong paganahin ang mana sa pamamagitan ng pagtatrabaho sa mga default na ACL.

Sa pamamagitan ng pagtatakda ng default na ACL, matutukoy mo ang mga pahintulot na itatakda para sa lahat ng mga bagong item na ginawa sa direktoryo. Magkaroon ng kamalayan na ang default na ACL ay hindi nagbabago ng mga pahintulot sa mga kasalukuyang file at subdirectory. Upang baguhin ang mga ito, kailangan mo ring magdagdag ng isang normal na ACL!

Ito ay mahalagang malaman. Kung gusto mong gumamit ng ACL para i-configure ang maraming user o grupo para ma-access ang parehong direktoryo, dapat mong itakda ang ACL nang dalawang beses. Unang gamit setfacl -R -mupang baguhin ang ACL para sa mga kasalukuyang file. Pagkatapos ay gamitin setfacl-md:para pangalagaan ang lahat ng bagong elemento na gagawin din.

Upang itakda ang default na ACL kailangan mo lamang idagdag ang opsyon d pagkatapos ng pagpipilian -m (Mahalaga ang order!). Kaya gamitin setfacl -md:g:sales:rx /datakung gusto mong basahin at isagawa ng mga benta ng grupo ang anumang nilikha sa direktoryo ng /data.

Kapag gumagamit ng mga default na ACL, maaari ding maging kapaki-pakinabang ang magtakda ng mga ACL para sa iba. Ito ay karaniwang hindi gaanong makatuwiran dahil maaari mo ring baguhin ang mga pahintulot para sa iba na gumagamit chmod. Gayunpaman, kung ano ang hindi mo magagawa chmod, ay upang tukuyin ang mga karapatan na dapat ibigay sa iba pang mga user para sa bawat bagong file na nilikha. Kung gusto mong pigilan ang iba na makakuha ng anumang mga pahintulot sa anumang nilikha sa /data halimbawa gamitin setfacl -md:o::- /data.

Ang mga ACL at normal na pahintulot ay hindi palaging maayos na isinama. Maaaring lumitaw ang mga problema kung maglalapat ka ng default na ACL sa isang direktoryo, pagkatapos ay idaragdag ang mga item sa direktoryo na iyon, at pagkatapos ay subukang baguhin ang mga normal na pahintulot. Ang mga pagbabagong nalalapat sa mga normal na pahintulot ay hindi makikita sa pangkalahatang-ideya ng ACL. Upang maiwasan ang mga problema, itakda muna ang mga normal na pahintulot, pagkatapos ay itakda ang mga default na ACL (at subukang huwag baguhin muli ang mga ito pagkatapos nito).

Halimbawa ng Elevated Rights Management Gamit ang mga ACL

Sa halimbawang ito, magpapatuloy ka sa pagtatrabaho sa mga direktoryo ng /data/account at /data/sales na ginawa mo kanina. Sa mga nakaraang halimbawa, tiniyak mong may mga pahintulot ang pangkat ng mga benta sa /data/sales at ang pangkat ng account ay may mga pahintulot sa /data/account.

Una, siguraduhin na ang grupo ng account ay makakakuha ng mga pahintulot sa pagbabasa sa /data/sales directory at ang grupo ng mga benta ay makakakuha ng read permission sa /data/account directory.

Pagkatapos ay itinakda mo ang mga default na ACL upang matiyak na ang lahat ng mga bagong file ay may tamang mga pahintulot na itinakda para sa lahat ng mga bagong item.

  1. Magbukas ng terminal.
  2. Magpatupad setfacl -mg:account:rx /data/sales ΠΈ setfacl -mg:sales:rx /data/account.
  3. Magpatupad getfaclupang matiyak na ang mga pahintulot ay itinakda sa paraang gusto mo.
  4. Magpatupad setfacl -md:g:account:rwx,g:sales:rx /data/salesupang itakda ang default na ACL para sa direktoryo ng mga benta.
  5. Magdagdag ng default na ACL para sa /data/account na direktoryo na ginagamit setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. I-verify na may bisa ang mga setting ng ACL sa pamamagitan ng pagdaragdag ng bagong file sa /data/sales. Kumpleto pindutin ang /data/sales/newfile at gawin getfacl /data/sales/newfile upang suriin ang mga kasalukuyang pahintulot.

Pagtatakda ng mga default na pahintulot gamit ang umask

Sa itaas natutunan mo kung paano magtrabaho sa mga default na ACL. Kung hindi ka gagamit ng ACL, mayroong opsyon sa shell na tumutukoy sa mga default na pahintulot na matatanggap mo: umask (reverse mask). Sa seksyong ito, matututunan mo kung paano baguhin ang mga default na pahintulot gamit ang umask.

Maaaring napansin mo na kapag gumawa ka ng bagong file, nakatakda ang ilang mga default na pahintulot. Ang mga pahintulot na ito ay tinutukoy ng setting umask. Nalalapat ang setting ng shell na ito sa lahat ng user sa pag-logon. Sa parameter umask ginagamit ang isang numerong halaga, na ibinabawas mula sa pinakamataas na pahintulot na maaaring awtomatikong itakda para sa file; ang maximum na setting para sa mga file ay 666 at para sa mga direktoryo ay 777.

Gayunpaman, ang ilang mga pagbubukod ay nalalapat sa panuntunang ito. Makakahanap ka ng buong pangkalahatang-ideya ng mga setting umask sa talahanayan sa ibaba.

Sa mga numerong ginamit sa umask, tulad ng mga numeric na argumento sa command chmod, ang unang digit ay tumutukoy sa mga pahintulot ng user, ang pangalawang digit ay tumutukoy sa mga pahintulot ng grupo, at ang huli ay tumutukoy sa mga default na pahintulot na itinakda para sa iba. Ibig sabihin umask ang default na 022 ay nagbibigay ng 644 para sa lahat ng mga bagong file at 755 para sa lahat ng mga bagong direktoryo na ginawa sa iyong server.

Kumpletong pangkalahatang-ideya ng lahat ng mga numerical na halaga umask at ang kanilang mga resulta sa talahanayan sa ibaba.

Mga pahintulot sa Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Ang isang simpleng paraan upang makita kung paano gumagana ang setting ng umask ay ang mga sumusunod: magsimula sa mga default na pahintulot ng file na nakatakda sa 666 at ibawas ang umask upang makuha ang mga epektibong pahintulot. Gawin ang parehong para sa direktoryo at ang mga default na pahintulot nito na 777.

Mayroong dalawang paraan upang baguhin ang setting ng umask: para sa lahat ng user at para sa mga indibidwal na user. Kung gusto mong itakda ang umask para sa lahat ng user, dapat mong tiyakin na ang setting ng umask ay isinasaalang-alang kapag sinisimulan ang mga shell environment file, gaya ng tinukoy sa /etc/profile. Ang tamang diskarte ay gumawa ng shell script na tinatawag na umask.sh sa /etc/profile.d directory at tukuyin ang umask na gusto mong gamitin sa shell script na iyon. Kung binago ang umask sa file na ito, inilalapat ito sa lahat ng user pagkatapos mag-log in sa server.

Ang isang alternatibo sa pagtatakda ng umask sa pamamagitan ng /etc/profile at mga kaugnay na file, kung saan nalalapat ito sa lahat ng user na nagla-log in, ay ang baguhin ang mga setting ng umask sa isang file na tinatawag na .profile na ginawa sa home directory ng bawat user.

Ang mga setting na inilapat sa file na ito ay nalalapat lamang sa indibidwal na user; samakatuwid, ito ay isang magandang paraan kung kailangan mo ng karagdagang detalye. Personal kong gusto ang feature na ito na baguhin ang default umask ng root user sa 027, samantalang gumagana ang mga normal na user gamit ang default na umask na 022.

Paggawa gamit ang mga pinahabang katangian ng user

Ito ang huling seksyon sa mga pahintulot ng Linux.

Kapag nagtatrabaho nang may mga pahintulot, palaging may kaugnayan sa pagitan ng user o grupong object at ng mga pahintulot na mayroon ang user o group object sa isang file o direktoryo. Ang isang alternatibong paraan upang maprotektahan ang mga file sa isang server ng Linux ay upang gumana sa mga katangian.
Ginagawa ng mga katangian ang kanilang trabaho anuman ang user na nag-access sa file.

Tulad ng sa mga ACL, maaaring kailanganin ng mga katangian ng file na isama ang opsyon Mount.

Isa itong opsyon user_xattr. Kung nakakakuha ka ng mensaheng "hindi sinusuportahan ang operasyon" kapag nagtatrabaho sa mga attribute ng pinahabang user, tiyaking itakda ang parameter Mount sa /etc/fstab.

Maraming mga katangian ang naidokumento. Available ang ilang attribute ngunit hindi pa ipinapatupad. Huwag gamitin ang mga ito; wala silang dadalhin sa iyo.

Nasa ibaba ang mga pinakakapaki-pakinabang na katangian na maaari mong ilapat:

A Tinitiyak ng katangiang ito na ang oras ng pag-access ng file ng file ay hindi nagbabago.
Karaniwan, sa tuwing bubuksan ang isang file, ang oras ng pag-access ng file ay dapat na naitala sa metadata ng file. Ito ay negatibong nakakaapekto sa pagganap; kaya para sa mga file na regular na ina-access, ang attribute A ay maaaring gamitin upang huwag paganahin ang tampok na ito.

a Nagbibigay-daan sa iyo ang attribute na ito na magdagdag, ngunit hindi magtanggal, ng file.

c Kung gumagamit ka ng file system na sumusuporta sa volume-level compression, tinitiyak ng katangian ng file na ito na ang file ay na-compress sa unang pagkakataon na pinagana ang mekanismo ng compression.

D Tinitiyak ng katangiang ito na ang mga pagbabago sa mga file ay isusulat kaagad sa disk sa halip na i-cache muna. Ito ay isang kapaki-pakinabang na katangian sa mahalagang mga file ng database upang matiyak na hindi sila mawawala sa pagitan ng cache ng file at ng hard drive.

d Tinitiyak ng attribute na ito na hindi mase-save ang file sa mga backup kung saan ginagamit ang dump utility.

I Ang katangiang ito ay nagbibigay-daan sa pag-index para sa direktoryo kung saan ito pinagana. Nagbibigay ito ng mas mabilis na pag-access sa file para sa mga primitive na filesystem tulad ng Ext3 na hindi gumagamit ng database ng B-tree para sa mabilis na pag-access ng file.

i Ginagawa ng attribute na ito na hindi nababago ang file. Samakatuwid, walang pagbabagong maaaring gawin sa file, na kapaki-pakinabang para sa mga file na nangangailangan ng karagdagang proteksyon.

j Tinitiyak ng katangiang ito na, sa isang ext3 file system, ang file ay unang nakasulat sa journal at pagkatapos ay sa mga bloke ng data sa hard disk.

s I-overwrite ang mga bloke kung saan na-save ang file sa 0s pagkatapos tanggalin ang file. Tinitiyak nito na hindi na maibabalik ang file kapag natanggal na ito.

u Ang katangiang ito ay nag-iimbak ng impormasyon tungkol sa pagtanggal. Nagbibigay-daan ito sa iyo na bumuo ng isang utility na gumagana sa impormasyong ito upang iligtas ang mga tinanggal na file.

Kung gusto mong ilapat ang mga katangian, maaari mong gamitin ang command daldalan. Halimbawa, gamitin chattr +s somefileupang ilapat ang mga katangian sa isang file. Kailangang mag-alis ng isang katangian? Pagkatapos ay gamitin chattr -s somefileat ito ay aalisin. Para makakuha ng pangkalahatang-ideya ng lahat ng attribute na kasalukuyang inilalapat, gamitin ang command lsattr.

Buod

Sa artikulong ito, natutunan mo kung paano magtrabaho nang may mga pahintulot. Nabasa mo ang tungkol sa tatlong pangunahing mga pahintulot, mga advanced na pahintulot, at kung paano ilapat ang mga ACL sa isang file system. Natutunan mo rin kung paano gamitin ang opsyong umask para ilapat ang mga default na pahintulot. Sa dulo ng artikulong ito, natutunan mo kung paano gumamit ng mga attribute na pinalawak ng user para maglapat ng karagdagang layer ng seguridad ng file system.

Kung nagustuhan mo ang pagsasaling ito, mangyaring isulat ang tungkol dito sa mga komento. Magkakaroon ng higit pang pagganyak na gumawa ng mga kapaki-pakinabang na pagsasalin.

Nagwasto ng ilang mga typo at grammatical error sa artikulo. Binawasan ang ilang malalaking talata sa mas maliliit para sa mas madaling mabasa.

Sa halip na "Ang isang tao lamang na may mga karapatang pang-administratibo sa direktoryo ang maaaring maglapat ng pahintulot na magsagawa." naayos sa "Ang isang tao lamang na may mga pahintulot sa pagsulat sa direktoryo ang maaaring maglapat ng pahintulot na magsagawa.", na magiging mas tama.

Salamat sa mga komento berez.

Pinalitan:
Kung hindi ikaw ang may-ari ng user, titingnan ng shell kung miyembro ka ng isang grupo, na kilala rin bilang grupo ng file.

Sa:
Kung hindi ikaw ang may-ari ng file, titingnan ng shell kung miyembro ka ng isang pangkat na may mga pahintulot sa file. Kung miyembro ka ng pangkat na ito, maa-access mo ang file na may mga pahintulot na itinakda ng grupo, at hihinto sa pagsuri ang shell.

Salamat sa iyong komento CryptoPirate

Pinagmulan: www.habr.com

Magdagdag ng komento