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:
İstifadəçi
Qrup
Digərləri
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
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

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?