Linux аттары - Linux namespaces

атаулар кеңістігі
Түпнұсқа автор (лар)Аль Виро
ӘзірлеушілерЭрик В. Бидерман, Павел Емельянов, Аль Виро, Кирилл Горчунов және басқалар.
Бастапқы шығарылым2002; 18 жыл бұрын (2002)
ЖазылғанC
Операциялық жүйеLinux
ТүріЖүйелік бағдарламалық жасақтама
ЛицензияGPL және LGPL

Атаулар кеңістігі ерекшеліктері болып табылады Linux ядросы бұл ядролық ресурстарды бір жиынтығына бөледі процестер ресурстардың бір жиынтығын көреді, ал басқа процестер жиынтығы ресурстардың басқа жиынтығын көреді. Мүмкіндік ресурстар мен процестер жиынтығы үшін бірдей кеңістікке ие бола отырып жұмыс істейді, бірақ бұл атаулар кеңістігі әртүрлі ресурстарға сілтеме жасайды. Ресурстар бірнеше кеңістікте болуы мүмкін. Мұндай ресурстардың мысалдары ретінде процесс идентификаторлары, хост атаулары, пайдаланушы идентификаторлары, файл атаулары және желіге кіруге байланысты кейбір атаулар және процессаралық байланыс.

Атаулар кеңістігі - бұл негізгі аспект контейнерлер Linux жүйесінде.

«Атаулар кеңістігі» термині жиі аттар кеңістігінің түрі үшін қолданылады (мысалы, процесс идентификаторы), сондай-ақ белгілі бір аттар кеңістігі үшін.

Linux жүйесі барлық процестерде қолданылатын әр типтің жеке атау кеңістігінен басталады. Процестер қосымша аттар кеңістігін құра алады және әртүрлі ат кеңістігін біріктіре алады.

Тарих

Linux атау кеңістіктері бүкіл кең қолданылатын атау кеңістігінің шабыттандыруы болды Bell Labs компаниясының 9-жоспары.[1]

Linux-тің аттар кеңістігі 2002 жылы 2.4.19 ядросында типтегі аттар кеңістігінде жұмыс істей бастады. Қосымша аттар кеңістігі 2006 жылдан басталды[2] және болашаққа жалғастыру.

Барабар контейнерлер Қолдау функциясы 3.8 ядролық нұсқасында Пайдаланушының ат кеңістігін енгізумен аяқталды.[3]

Атаулар кеңістігінің түрлері

5.6 ядро ​​нұсқасынан бастап аттар кеңістігінің 8 түрі бар. Аттар кеңістігінің функционалдығы барлық түрлерде бірдей: әр процесс аттар кеңістігімен байланысты және тек сол аттар кеңістігімен байланысты ресурстарды және қажет болған жағдайда ұрпақ аттары кеңістіктерін көре немесе қолдана алады. Осылайша, әр процестің (немесе оның топтық тобының) ресурстарға ерекше көзқарасы болуы мүмкін. Қай ресурстың оқшаулануы берілген процесс тобы үшін жасалған аттар кеңістігінің түріне байланысты.

Тау (мнт)

Тіркеу аттарының кеңістігі бекіту нүктелерін басқарады. Ағымдағы бекіту аттары кеңістігінен жасалған тіреулер жаңа аттар кеңістігіне көшіріледі, бірақ кейіннен құрылған нүктелер аттар кеңістігінде таралмайды (ортақ ішкі ағаштарды қолданып, аттар кеңістіктері арасында бекіту нүктелерін таратуға болады)[4]).

Осы типтегі жаңа кеңістік құру үшін пайдаланылатын клондық жалауша - CLONE_NEWNS - «NEW NameSpace» үшін қысқаша. Бұл термин сипаттамалық емес (өйткені бұл аттың қандай кеңістігі жасалуы керек екендігі туралы айтуға болмайды), өйткені тау аттары кеңістігі - бұл аттар кеңістігінің бірінші түрі, ал дизайнерлер басқалары болады деп күтпеген.

Процесс идентификаторы (pid)

The PID аттар кеңістігі процестерді басқа аттар кеңістігінен тәуелсіз процесс идентификаторы (PID) жиынтығымен қамтамасыз етеді. PID аттары кеңістігі кірістірілген, яғни жаңа үрдіс жасалғанда оның әр ат кеңістігі үшін ағымдағы аттар кеңістігінен бастап бастапқы PID аттар кеңістігіне дейін PID болады. Демек, PID атауының алғашқы кеңістігі барлық процестерді көре алады, бірақ басқа аттар кеңістігіне қарағанда әр түрлі PID идентификаторлары бар.

PID атау кеңістігінде құрылған бірінші процесске ID идентификаторы беріледі және әдеттегідей ерекше күтімнің көп бөлігін алады ішінде процесс, ең бастысы жетім процестер оған аттар кеңістігінде бекітіледі. Бұл сонымен қатар осы PID 1 процесінің тоқтатылуы оның PID атау кеңістігіндегі барлық ұрпақтар мен барлық ұрпақтарын дереу тоқтатады дегенді білдіреді.[5]

Желі (тор)

Желілік атаулар кеңістігі желілік стек. Желі атауының кеңістігін құру кезінде тек a бар цикл интерфейс.

Әрқайсысы желілік интерфейс (физикалық немесе виртуалды) дәл 1 ат кеңістігінде болады және оны ат кеңістігі арасында жылжытуға болады.

Әрбір аттар кеңістігінің жеке жиынтығы болады IP мекенжайлары, өзінің маршруттау кестесі, розетка листинг, байланысты бақылау кестесі, брандмауэр, және басқа желімен байланысты ресурстар.

Желі атауының кеңістігін жою оның ішіндегі кез-келген виртуалды интерфейсті жояды және ондағы кез-келген физикалық интерфейсті бастапқы желілік атау кеңістігіне жылжытады.

Процессаралық байланыс (ipc)

IPC атау кеңістіктері процестерді оқшаулайды SysV процестер арасындағы қатынас. Бұл әр түрлі IPC атаулар кеңістігіндегі процестердің, мысалы, екі процестің арасында ортақ жад ауқымын құру үшін SHM функциясының отбасын пайдалануға жол бермейді. Оның орнына әрбір процесс бірдей идентификаторларды жалпы жад аймағы үшін қолдана алады және осындай екі аймақты шығарады.

UTS

UTS (UNIX.) Уақытты бөлу ) аттар кеңістігі бір жүйенің басқаша болып көрінуіне мүмкіндік береді хост және домендік атаулар әртүрлі процестерге.

Пайдаланушы идентификаторы (пайдаланушы)

Пайдаланушы аттарының кеңістігі - бұл артықшылықты оқшаулауды және пайдаланушының жеке сәйкестендіруін сегменттердің 3.8 ядросынан бастап қол жетімді бірнеше процедуралар жиынтығында қамтамасыз ету мүмкіндігі.[6] Әкімшілік көмектің көмегімен пайдаланушы процестеріне жоғары артықшылықтар бермей, әкімшілік құқықтары көрінетін контейнер құруға болады. PID атау кеңістігі сияқты, пайдаланушы аттарының кеңістігі кірістірілген және әрбір жаңа пайдаланушы аттары кеңістігі оны құрған пайдаланушы аттарының кеңістігі болып саналады.

Пайдаланушының аттар кеңістігінде контейнер тұрғысынан жүйенің көзқарасына пайдаланушы идентификаторларын түрлендіретін салыстыру кестесі бар. Бұл, мысалы, мүмкіндік береді тамыр пайдаланушының контейнерде 0 пайдаланушы идентификаторы болуы керек, бірақ жүйеде меншікті тексеру үшін пайдаланушы идентификаторы 1 400 000 ретінде қарастырылады. Ұқсас кесте топ идентификаторларын салыстыру және меншікті тексеру үшін қолданылады.

Әкімшілік әрекеттердің артықшылықтарын оқшаулауды жеңілдету үшін әрбір аттар кеңістігінің типі қолданушы аттары кеңістігінің құрылған сәтінде белсенді пайдаланушы аттарының кеңістігі негізінде тиесілі болып саналады. Тиісті пайдаланушы аттар кеңістігінде әкімшілік артықшылықтары бар пайдаланушыға сол басқа кеңістік түріндегі әкімшілік әрекеттерді жасауға рұқсат беріледі. Мысалы, егер процестің желілік интерфейстің IP-мекен-жайын өзгертуге әкімшілік рұқсаты болса, ол өзінің жеке пайдаланушы аттарының кеңістігі желілік аттар кеңістігіне иелік ететін пайдаланушы аттарының кеңістігімен (немесе атасы) бірдей болған жағдайда оны жасай алады. Демек, пайдаланушының алғашқы аттар кеңістігі жүйеде барлық аттар кеңістігінің түрлерін басқарады.[7]

Басқару тобы (топ) аттар кеңістігі

The топ атау кеңістігінің түрі бақылау тобы оның мүшесі болып табылатын процесс. Осындай аттар кеңістігіндегі процесс, кез-келген процестің қандай басқару тобына кіретінін тексеріп, оның құрылған уақытында орнатылған басқару тобына қатысты, оның шынайы басқару тобының позициясы мен сәйкестілігін жасыратын жолды көреді. Бұл атау кеңістігінің түрі 2016 жылдың наурыз айынан бастап Linux 4.6-да бар.[8][9]

Уақыт аттары кеңістігі

Уақыт аттары кеңістігі процестерге әртүрлі жүйелік уақыттарды UTS аттар кеңістігіне ұқсас түрде көруге мүмкіндік береді. Ол 2018 жылы ұсынылып, 2020 жылдың наурызында шыққан Linux 5.6 қонды.[10]

Ұсынылған атаулар кеңістігі

syslog атау кеңістігі

Іске асыру бөлшектері

Ядро әр процеске символдық сілтемені аттар кеңістігінде тағайындайды / proc / / ns /. Осы символдық сілтеме арқылы көрсетілген иноды нөмірі осы аттар кеңістігіндегі әр процесс үшін бірдей. Бұл әрбір аттар кеңістігін оның шартты белгілерінің бірі көрсетілген инод нөмірімен ерекше түрде анықтайды.

Оқу сілтемесі арқылы символдық сілтемені оқу аттар кеңістігінің түр аттары мен аттар кеңістігінің инод нөмірін қамтитын жолды қайтарады.

Скисволдар

Үш жүйелер аттар кеңістігін тікелей басқара алады:

  • клон, жалаулар, жаңа процестің қай жаңа аттар кеңістігіне көшірілуі керектігін көрсетеді.
  • бөліспеу, процестің (немесе ағынның) оның басқа мәтіндермен (немесе ағындармен) бөлісіліп жатқан орындалу контекстінің бөліктерін бөлуге мүмкіндік береді.
  • setns, файл дескрипторымен көрсетілген аттар кеңістігін енгізеді.

Жою

Егер бұдан әрі аттар кеңістігіне сілтеме жасалмаса, ол жойылады, қордың өңделуі аттар кеңістігінің түріне байланысты болады. Атаулар кеңістігіне үш жолмен сілтеме жасауға болады:

  1. атау кеңістігіне жататын процесс бойынша
  2. ашық кеңістіктегі файлға ашық хат иесі (/ proc / / ns / )
  3. атау кеңістігінің файлын байланыстыру (/ proc / / ns / )

Бала асырап алу

Әр түрлі контейнерлік бағдарламалық жасақтама Linux атау кеңістігін бірге қолданады топтар олардың процестерін, оның ішінде оқшаулау Докер[11] және LXC.

Сияқты басқа қосымшалар Google Chrome Интернетке шабуыл жасау қаупі бар жеке процестерді оқшаулау үшін аттар кеңістігін пайдаланыңыз.[12]

Сонымен қатар бөлісілмеген қаптама бар util-linux. Оны қолдануға мысал болып табылады

ШЕЛ=/ bin / sh бөліспеу --fork --pid chroot "${chrootdir}" "$@"

Әдебиеттер тізімі

  1. ^ «9-жоспарда аттар кеңістігін пайдалану». 1992. мұрағатталған түпнұсқа 2014-09-06. Алынған 2016-03-24.
  2. ^ «Linux ядросының бастапқы ағашы». kernel.org. 2016-10-02.
  3. ^ https://lwn.net/Articles/532593/
  4. ^ «Documentation / filesystems / sharedsubtree.txt». 2016-02-25. Алынған 2017-03-06.
  5. ^ «Жұмыс кеңістігінде аттар кеңістігі, 3 бөлім: PID атау кеңістіктері». lwn.net. 2013-01-16.
  6. ^ https://lwn.net/Articles/532593/
  7. ^ «Жұмыс кеңістігінде аттар кеңістігі, 5 бөлім: пайдаланушы аттарының кеңістігі». lwn.net. 2013-02-27.
  8. ^ Хео, Теджун (2016-03-18). «[GIT PULL] v4.6-rc1 үшін cgroup атау кеңістігін қолдау». lkml (Тарату тізімі).
  9. ^ Торвальдс, Линус (2016-03-26). «Linux 4.6-rc1». lkml (Тарату тізімі).
  10. ^ «Ақыры уақыт келді: Linux 5.6 ядросы - Phoronix-ке уақыт атауын қолдау қосылды». www.phoronix.com. Алынған 2020-03-30.
  11. ^ «Докер қауіпсіздігі». docker.com. Алынған 2016-03-24.
  12. ^ «Chromium Linux құм жәшігі». google.com. Алынған 2019-12-19.

Сыртқы сілтемелер