Bash / Файлын эрх (chmod, chown)

Файлын эрх (chmod, chown)

Linux дээр файл ба директор бүр хэн унших, бичих, ажиллуулах эрхтэй болохыг тодорхой тогтоодог. Энэ систем нь олон хэрэглэгч хуваалцан ашигладаг сервер дээр аюулгүй байдлыг хангахад нэн чухал. Bash script бичигчид chmod ба chown-г мэдэх нь зайлшгүй.

Эрхийн систем гэж юу вэ?

ls -l командын гаралтыг харцгаая:

bash
ls -l script.sh
# -rwxr-xr-- 1 batbold developers 1024 May 10 09:30 script.sh

Эхний -rwxr-xr-- хэсэг нь эрхийг тэмдэглэнэ:

код
- rwx r-x r--
│ │   │   └── Other (бусад хэрэглэгчид): зөвхөн унших
│ │   └────── Group (бүлэг):             унших, ажиллуулах
│ └────────── Owner (эзэмшигч):          унших, бичих, ажиллуулах
└──────────── Файлын төрөл (- файл, d директор, l symlink)

Тэмдгүүдийн утга:

  • r — read (унших эрх)
  • w — write (бичих эрх)
  • x — execute (ажиллуулах эрх)
  • - — тухайн эрх байхгүй

chmod — эрх өөрчлөх

chmod нь файлын эрхийг өөрчилдэг. Хоёр арга байна: тэмдэглэгээний болон тоон.

Тэмдэглэгээний арга:

bash
# Эзэмшигчид ажиллуулах эрх нэмэх
chmod u+x script.sh

# Бүлгийн бичих эрхийг хасах
chmod g-w file.txt

# Бусад хэрэглэгчдийн бүх эрхийг хасах
chmod o-rwx secret.txt

# Бүгдэд унших эрх нэмэх
chmod a+r readme.txt

# u=эзэмшигч, g=бүлэг, o=бусад, a=бүгд
# +=нэмэх, -=хасах, ==яг энэ эрх тавих

Тоон арга (octal):

bash
# Тооны утга: r=4, w=2, x=1
# rwx = 4+2+1 = 7
# rw- = 4+2+0 = 6
# r-x = 4+0+1 = 5
# r-- = 4+0+0 = 4

chmod 755 script.sh   # rwxr-xr-x  (script-т хамгийн түгээмэл)
chmod 644 file.txt    # rw-r--r--  (файлд хамгийн түгээмэл)
chmod 600 secret.txt  # rw-------  (нууц файлд)
chmod 777 public/     # rwxrwxrwx  (бүгдэд бүх эрх — аюулгүй биш!)

Тоон аргыг цээжлэх хялбар арга: 7 = бүх эрх, 6 = унших+бичих, 5 = унших+ажиллуулах, 4 = зөвхөн унших.

chown — эзэмшигч өөрчлөх

chown нь файлын эзэмшигч ба бүлгийг өөрчилдэг:

bash
# Эзэмшигчийг өөрчлөх
chown batbold file.txt

# Эзэмшигч ба бүлгийг өөрчлөх
chown batbold:developers file.txt

# Зөвхөн бүлгийг өөрчлөх
chown :developers file.txt

# Директортой рекурсив ажиллах (-R)
chown -R batbold:www-data /var/www/myapp/

chown болон chmod нь ихэвчлэн sudo шаарддаг — өөрийнхөө файлын эрхийг л өөрчилж болно.

Практик жишээнүүд

bash
#!/bin/bash

# Шинэ script файл үүсгэж, эрх тавих
cat > deploy.sh << 'EOF'
#!/bin/bash
echo "Deploy хийж байна..."
EOF

chmod +x deploy.sh
echo "deploy.sh бэлэн болов:"
ls -l deploy.sh

# Нууц тохиргоо файлын эрхийг шалгах
CONFIG=".env"
PERMS=$(stat -c "%a" "$CONFIG" 2>/dev/null)

if [ "$PERMS" != "600" ]; then
  echo "Анхааруулга: .env файлын эрх $PERMS байна — 600 болгож байна"
  chmod 600 "$CONFIG"
fi
bash
# Web серверийн файлуудад зөв эрх тавих
# Директорт 755, файлуудад 644
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;

# Script файлуудад ажиллуулах эрх нэмэх
find /var/www/html -name "*.sh" -exec chmod +x {} \;

echo "Эрхүүд тохируулагдлаа"

Эрхийн системийг ойлгосноор Permission denied алдаанаас айхаа болино. Ихэнх тохиолдолд chmod +x (script-д) эсвэл chmod 644 (файлд) хийхэд хангалттай.

Дараагийн хичээлд:

Process удирдах — ажиллаж буй программуудыг харах, зогсоох, дэвсгэрт ажиллуулах командуудыг судална.