guruhlarni qanday boshqarishni ham tushunishimiz kerak. Linuxdagi guruhlar tushunchasi boshqa platformalardan unchalik farq qilmaydi va deyarli bir xil maqsadga xizmat qiladi. Guruhlar yordamida siz foydalanuvchining serveringizdagi resurslarga kirishini yanada samarali boshqarishingiz mumkin. Guruhni resursga (fayl, katalog va boshqalar) belgilash orqali siz foydalanuvchilarni oddiygina qo‘shish yoki guruhdan olib tashlash orqali ularga kirishga ruxsat berishingiz yoki ruxsat bermasligingiz mumkin.
Buning Linuxda ishlash usuli shundaki, har bir fayl yoki katalogda ham foydalanuvchi, ham unga egalik qiluvchi guruh mavjud. Bu bitta resursga bir nechta guruhlar tayinlanishi mumkin bo'lgan Windows kabi platformalarga ziddir. Linux bilan bu birma-bir egalik: faqat bitta foydalanuvchi va har bir fayl yoki katalogga bitta guruh tayinlangan. Agar siz Linux tizimidagi katalog tarkibini sanab o'tsangiz, buni o'zingiz ko'rishingiz mumkin:
ls -l
Quyida severlarning biridagi katalogdan olingan namuna qatori keltirilgan:
-rw-r--r-- 1 root bind 490 2020-04-15 22:05 named.conf
Bunday holda, biz root faylga egalik qilishini va guruh ulanishi ham unga tayinlanganligini ko'rishimiz mumkin. Hozircha har bir fayl yoki katalogga bitta foydalanuvchi va bitta guruh tayinlanganligini yodda tuting.
Har bir fayl yoki katalog faqat bitta guruh topshirig'iga ega bo'lishi mumkin bo'lsa-da, har qanday foydalanuvchi hisobi istalgan sonli guruhlarning a'zosi bo'lishi mumkin. Groups buyrug'ini o'z-o'zidan kiritish, hech qanday variantsiz tizimga kirgan foydalanuvchi hozirda qaysi guruhlar a'zosi ekanligini ko'rsatadi. Groups buyrug'iga foydalanuvchi nomini qo'shsangiz, u foydalanuvchi qaysi guruhlarga a'zo ekanligini ko'rasiz. Davom eting va g'oyani qabul qilish uchun foydalanuvchi nomini ko'rsatmasdan va ko'rsatmasdan Groups buyruq bering.
Ubuntu Server platformasida siz har bir foydalanuvchi hisobingiz foydalanuvchi nomingiz bilan bir xil nomga ega boʻlgan guruh aʼzosi ekanligini koʻrishingiz mumkin. Yuqorida aytib o'tganimdek, foydalanuvchi hisobini yaratganingizda, siz foydalanuvchi bilan bir xil nomdagi guruh yaratasiz. Biroq, ba'zi Linux distributivlarida foydalanuvchining asosiy guruhi sukut bo'yicha o'rniga users deb nomlangan guruh bo'ladi. Agar siz Ubuntu ish stoli platformasida foydalanuvchi sifatida Groups buyrug'ini bajarmoqchi bo'lsangiz, ehtimol siz qo'shimcha guruhlarni ko'rasiz. Buning sababi, server platformasi bo'lishga mos keladigan Linux distributivlari ko'pincha yo'q qilinadi va ish stoli platformalaridagi foydalanuvchilar printerlar, audio kartalar va boshqalar kabi ko'proq narsalarga kirishlari kerak. O'rnatilishi mumkin bo'lgan ba'zi paketlar serverga qo'shimcha tizim foydalanuvchilarini ham qo'shadi.
/etc/group faylining mazmunini bilish kifoya. Biz ilgari ko'rib chiqqan /etc/passwd fayliga o'xshab, /etc/group fayli tizimingizda yaratilgan guruhlarga oid ma'lumotlarni o'z ichiga oladi. Davom eting va tizimingizda ushbu faylni ko'rib chiqing:
cat /etc/group
Avvalgidek, bu fayldagi ustunlar ikki nuqta bilan ajratilgan, lekin har bir satr faqat to'rtta ustundan iborat. Birinchi ustunda bizda guruh nomi bor. Buning ajablanarli joyi yo'q. Ikkinchisida, biz guruh uchun parolni saqlashimiz mumkin, lekin bu ko'pincha ishlatilmaydi, chunki bu aslida xavfsizlik uchun xavf tug'diradi. Uchinchi ustunda bizda GID mavjud bo'lib, u foydalanuvchilarni muhokama qilganimizdagi UID kontseptsiyasiga o'xshaydi. Nihoyat, oxirgi ustunda biz har bir guruhning a'zosi bo'lgan har bir foydalanuvchining vergul bilan ajratilgan ro'yxatini ko'ramiz. Bu holatda biz bitta foydalanuvchi, jay lxd guruhining a'zosi ekanligini ko'rmoqdamiz.
Bir nechta yozuvlarda hech qanday guruh aʼzoligi koʻrsatilmagan. Har bir foydalanuvchi haqiqatan ham o'z guruhining a'zosi, shuning uchun bu faylda aniq aytilmagan bo'lsa ham, bu nazarda tutilgan. Agar siz foydalanuvchilaringiz uchun /etc/passwd yozuvlarini ko'rib chiqsangiz, ularning asosiy guruhi (GID ko'rinishidagi uchinchi ustun sifatida ko'rsatilgan) /etc/group faylidagi guruhga havola qilishini ko'rasiz.
Tizimingizda yangi guruhlar yaratish oson va foydalanuvchilaringizni va ular nima qila olishlarini toifalarga ajratish uchun ajoyib g'oyadir. Ehtimol, siz buxgalterlar uchun buxgalteriya guruhini, IT bo'limidagilar uchun administratorlar guruhini va sotuvchilaringiz uchun savdo guruhini yaratishingiz mumkin. groupadd buyrug'i yangi guruhlar yaratish imkonini beradi. Agar xohlasangiz, /etc/group faylini tahrirlashingiz va guruh ma'lumotlari bilan yangi qatorni qo'lda qo'shishingiz mumkin, ammo mening fikrimcha, groupadd dan foydalanish biroz ishingizni tejaydi va guruh yozuvlari to'g'ri yaratilishini ta'minlaydi. Guruh va foydalanuvchi fayllarini to'g'ridan-to'g'ri tahrirlash odatda rad etiladi (va matn terish xatosi jiddiy muammolarni keltirib chiqarishi mumkin). Qanday bo'lmasin, groupadd buyrug'i bilan yangi guruh yaratish misoli quyida keltirilgan:
sudo groupadd admins
/etc/group faylini qayta ko'rib chiqsangiz, faylda yangi qator yaratilganini va siz uchun GID tanlanganini ko'rasiz (birinchisi hali ishlatilmagan). ). Guruhni olib tashlash ham xuddi shunday oson. Faqat groupdel buyrug'ini va undan keyin olib tashlamoqchi bo'lgan guruh nomini bering:
sudo groupdel admins
foydalanuvchilarni guruhlar bilan bog'lash imkonini beruvchi usermod buyrug'ini ko'rib chiqamiz. usermod buyrug'i ko'p yoki kamroq Shveytsariya armiyasi pichog'i ; ushbu buyruq bilan bir nechta narsalarni qilishingiz mumkin (guruhga foydalanuvchi qo'shish - bu uning qobiliyatlaridan biri). Agar biz administratorlar guruhimizga foydalanuvchi qo'shmoqchi bo'lsak, quyidagi buyruqni beramiz:
sudo usermod -aG admins myuser
Bu misolda biz -a opsiyasini taqdim etmoqdamiz, ya'ni qo'shish degan ma'noni anglatadi va darhol -G dan foydalanamiz, ya'ni biz ikkinchi darajali guruh a'zoligini o'zgartirmoqchimiz. Men ikkita variantni bitta chiziqcha ( -aG ) bilan birga qo'ydim, lekin siz ularni alohida ( -a -G ) ham berishingiz mumkin. Men keltirgan misol faqat foydalanuvchini qo'shimcha guruhlarga qo'shadi, bu ularning asosiy guruhini almashtirmaydi.
-a opsiyasini o'tkazib yubormaslikdan ehtiyot bo'ling, chunki uning o'rniga barcha joriy guruh a'zolarini yangisiga almashtirasiz, bu odatda siz xohlagan narsa emas. -a opsiyasi ushbu foydalanuvchi uchun mavjud guruh a'zolari ro'yxatini qo'shish yoki qo'shishni anglatadi.
-g opsiyasidan foydalanasiz ( avvalgi G harfi oʻrniga kichik g harfi): sudo usermod -g Usermod buyrug'i uchun man sahifalarini ko'rib chiqing, u sizning foydalanuvchilaringiz bilan qilish imkonini beradigan barcha ajoyib narsalarni ko'rish uchun. Usermod buyrug'i uchun man sahifasini quyidagi buyruq bilan ko'rib chiqishingiz mumkin:
man usermod
Yana bir misol, foydalanuvchining /home katalogini o'zgartirish. Faraz qilaylik, foydalanuvchilaringizdan biri ismni o'zgartirdi, shuning uchun siz ularning foydalanuvchi nomini o'zgartirmoqchisiz, shuningdek, ularning oldingi home katalogini (va ularning fayllarini) yangisiga ko'chirmoqchisiz. Buni quyidagi buyruqlar hal qiladi:
sudo usermod -d /home/jsmith jdoe -m sudo usermod -l jsmith jdoe
jdoe uchun home katalogini /home/jdoe ga ko'chirmoqdamiz, so'ngra ikkinchi misolda foydalanuvchi nomini jdoe dan jsmith ga o'zgartiramiz.
Agar siz foydalanuvchini guruhdan olib tashlamoqchi bo'lsangiz, buni amalga oshirish uchun gpasswd buyrug'idan foydalanishingiz mumkin. gpasswd -d bu ishni bajaradi:
sudo gpasswd -d
Aslida, gpasswd foydalanuvchini guruhga qo'shish uchun usermod o'rniga ham ishlatilishi mumkin:
sudo gpasswd -a Shunday qilib, endi siz guruhlarni qanday boshqarishni bilasiz. Guruhlarni samarali boshqarish bilan siz serveringizdagi resurslarni yaxshiroq boshqarishingiz mumkin bo'ladi. Albatta, ruxsatlarni qanday boshqarish kerakligi haqida ba'zi tushuntirishlarsiz guruhlar nisbatan foydasizdir (aks holda, hech narsa guruh a'zosini manbaga kirishga ruxsat berishga majbur qilmaydi). Keyinchalik ushbu bobda biz ruxsatlarni ko'rib chiqamiz, shunda siz foydalanuvchi ruxsatini qanday boshqarishni to'liq tushunasiz.
passwd buyrug'ining bir nechta misollarini keltirdim. Esingizda bo'lsa, passwd buyrug'i bizga hozirda tizimga kirgan foydalanuvchining parolini o'zgartirishga imkon beradi. Bundan tashqari, root sifatida passwd dan foydalanish (va foydalanuvchi nomini taqdim etish) tizimimizdagi istalgan foydalanuvchi hisobi uchun parolni o'zgartirish imkonini beradi. Ammo bu buyruqning barchasi qila olmaydi.
Passwd buyrug'i haqida men e'tiborsiz qoldirgan narsa shundaki, siz undan foydalanuvchi hisobini blokirovka qilish va qulfdan chiqarish uchun foydalanishingiz mumkin. Buni qilishni xohlashingiz uchun ko'p sabablar bor. Misol uchun, agar foydalanuvchi ta'tilga yoki uzaytirilgan ta'tilga ketayotgan bo'lsa, ehtimol siz uning hisobini ular yo'qligida ishlatib bo'lmasligi uchun bloklashni xohlaysiz. Axir, faol hisoblar qanchalik kam bo'lsa, sizning hujum maydoni shunchalik kichik bo'ladi. Hisobni bloklash uchun -l opsiyasidan foydalaning:
sudo passwd -l
sudo passwd -u
Biroq, agar foydalanuvchi ochiq kalit autentifikatsiyasidan foydalangan holda SSH orqali serverga kirish imkoniga ega bo'lsa, hisobni bloklash foydalanuvchining tizimga kirishiga to'sqinlik qilmaydi. Bunday holda, siz ularning SSH-dan foydalanish qobiliyatini ham olib tashlashni xohlaysiz. Buning keng tarqalgan usullaridan biri ma'lum bir guruh a'zolari bo'lgan foydalanuvchilarga SSH kirishini cheklashdir. Hisobni bloklaganingizda, ularni guruhdan olib tashlang. Agar bu siz uchun yangi bo'lsa, ushbu muhokamaning SSH qismi haqida ko'p tashvishlanmang. SSH serveringiz xavfsizligini 21-bobda, Serveringizni himoya qilishda muhokama qilamiz. Hozircha shuni yodda tutingki, siz hisoblarni blokirovka qilish yoki blokdan chiqarish uchun passwd-dan foydalanishingiz mumkin, agar siz SSH-dan foydalansangiz, foydalanuvchilarning tizimga kirishiga yo'l qo'ymaslik uchun undan bloklashni xohlaysiz.
passwd buyrug'idan ko'ra ko'proq narsa bor, chunki biz o'z siyosatlarimizni ham amalga oshirishimiz mumkin, masalan, parolning amal qilish muddati tafsilotlarini ko'rish yoki sozlash.
Avvalroq men foydalanuvchi paroliga amal qilish muddatini belgilashingiz mumkinligini aytib o'tgandim (bizning /etc/shadow fayli bo'yicha muhokamamiz davomida). Ushbu bo'limda biz buni qanday qilishni ko'rib chiqamiz. Xususan, chage buyrug'i bizga bu qobiliyatni beradi. Biz foydalanuvchi parolining amal qilish muddatini o'zgartirish uchun chage dan foydalanishimiz mumkin, ammo bu /etc/ soya faylini ko'rishdan ko'ra joriy amal qilish muddati haqidagi ma'lumotlarni ko'rishning qulayroq usulidir. Chage ning -l opsiyasi bilan foydalanuvchi nomini taqdim etish bilan birga biz tegishli ma'lumotlarni ko'rishimiz mumkin:
sudo chage -l
chage ni ishga tushirish uchun sudo yoki root dan foydalanish shart emas. Ruxsatlarni oshirishga hojat qoldirmasdan o'z foydalanuvchi nomingiz uchun amal qilish muddati haqidagi ma'lumotlarni ko'rishingiz mumkin. Biroq, agar siz o'zingizning hisobingizdan boshqa har qanday foydalanuvchi hisobi ma'lumotlarini ko'rishni istasangiz, sudo dan foydalanishingiz kerak bo'ladi.
Quyidagi misolda biz ushbu buyruqning natijasini namunaviy foydalanuvchi hisobidan ko'rishimiz mumkin:
Chiqishda biz amal qilish muddati, parolni o'zgartirish orasidagi maksimal kunlar soni va boshqalar uchun qiymatlarni ko'rishimiz mumkin. Asosan, bu /etc/shadow da saqlangan bir xil ma'lumot, lekin uni o'qish ancha oson.
Agar siz ushbu ma'lumotni o'zgartirmoqchi bo'lsangiz, chage yana tanlov vositasi bo'ladi.Afsuski, hamma ham buni qilishni xohlamaydi. Chage buyrug'i foydalanuvchi birinchi marta tizimga kirganida parolni o'zgartirishga majbur qilish imkonini beradi. Asosan, uning amal qilish muddati tugashi uchun kunlar sonini 0 ga quyidagicha belgilashingiz mumkin:
sudo chage -d 0 o'zgartirgan foydalanuvchi hisobiga chage -l ni qayta ishga tushirsangiz, ushbu buyruqning natijalarini darhol ko'rishingiz mumkin:
sudo chage -l Chiqish parolni o'zgartirish haqidagi ma'lumotlarni ko'rsatadi:
2.12-rasm: Parolni o'zgartirish davri talab qilingan foydalanuvchi ro'yxatini ko'rsatadigan chage buyrug'i
Muayyan kundan keyin parolni o'zgartirishni talab qiladigan foydalanuvchi hisobini o'rnatish uchun quyidagilar kerak bo'ladi:
sudo chage -M 90 Ushbu misolda men foydalanuvchi hisobini muddati tugaydigan qilib o'rnatyapman va 90 kun ichida parolni o'zgartirishni talab qilaman. Parolni o'zgartirishdan oldin kutilayotgan sana 7 kunga yetganda, foydalanuvchi tizimga kirganida ogohlantirish xabarini ko'radi.
Yuqorida aytib o'tganimdek, foydalanuvchilar ko'pincha parol talablarini aldash uchun qo'llaridan kelganini qiladilar va parolni dastlabki talab qilingan parolni o'zgartirgandan so'ng o'z parollarini avvalgisiga o'zgartirishga harakat qilishlari mumkin. Siz minimal kunlar sonini -m bayrog'i bilan belgilashingiz mumkin, chunki biz uni 5 kunga o'rnatgan keyingi misolda ko'rishingiz mumkin:
sudo chage -m 5 dscully
Minimal parol yoshini o'rnatishning hiylasi shundan iboratki, foydalanuvchi parolini asl paroliga o'zgartirish noqulay bo'lishi uchun uni o'rnatish, lekin siz hali ham foydalanuvchi o'z parolini o'zgartirishga ehtiyoj sezganida o'zgartirish imkoniyatiga ega bo'lishini xohlaysiz ( shuning uchun ham uni juda uzoqqa qo'ymang). Agar foydalanuvchi minimal kunlar oʻtishidan oldin oʻz parolini oʻzgartirmoqchi boʻlsa (masalan, foydalanuvchi oʻz hisobi buzilgan boʻlishi mumkin deb hisoblasa), ular har doim uni oʻzlari uchun oʻzgartirishingiz mumkin. Biroq, agar siz parol talablarini juda ko'p noqulaylik tug'dirsangiz, u ham sizga qarshi ishlashi mumkin.
Keyinchalik, parol siyosatini o'rnatishni muhokama qilishimiz kerak. Axir, foydalanuvchilaringizni o'z parollarini o'zgartirishga majburlash, agar ular buni oddiy narsaga o'zgartirsalar, unchalik yaxshi emas, masalan, abc123. Parol siyosati foydalanuvchilarga uzunlik, murakkablik va hokazolar uchun talablarni majburlash imkonini beradi.
Buni osonlashtirish uchun bizda Pluggable autentifikatsiya moduli ( PAM ) mavjud. PAM bizga qo‘shimcha funksiya va autentifikatsiya jarayoni ustidan nazoratni taqdim etadi, shuningdek, autentifikatsiyani kengaytirish va qo‘shimcha funksiyalarni qo‘shish uchun foydalanishimiz mumkin bo‘lgan qo‘shimcha plaginlarni taqdim etadi. Garchi PAM haqida to'liq ma'lumot ushbu kitob doirasidan tashqarida bo'lsa-da, agar siz keyinchalik qo'shimcha funktsiyalarni qo'shmoqchi bo'lsangiz, uni yodda saqlashni maslahat beraman.
Parol siyosatini o'rnatish mavzusiga xos bo'lgan holda, biz buni yoqish uchun PAM modulini o'rnatishimiz mumkin, bu yangi paketni o'rnatishni o'z ichiga oladi:
sudo apt install libpam-cracklib
Keyinchalik, Ubuntu bilan ta'minlangan quyidagi faylni ko'rib chiqamiz. Uni nano kabi matn muharriri bilan ochishingiz mumkin, chunki biz uni tahrirlashimiz kerak:
sudo nano /etc/pam.d/common-password
Autentifikatsiya bilan bog'liq konfiguratsiya fayllarini o'zgartirishda juda muhim maslahat (masalan, parol talablari, sudo- ga kirish, SSH va boshqalar) siz o'zgartirishlar kiritilganda root shellni doimo ochiq saqlashingiz va boshqa shellda ushbu o'zgarishlarni sinab ko'ring.. O'zgartirishlaringiz sinchkovlik bilan tekshirilganiga 100% ishonch hosil qilmaguningizcha, root oynangizdan chiqmang. Siyosatni sinab ko'rayotganda, nafaqat sizning foydalanuvchilaringiz, balki administratorlaringiz ham tizimga kirishi mumkinligiga ishonch hosil qiling. Aks holda, serverga kirish va o'zgartirishlar kiritish imkoniyatini olib tashlashingiz mumkin.
Parollaringiz uchun history talabini yoqish uchun (tizim foydalanuvchi foydalangan oxirgi bir necha parollarni eslab qoladi va ularni qayta ishlatishga yo'l qo'ymaydi), faylga quyidagi qatorlarni qo'shishimiz mumkin:
password required pam_pwhistory.so remember=99 use_authok
Misol konfiguratsiya qatorida men memory=99 dan foydalanmoqdaman, bu (siz taxmin qilganingizdek) tizimimiz har bir foydalanuvchi uchun oxirgi 99 ta parolni eslab qolishiga olib keladi va ularni qaytadan ushbu parollardan foydalanishiga yo'l qo'ymaydi. Agar siz minimal parol yoshini avvalroq sozlagan boʻlsangiz, masalan, 5 kun, agar foydalanuvchi parolini har 5 kunda bir marta, 99 marta oʻzgartirishini hisobga olsangiz, foydalanuvchining asl paroliga qaytishi uchun 495 kun kerak boʻladi. Bu foydalanuvchiga eski parollaridan foydalanishni deyarli imkonsiz qiladi.
/etc/pam.d/common-password faylida eslatib o'tishga arziydigan yana bir maydon difok=3 ni o'qiydigan bo'limdir. Ushbu konfiguratsiya parolni maqbul deb hisoblashdan oldin kamida uchta belgi boshqacha bo'lishi kerakligi haqida batafsil ma'lumot beradi. Aks holda, parol eskisiga juda o'xshash deb hisoblanadi va rad etiladi. Ushbu qiymatni o'zingiz yoqtirgan narsaga o'zgartirishingiz mumkin; sukut bo'yicha odatda 5, lekin Ubuntu ushbu konfiguratsiya faylini amalga oshirishda uni 3 ga qo'yadi. Bunga qo'shimcha ravishda, siz faylda eslatib o'tilgan noaniq narsalarni ham ko'rasiz, bu oddiy parollardan foydalanishni oldini oladi (masalan, umumiy lug'at so'zlari va boshqalar).
Parol siyosatini o'rnatish serveringiz xavfsizligini oshirish uchun ajoyib amaliyotdir. Biroq, o'zingizni bezovta qilmaslik ham muhimdir. Xavfsizlik va foydalanuvchilarning umidsizliklari o'rtasida muvozanatni saqlash uchun muammo har doim xavfsizlikni oshirish uchun etarli cheklovlar yaratish va shu bilan birga foydalanuvchilarning umidsizliklarini kamaytirishdir. Albatta, oddiy foydalanuvchiga “parol” so‘zini aytib o‘tishning o‘zi kifoya qiladi, shuning uchun hammani xursand qila olmaysiz. Ammo umumiy tizim xavfsizligi nuqtai nazaridan, foydalanuvchilaringiz administrator sifatida o'zlarining (va kompaniyangizning) ma'lumotlarini xavfsiz saqlash uchun zarur choralarni ko'rganingizga ishonch hosil qilishlari haqiqatini qadrlashiga aminman. Gap kelganda, eng yaxshi fikringizni ishlating.
Biz xavfsizlik mavzusida bo'lganimiz sababli, keyingi bo'limda ko'rib chiqiladigan sudo- ning o'zini sozlashni ham ko'rib chiqishimiz kerak.
Hozirgacha biz ushbu kitobda sudo-dan bir necha marta foydalanganmiz. Shu nuqtada, siz allaqachon bilishingiz kerakki, sudo buyruqlarni xuddi boshqa foydalanuvchi sifatida tizimga kirgandek bajarishga imkon beradi, root esa standart hisoblanadi. Biroq, biz hali bu haqda hech qanday rasmiy munozaraga ega emasmiz va sizning foydalanuvchi hisoblaringizdan qaysi biri sudo dan foydalanishi mumkinligini qanday o'zgartirishni muhokama qilmaganmiz.
Barcha Linux tizimlarida root hisob qaydnomangizni kuchli parol bilan himoya qilishingiz va uni iloji boricha kamroq odam ishlatishini cheklashingiz kerak. Ubuntu'da root hisobi baribir qulflangan, shuning uchun parol o'rnatish orqali uni qulfdan chiqarmasangiz, tizimga kirish uchun uni ishlatib bo'lmaydi. Sudo- dan foydalanish buyruqlarni to'g'ridan-to'g'ri bajarish uchun root sifatida kirishga muqobildir, shuning uchun siz administratorlarga root parolingizni bermasdan yoki root hisobini qulfdan chiqarmasdan sudo yordamida root huquqlarini talab qiladigan vazifalarni bajarishga ruxsat berishingiz mumkin. Darhaqiqat, sudo sizga biroz ko'proq donador bo'lishga imkon beradi. To'g'ridan-to'g'ri rootdan foydalanish, asosan, hammasi yoki hech narsa emas - agar kimdir root parolini bilsa va root hisobi yoqilgan bo'lsa, u cheklanmagan va xohlagan narsani qila oladi. sudo bilan, bu ham to'g'ri bo'lishi mumkin, lekin aslida siz ba'zi foydalanuvchilarni faqat ma'lum buyruqlardan foydalanishni cheklashingiz mumkin va shuning uchun ular tizimda qila oladigan narsalar doirasini cheklashingiz mumkin. Misol uchun, siz administratorga dasturiy ta'minot yangilanishlarini o'rnatish uchun ruxsat berishingiz mumkin, lekin serverni qayta ishga tushirishga ruxsat bermaysiz.
Odatiy bo'lib, sudo guruhi a'zolari sudo-dan hech qanday cheklovlarsiz foydalanishlari mumkin.
Asosan, ushbu guruh a'zolari root qila oladigan hamma narsani qilishlari mumkin (bu hamma narsa). O'rnatish vaqtida siz yaratgan foydalanuvchi hisobi sudo a'zosi bo'ldi. Qo'shimcha foydalanuvchilarga sudo ga kirish huquqini berish uchun ularni sudo guruhiga qo'shish kifoya:
sudo usermod -aG sudo
sudo guruhidan odatiy hol bo'yicha foydalanmaydi yoki hatto sudo ni avtomatik ravishda o'rnatmaydi. Boshqa distrolar sudo-ni qo'lda o'rnatishingizni talab qiladi va sudo- ga kirishni boshqarish uchun boshqa guruhdan (masalan, wheel) foydalanishi mumkin.
Ammo yana, bu foydalanuvchilarga hamma narsaga kirish imkonini beradi va bu siz xohlagan narsa bo'lishi mumkin yoki bo'lmasligi mumkin. Haqiqiy sudo ni sozlash uchun biz visudo buyrug'idan foydalanamiz. Bu buyruq sudo-ga kirishni boshqaradigan konfiguratsiya fayli bo'lgan /etc/sudoers ni tahrirlashda yordam beradi. Matn muharriri yordamida /etc/sudoers-ni o'zingiz tahrirlashingiz mumkin bo'lsa-da, sudo-ni shu tarzda sozlash qat'iyan tavsiya etilmaydi. Visudo buyrug'i sizning o'zgarishlaringiz to'g'ri sintaksisga mos kelishini tekshiradi va faylni tasodifan yo'q qilishning oldini olishga yordam beradi. Bu juda yaxshi yondashuv, chunki agar siz /etc/sudoers faylida xatolikka yo'l qo'ygan bo'lsangiz, server ustidan hech kim ma'muriy boshqaruvni qo'lga kirita olmaydigan vaziyatga tushib qolishingiz mumkin. Va bunday xatodan xalos bo'lish yo'llari mavjud bo'lsa-da, bu, albatta, o'zingizni topish juda yoqimli vaziyat emas! Shunday qilib, bu erda olib ketish hech qachon /etc/sudoers faylini to'g'ridan-to'g'ri tahrirlash emas; Buning uchun har doim visudo dan foydalaning.
Xato qilganingizda visudo buyrug'i ko'rsatadigan ogohlantirish turiga misol:
Agar siz ushbu xatoni ko'rsangiz, faylni tahrirlash uchun qaytish uchun e tugmasini bosing va keyin xatoni tuzating. visudo-ni qobiqdan ishga tushirganingizda, siz /etc/sudoers fayli ochilgan holda matn muharririga o'tasiz. Keyin faylga o'zgartirishlar kiritishingiz va uni boshqa matnli fayl kabi saqlashingiz mumkin. Odatiy bo'lib, visudo dan foydalanganda Ubuntu nano matn muharririni ochadi. Nano bilan siz Ctrl + w yordamida o'zgarishlarni saqlashingiz mumkin va matn muharriridan Ctrl + x bilan chiqishingiz mumkin. Shunday qilib, visudo sizga sudo-ga kim kirishi mumkinligiga o'zgartirishlar kiritish imkonini beradi. Ammo bu o'zgarishlarni qanday amalga oshirasiz? Davom eting va visudo ochiladigan /etc/sudoers faylini aylantiring va siz quyidagiga o'xshash qatorni ko'rishingiz kerak:
%sudo ALL=(ALL:ALL) ALL
sudo guruhining a'zosi bo'lgan har bir kishiga sudo-ga kirish imkonini beruvchi konfiguratsiya liniyasi. Guruh nomini xohlaganingizcha o'zgartirishingiz mumkin, masalan, uning o'rniga adminlar deb nomlangan guruh yaratmoqchisiz. Agar buni oʻzgartirsangiz, /etc/sudoers faylini tahrirlashdan yoki tizimdan chiqishdan oldin oʻsha guruhni aslida yaratganingizga ishonch hosil qiling va oʻzingizni va xodimlaringizni unga aʼzo boʻlish uchun qoʻshing; Agar siz o'zingizni serverga administrator kirish huquqidan mahrum bo'lsangiz, bu juda noqulay bo'ladi.
Albatta, siz guruh bo'yicha kirishni yoqishingiz shart emas. Buning o'rniga foydalanuvchi nomini chaqirishingiz mumkin. /etc/sudoers faylida guruhlardan oldin %, foydalanuvchilar esa yo'q. Bunga misol sifatida faylda quyidagi qator ham mavjud:
root ALL=(ALL:ALL) ALL
Bu erda biz foydalanuvchi nomini chaqirmoqdamiz (bu holda, root ), lekin chiziqning qolgan qismi men ilgari ko'rsatganim bilan bir xil. Boshqalarga kirish huquqini berish uchun siz ushbu satrni albatta nusxalashingiz va uni bir yoki bir necha marta joylashtirishingiz mumkin ( boshqa foydalanuvchi nomi uchun root o'rniga ), guruh yondashuvidan foydalanish haqiqatan ham eng yaxshi usuldir. Guruhga (masalan, sudo guruhi) foydalanuvchilarni qo'shish va o'chirish har safar visudo dan foydalanishdan ko'ra osonroqdir.
/etc/sudoers konfiguratsiya satrlaridagi variantlar aslida nimani anglatishini qiziqtirgandirsiz. Hozirgacha ikkala misolda ALL=(ALL:ALL) All ishlatilgan. Sudo ni to'liq tushunish uchun boshqa sohalarni tushunish juda muhim, shuning uchun ularni ko'rib chiqamiz ( misol sifatida yana root chizig'idan foydalanamiz).
Birinchi ALL root har qanday terminaldan sudo-dan foydalanishi mumkinligini anglatadi. Ikkinchi ALL, root boshqa har qanday foydalanuvchini o'zini namoyon qilish uchun sudo- dan foydalanishi mumkinligini anglatadi. Uchinchi ALL root boshqa har qanday guruhga o'xshab qolishi mumkinligini anglatadi. Nihoyat, oxirgi ALL bu foydalanuvchi qanday buyruqlarni bajarishi mumkinligini bildiradi; bu holda, u xohlagan har qanday buyruq.
Bu uyni haydashga yordam berish uchun men qo'shimcha misollar keltiraman. Mana faraziy misol:
charli ALL=(ALL:ALL) /sbin/reboot,/sbin/shutdown
Charlie foydalanuvchisiga qayta ishga tushirish va o'chirish buyruqlarini bajarishga ruxsat beramiz. Agar foydalanuvchi charli boshqa biror narsa qilishga harakat qilsa (masalan, paketni o'rnatish), ular xato xabarini oladi:
Sorry, user charlie is not allowed to execute '/usr/bin/apt install tmux' as root on ubuntu.
Biroq, agar Charli serverda qayta ishga tushirish yoki o'chirish buyruqlaridan foydalanmoqchi bo'lsa, ular buni qila oladilar, chunki biz ushbu foydalanuvchining sudo ruxsatini o'rnatish vaqtida bu buyruqlarni aniq chaqirganmiz. Biz buni birinchi ALL ni mashina nomiga o'zgartirish orqali cheklashimiz mumkin, bu holda misollarim uchun foydalanayotgan serverning xost nomiga murojaat qilish uchun ubuntu. Shuningdek, men Charliga ishga ruxsat berilgan buyruqni o'zgartirdim:
charli ubuntu=(ALL:ALL) /usr/bin/apt
Sudo ruxsatlarini tahrirlashda qisqartirilgan versiyalar o'rniga buyruqlar uchun to'liq yo'llardan foydalanish har doim yaxshi fikr. Masalan, biz bu erda apt o'rniga /usr/bin/apt dan foydalandik. Bu juda muhim, chunki foydalanuvchi apt nomli skriptni yaratishi mumkin, biz ularga odatda ruxsat bermaydigan yomon ishlarni qilish mumkin. To'liq yo'ldan foydalanish orqali biz foydalanuvchini o'sha yo'lda saqlangan ikkilik bilan cheklaymiz.
Endi Charli faqat apt dan foydalana oladi. Ular apt update, apt dist-upgrade va apt ning boshqa har qanday kichik buyrug'idan foydalanishlari mumkin. Ammo agar ular serverni qayta ishga tushirishga, himoyalangan fayllarni o'chirishga, foydalanuvchilarni qo'shishga yoki biz aniq o'rnatmagan boshqa narsalarni qo'shishga harakat qilsalar, ular buni amalga oshirishga to'sqinlik qiladilar.
Biroq, bizda boshqa muammo bor. Biz Charliga boshqa foydalanuvchilarning o'zini tutishiga ruxsat beramiz. Paketlarni oʻrnatish kontekstidan kelib chiqqan holda, bu mutlaqo dahshatli boʻlmasligi mumkin (agar u foydalanuvchi ham paketlarni oʻrnatish huquqiga ega boʻlmasa, oʻzini boshqa foydalanuvchi sifatida koʻrsatish befoyda boʻlar edi), lekin agar kerak boʻlmasa, bunga ruxsat berish notoʻgʻri. Bunday holda, Charli boshqa foydalanuvchilar kabi buyruqlarni bajarish uchun sudo ning -u opsiyasidan foydalanishiga yo'l qo'ymaslik uchun (ALL:ALL) qatordan butunlay olib tashlashimiz mumkin:
charli ubuntu = /usr/bin/apt
Boshqa tomondan, agar biz haqiqatan ham Charli boshqa foydalanuvchilarning (lekin faqat ma'lum foydalanuvchilarning) o'zini namoyon qila olishini istasak, biz ushbu qiymatlarni o'rnatish orqali charli nomidan harakat qilishga ruxsat berilgan foydalanuvchi nomi va guruhini chaqirishimiz mumkin:
charli ubuntu=(dscully:admins) ALL
Bu misolda Charli foydalanuvchi dscully va guruh administratorlari nomidan buyruqlarni bajarishi mumkin.
Albatta, sudo uchun men ushbu bo'limda aytib o'tganimdan ko'ra ko'proq narsa bor. Sudo haqida to'liq kitoblar yozilishi mumkin (va bo'lgan), ammo bu vositani kundalik boshqarish uchun kerak bo'ladigan narsalarning 99% har bir foydalanuvchi nima qila olishi haqida aniq bo'lgan holda foydalanuvchilarga kirish huquqini qanday qo'shishni o'z ichiga oladi. Eng yaxshi amaliyot sifatida, imkoni boricha guruhlardan foydalaning (masalan, sizda mos guruh, qayta ishga tushirish guruhi va boshqalar bo'lishi mumkin ) va kim nima qila olishi haqida iloji boricha aniqroq bo'ling. Shunday qilib, siz nafaqat asosiy hisob qaydnomasini shaxsiy (yoki undan ham yaxshiroq, o'chirib qo'yishingiz mumkin ), balki serverlaringizda ko'proq javobgarlikka ega bo'lasiz.
Endi biz sudo ga kirish huquqini o'rganib chiqdik, keyin biz ruxsatlarni ko'rib chiqamiz, bu bizga foydalanuvchilar kirishi mumkin bo'lgan narsalarni yanada ko'proq nazorat qilish imkonini beradi.
Ushbu bo'limda biz ushbu bobda hozirgacha qilgan barcha foydalanuvchi boshqaruvi birlashadi. Biz hisoblarni qanday qo'shishni, hisoblarni boshqarishni va ularni himoya qilishni o'rgandik, lekin aslida kim ularga kirish imkoniga ega bo'lsa, resurslarni boshqarish bo'yicha hech qanday ish qilmadik. Ushbu bo'limda men sizga Ubuntu serverida ruxsatlar qanday ishlashi haqida qisqacha ma'lumot beraman va keyin ularni sozlash uchun ba'zi misollar keltiraman.
Ishonchim komilki, siz ls buyrug'i bilan katalog tarkibini qanday ro'yxatga olishni tushunasiz. Ko'rish ruxsatnomalari haqida gap ketganda, -l bayrog'i ayniqsa qulaydir, chunki uzun ro'yxat taqdim etadigan chiqish bizga ob'ektning ruxsatlarini ko'rish imkonini beradi:
ls -l
Quyida ba'zi bir misol, gipotetik fayllar ro'yxati keltirilgan:
-rw-rw-rw- 1 doctor 5 Jan 11 12:52 welcome
-rw-r--r-- 1 root root 665 Feb 19 2014 profile
-rwxr-xr-x 1 dalek dalek 35125 Nov 7 2013 exterminate
Har bir satrda biz bir nechta ma'lumot sohalarini ko'ramiz. Birinchi ustun ob'ekt uchun ruxsatnomamizdir (masalan, -rw-r—r-- ), biz uni tez orada batafsil ko'rib chiqamiz. Ob'ekt uchun havolalar sonini ham ko'ramiz (ikkinchi ustun). Havolalar ushbu bobning doirasidan tashqarida, lekin 5-bobda, Fayllar va kataloglarni boshqarishda muhokama qilinadi.Davom etsak, uchinchi ustunda faylga ega bo'lgan foydalanuvchi, to'rtinchi ustunda faylga ega bo'lgan guruh, beshinchi ustunda bayt hajmi, oltinchi ustunda faylga ega bo'lgan foydalanuvchi ko'rsatiladi. Nihoyat, faylning nomi bor.
Yodda tutingki, qobiq qanday tuzilganiga qarab, chiqishingiz boshqacha ko'rinishi va maydonlar turli joylarda bo'lishi mumkin. Ruxsatlar haqidagi munozara uchun bizni asli qiziqtiradigan narsa bu ruxsatlar qatori, shuningdek, egalik qiluvchi foydalanuvchi va guruhdir. Bunday holda, birinchi fayl ( xush kelibsiz deb nomlangan) doktor ismli foydalanuvchiga tegishli ekanligini ko'rishimiz mumkin. Ikkinchi fayl profil deb nomlanadi va root ga tegishli. Nihoyat, bizda dalek ismli foydalanuvchiga tegishli exterminate nomli fayl mavjud.
-rw-rw-rw-, -rw-r--r-- va -rwxr-xr-x ruxsat satrlariga egamiz. Agar siz ilgari ruxsatnomalar bilan ishlamagan bo'lsangiz, ular g'alati tuyulishi mumkin, ammo ularni sindirish juda oson. Har bir ruxsat qatorini to'rtta guruhga bo'lish mumkin, chunki men sizga quyidagi jadvalda ko'rsataman: