Tuesday, April 9, 2019

ფაილებზე წვდომის უფლებების კონტროლი. ნაწილი 1 - Permission bits.


ლინუქსი დასაწყისიდანვე იყო შექმნილი როგორც მრავალმომხარებლიანი ოპერაციული სისტემა. შესაბამისად მასში დიდი ყურადღება ეთმობა უფლებებს ფაილებზე (file permissions) და ფაილების მფლობელობის (ownership) საკითხებს.

ნებისმიერ ობიექტს ლინუქსში აქვს მფლობელი, ჯგუფი და უფლებების ნაკრები, რომლებიც განსაზღვრავენ ვის და რა მოცულობით ექნება წვდომა ამ ფაილთან.
ლინუქსში უფლებების სუბიექტები (ანუ კონკრეტულად ვის შეიძლება ქონდეს რაიმე უფლება) გვყავს სამი:  u (user იგულისხმება ობიექტის მფლობელი იუზერი), g (group ანუ ჯგუფი) და o (other ანუ სხვა ნებისმიერი ვინმე, დანარჩენი სამყარო )

როცა ვსაუბრობთ უფლებების სუბიექტებზე, უნდა ვახსენოთ ერთი იუზერი, რომელზეც ფაქტობრივად არ მოქმედებს რაიმე შეზღუდვა. ასეთი იუზერი არის რა თქმა უნდა root (სუპერიუზერი). მას შეუძლია ფაქტიურად ნებისმიერი ფაილის წაკითვა და ჩაწერა. ფაილის შესრულებაზე გაშვებისთვის (execute) როგორც წესი შესაბამისი უფლება ჩართული უნდა იყოს. მაგრამ ვინაიდან სუპერიუზერს ასეთი უფლების ჩართვა ნებისმიერ დროს შეუძლია - აქაც არ არსებობს რაიმე არსებითი დაბრკოლება.

ძირითადი უფლებები განისაზღვრება წაკითხვის (read), ჩაწერის (write - ცვლილებების შეტანის, წაშლის) და გაშვების  (execute -  ძირითადად იგულისხმება პროგრამების, სკრიპტების და ა.შ. ფაილების გაშვება) უფლებებით.

execute უფლება ფოლდერებზე ნიშნავს მათში დასერჩვის უფლებას, ამიტომ როგორც წესი თუ ფოლდერზე  დაშვებულია წაკითხვის უფლება execute უფლებაც უნდა იყოს მითითებული.

ფაილზე წვდომის წესების შესაცვლელად გამოიყენება ბრძანება chmod (сhange mode). ამ ბრძანებას ჭირდება როგორც სუბიექტ(ებ)ის მითითება, ასევე უფლებების მითითება.
უფლებების მისანიჭებლად და არსებული უფლებების საჩვენებლად ლინუქსში იყენებენ 2 მიდგომას: ანბანურს და ციფრულს.

ანბანურ მიდგომაში უფლებები იწერება როგორც: r (read), w (write), x (execute)
ფაილზე არსებული უფლებების  სანახავად გამოიყენება  ბრძანება ls –l
პასუხად ჩვენ დაგვიბრუნდება დაახლოებით ასეთი ინფორმაცია:

-rw- - r - - r - -   1 mint mint  1 Apr 18 18:17 myfile.txt

როგორც უკვე აღვნიშნეთ უფლებების სუბიექტი არის სამი, შესაბამისად აქ ჩამოთვლილია 9 უფლება (თითო სუბიექტის სამივე უფლების მდომარეობა). გავშიფროთ ეს კონკრეტული მაგალითი:  პირველი ტირე გვაქვს იმიტომ, რომ საქმე გვაქვს ფაილთან. დირექტორიის (ფოლდერის) შემთხვევაში) გვექნებოდა d ასო, შემდეგი სამი სიმბოლო ეკუთვნის ფაილის მფლობელ იუზერს. როგორც ვხედავთ იუზერს აქვს წაკითხვის და ჩაწერის უფლება, ხოლო შესრულების უფლების ნაცვლად აქვს ტირე ანუ ასეთი უფლება არ აქვს. მომდევნო სამი სიმბოლო ეკუთვნის ჯგუფს. მოცემულ მაგალითში ჯგუფს აქვს მხოლოდ წაკითხვის უფლება. ხოლო ბოლო სამი სიმბოლო ეკუთვნის სხვა ნებისმიერი იუზერის უფლებრივ მდგომარეობას, რომელიც ამ შემთხვევაში მხოლოდ წაკითხვით შემოიფარგლება.

საბოლოო ჯამში უფლებების განმსაზრღრელი ჩანაწერი შედგება 10 ბიტისგან. პირველი ბიტი განსაზღვრავს ე.წ. file type code-ს (ანუ რა ტიპის ფაილთან გვაქვს საქმე), ხოლო დანარჩენი 9 უფლებებს



თუ ჩვენ გვინდა myfile.txt-ს ცვლილების შეტანის უფლება მივცეთ სისტემაში არსებულ სხვა იუზერებს ჩვენ გამოგვაგდება ბრძანება:

chmod o+w myfile.txt 

შესაბამისად უფლების მოსანიჭებლად გამოიყენება +, ხოლო უფლების წასართმევად -. მაგალითად: 

chmod o-w myfile.txt 

იგივე იუზერებს წაერთმევათ ფაილში ცვლილებების შეტანის უფლება

რათქმა უნდა ჩვენ შეგვიძლია უფლებების მინიჭება ან წართმევა პაკეტურად, მაგალითად:

chmod ugo+w myfile.txt 

ნიშნავს იმას, რომ იუზერს, ჯგუფს და სხვებსასაც მიენიჭება ჩაწერის უფლება.

პაკეტურად შეიძლება ასევე უფლებების ჩამორთმევაც, მაგალითად:

chmod ugo-rwx



No comments:

Post a Comment