Chapter 7

CONTROLLING ACCESS TO FILES

Linuxda səlahiyyətlər istifadəçi,qrup və digərləri üçün verilir.

Ən son tətbiq olunan (yəni ən güclü) səlahiyyət istifadəçiyə verilmiş səlahiyyətdir. Səlahiyyətlərin icra olunması prioriteti aşağıdakı sırayladır:

  1. İstifadəçi

  2. Qrup

  3. Digərləri

Səlahiyyət
Fayl üçün
Qovluq üçün

r (read 4)

faylın açılmasını və oxunması səlahiyyətlərini verir

qovluğun içindəki faylların siyahısının göstərilə bilməsini mümkün edir

w (write 2)

faylın dəyişdirilməsi və silinməsi səlahiyyətlərini, həmçinin faylın içinin dəyişdirilməsi səlahiyyətini verir

qovluğun içində yeni faylın yaradılması və digər faylların silinməsi səlahiyyətlərini verir.

x (execute 1)

faylın execute olunması səlahiyyətini verir

qovluğun açılması səlahiyyətini verir.

Əgər əgər qovluqda r and w permissionları olsa belə x olmadığı üçün istifadəçi qovluğu aça bilmir.

Hərflər rəqəmlərə necə çevilirlər:

+─────────────+───────────────────────+──────────────+────────+─────────+─────────+
| icazələr    | faylın tipi           | user         | group  | others  | nəticə  |
+─────────────+───────────────────────+──────────────+────────+─────────+─────────+
| -rw-r--r--  | - (adi fayl)          | rw (4+2)     | r (4)  | r (4)   | 644     |
| drwxr-xr-x  | d (directory/qovluq)  | rwx (4+2+1)  | rx (5) | rx (5)  | 755     |
+─────────────+───────────────────────+──────────────+────────+─────────+─────────+

Xüsusi səlahiyyətlər

Xüsusi icazələr
Fayl üçün
Qovluq üçün

u+s (suid)

File executes as the user that owns the file, not the user that ran the file.

No effect.

g+s (sgid)

File executes as the group that owns the file.

Files newly created in the directory have their group owner set to match the group owner of the directory.

o+t (sticky)

No effect.

Users with write access to the directory can only remove files that they own; they cannot remove or force saves to files owned by other users.

Əgər faylın sahibində execute səlahiyyəti olmasa, bu halda xüsusi səlahiyyət böyük hərflə yazılır (S,T).

[student@localhost ~]$ ls -l
---------T. 1 student student 0 Oct  2 22:35 1000
------S---. 1 student student 0 Oct  2 22:35 2000
------S--T. 1 student student 0 Oct  2 22:35 3000
---S------. 1 student student 0 Oct  2 22:35 4000
---S-----T. 1 student student 0 Oct  2 22:35 5000
---S--S---. 1 student student 0 Oct  2 22:35 6000
---S--S--T. 1 student student 0 Oct  2 22:35 7000
---------t. 1 student student 0 Oct  2 22:43 1001
------s---. 1 student student 0 Oct  2 22:44 2010
---s------. 1 student student 0 Oct  2 22:44 4100

(Şəkil 3. adlarına uyğun permission verilmiş faylların hərfli permissionları)

Yuxarıdakı şəkildə böyük S və T hərfləri erroru bildirir, şəkildən də göründüyü kimi, böyük S və T hərfləri olan yerdə müvafiq olaraq execute səlahiyyəti verilməmişdir. S və T hərflərinin böyük yazılmasının səbəbi elə məhz budur.

chmod

chmod WhoWhatWhich file|directory
  • Who is u, g, o, a (for user, group, other, all)

  • What is +, -, = (for add, remove, set exactly)

  • Which is r, w, x, s, s, t (for read (4), write (2), execute(1), suid (4), sgid (2), sticky(1))

chmod -R g+rwX demodir

When used with the chmod command, the X option grants execute (x) permissions only to directories and to files that already have the execute permission set for some user.

chmod u+s file # setuid bit
chmod g+s file # setgid bit
chmod o+t file # sticky bit

chown

Aşağıdakı komandaların hamısı düzgün yazılıb:

sudo chown user01 test1/
sudo chown :group01 test1/
sudo chown user01:group01 test1/
sudo chown -R user01:group01 test1/

İstifadəçi adında nöqtə işarəsi ola bilmə ehtimalı olduğu üçün, bucür işlətmək yanlışdır:

chown user01.group01 test01/

umask

Əslində default olaraq, linux əsaslı əməliyyat sistemlərində yeni bir qovluq yaratdıqda 0777 permissionla yaranır. Fayllar üçün isə bu permission 0666-ya bərabərdir.

Umask deyilən bir dəyər var ki, yuxarıda dediyim ədədlərdən çıxılıb qovluq və faylların permissionları ona əsasən təyin olunur. Default olaraq linux əsaslı əməliyyat sistemlərində umask dəyəri 0022-dir.

Qovluqlar üçün hesablama qaydası:

0777
0022
-------
0755

Fayllar üçün hesablanma qaydası:

0666
0022
-------
0644

Buradan anlaşılır ki, nəyə görə linux əsaslı əməliyyat sistemlərində qovluq yaratdıqda onun permissionu default olaraq0755, faylın permissionu isə 0644 təyin olunur. Məsələn:

umask 0    # 0000-a bərabərdir, qovluqlar 777, fayllar 666 ilə yaradılacaq.
umask 007  # 0007-ə bərabərdir, qovluqlar 770, fayllar 660 ilə yaradılacaq.
umask 027  # 0027-ə bərabərdir, qovluqlar 750, fayllar 640 ilə yaradılacaq.

Default olaraq, UID-niz 200-dən aşağıdırsa umaskınız 022 olur, UİD-niz 200-dən yuxarıdırsa umaskınız 002 olur.

İstifadəçilərin default umask dəyərini dəyişmək üçün belə bir skripti qovluğuna atmaq lazımdır:

[root@host ~]# cat /etc/profile.d/local-umask.sh
# Overrides default umask configuration
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 007
else
umask 022 fi

Last updated

Was this helpful?