root va sudo — imtiyozlar qanday ishlaydi
Muammodan boshlaylik
apt install nginx
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock, are you root?
"Are you root?" — dastur o'rnatish, tizim sozlamalarini o'zgartirish, xizmatlarni boshqarish oddiy foydalanuvchiga ruxsat etilmagan. Buning uchun root huquqi kerak. Lekin doimo root sifatida ishlash — juda xavfli. Yechim — sudo.
root — "xudo" foydalanuvchi
root (UID 0) — Linux da cheksiz huquqli foydalanuvchi:
- Istalgan faylni o'qish, o'zgartirish, o'chirish
- Istalgan jarayonni to'xtatish
- Tizimni butunlay buzish — ogohlantirishsiz
rm -rf /etc # oddiy foydalanuvchi: Permission denied
# root: ... tizim endi yuklanmaydi
root uchun "Permission denied" yo'q. Shuning uchun root sifatida doimiy ishlash — o'qlangan qurol bilan yurish kabi.
sudo — vaqtincha root bo'lish
sudo ("superuser do") — bitta buyruqni root huquqi bilan bajarish:
sudo apt install nginx
[sudo] password for otabek:
O'z parolingizni kiriting (root ning emas). Keyingi ~15 daqiqa davomida qayta so'ramaydi.
Qolgan hamma narsa — oddiy foydalanuvchi sifatida. Faqat haqiqatan kerak bo'lgan joyda — sudo.
Kim sudo ishlata oladi?
Ubuntu da — sudo guruhi a'zolari (Debian/Fedora da ba'zan wheel):
groups # sudo bormi?
sudo usermod -aG sudo malika # malikaga ruxsat berish
Ruxsatsiz urinish:
malika is not in the sudoers file. This incident will be reported.
Foydali sudo shakllari
sudo !! # oxirgi buyruqni sudo bilan takrorlash
sudo -i # root sessiyasini ochish (prompt # bo'ladi)
sudo -u www-data ls /var/www # boshqa foydalanuvchi nomidan
sudo -l # menga nima ruxsat etilgan
sudo -k # parol keshini tozalash
sudo -i — ketma-ket ko'p administrator buyrug'i kerak bo'lganda. Ishingiz tugashi bilan — exit.
[!WARNING] Prompt
#bo'lsa — siz root siz. Har bir buyruqni ikki marta o'ylab yozing. Ish tugagach darholexit.
sudo va yo'naltirish
13-darsda ko'rgan muhim tuzoq:
sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf # ❌ Permission denied
sudo faqat echo ga tegishli. > ni sizning oddiy shell ingiz bajaradi. To'g'ri usullar:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf # ustidan yozish
echo "127.0.0.1 dokon.local" | sudo tee -a /etc/hosts # oxiriga qo'shish
sudo sh -c 'echo "..." >> /etc/hosts' # butun buyruq root bilan
sudoers — kimga nima ruxsat
sudo sozlamalari — /etc/sudoers. Uni hech qachon to'g'ridan-to'g'ri tahrirlamang:
sudo visudo
visudo saqlashdan oldin sintaksisni tekshiradi. Xato qilsangiz va oddiy muharrirda saqlasangiz — sudo butunlay ishlamay qoladi va uni tuzatish uchun ham sudo kerak bo'ladi.
Qo'shimcha qoidalar uchun — alohida fayl yaxshiroq:
sudo visudo -f /etc/sudoers.d/deploy
# deploy foydalanuvchisi faqat dokon xizmatini qayta ishga tushira oladi, parolsiz
deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart dokon
Bu CI/CD uchun juda foydali (avtomatik deploy parol kirita olmaydi) — lekin to'liq NOPASSWD: ALL emas, faqat aniq buyruq.
Qoida tuzilishi:
kim qayerda=(kim_sifatida) buyruqlar
%sudo ALL=(ALL:ALL) ALL ← sudo guruhiga hamma narsa
sudo loglari
Har bir sudo buyrug'i yoziladi:
sudo grep sudo /var/log/auth.log | tail
journalctl _COMM=sudo | tail # (26-dars)
Nov 06 14:23:01 server sudo: otabek : TTY=pts/0 ; PWD=/home/otabek ; USER=root ; COMMAND=/usr/bin/apt install nginx
Kim, qachon, qayerdan, qanday buyruq — hammasi qayd etiladi. root sifatida ishlaganda esa bunday aniq tarix yo'q.
root ga to'g'ridan-to'g'ri kirish
Ubuntu da root paroli standart holatda o'rnatilmagan — root sifatida kirib bo'lmaydi, faqat sudo orqali. Bu ataylab qilingan.
VPS lar esa ko'pincha root login bilan beriladi. Birinchi ish (42-dars):
- Oddiy foydalanuvchi yaratish va
sudoga qo'shish - SSH da root kirishini o'chirish (
PermitRootLogin no)
Nima uchun shunday?
Nima uchun sudo bor — administrator shunchaki root sifatida kirib ishlasa bo'lmaydimi?
Uch sabab. Xatolardan himoya: oddiy foydalanuvchi sifatida ishlaganda xato buyruq (rm -rf noto'g'ri papkada) faqat sizning fayllaringizga zarar yetkazadi; sudo esa har bir xavfli harakatni ongli qaror qiladi. Javobgarlik: jamoada hamma root bo'lsa, kim nima qilgani noma'lum; sudo har bir buyruqni ism bilan yozadi. Nozik ruxsatlar: sudoers orqali kimgadir faqat bitta buyruqni ruxsat berish mumkin — to'liq root paroli bermasdan. Bu — eng kam imtiyoz tamoyilining amaldagi ko'rinishi.
Xulosa
Eslab qoling:
- root (UID 0) — cheksiz huquq, ogohlantirishsiz
sudo buyruq— bitta buyruqni root bilan; o'z parolingizsudoguruhi — kimlar sudo ishlata oladisudo !!,sudo -i(root sessiya —exitni unutmang),sudo -uecho ... | sudo tee fayl— himoyalangan faylga yozish/etc/sudoers— faqatvisudoorqali; qo'shimchalar —/etc/sudoers.d/NOPASSWD— faqat aniq buyruqlar uchun- Har bir sudo —
/var/log/auth.logda
Keyingi dars
20-dars: Ruxsatlar — rwx, chmod, raqamli yozuv (755, 644)