AUTHSELECT-PROFILES(5)

NAME
authselect-profiles - როგორ დავამატოთ ფუნქციები authselect-ის პროფილებს.

აღწერა

ეს სახელმძღვანელოს გვერდი აგიხსნით, როგორ ხდება authselect-ის პროფილების ორგანიზაცია და როგორ შექმნათ ახალი პროფილები.

პროფილის საქაღალდეები

პროფილები შეგიძლიათ იპოვოთ ერთ-ერთში ამ საქაღალდეებიდან.

"/usr/share/authselect/default"
    authselect-თან ერთად გავრცელებული მხოლოდ წაკითხვადი პროფილების შემცველი საქაღალდე.

"/usr/share/authselect/vendor"
    მხოლოდ წაკითხვადი საქაღალდე მომწოდებლის სპეციფიკური პროფილებისთვის, რომლებსაც შეუძლიათ default საქაღალდეში არსებული პროფილების გადაფარვა.

"/etc/authselect/custom"
    მდებარეობა ადმინისტრატორის მიერ აღწერილი პროფილებისთვის.

პროფილის ფაილები

თითოეული პროფილი შედგება ამ ერთი, ან მეტი ფაილისგან, რომლებიც მოგაწვდით აუცილებელ პროფილის აღწერას და აღწერს ცვლილებებს, რომლებიც სისტემაში მოხდება.

README
    პროფილის აღწერა. პირველი ხაზი პროფილის სახელი უნდა იყოს.

system-auth
    PAM სტეკი, რომელიც ჩასმულია თითქმის ყველა ინდივიდუალური სერვისის კონფიგურაციის ფაილში.

password-auth, smartcard-auth, fingerprint-auth
    ეს PAM სტეკები განკუთვნილია იმ აპლიკაციებისთვის, რომლებიც ავთენტიკაციას სხვადასხვა ტიპის მოწყობილობებიდან ერთდროულად გაშვებული ინდივიდუალური საუბრების მეშვეობით ამუშავებენ, ნაცვლად ერთი აგრეგირებული საუბრისა.

postlogin
    ამ PAM სტეკის მიზანია უზრუნველყოს ერთიანი ადგილი ყველა იმ PAM მოდულისთვის, რომლებიც უნდა გამოიძახონ system-auth-ში ან სხვა საერთო PAM კონფიგურაციის ფაილებში გამართული სტეკის შემდეგ. იგი ჩართულია ყველა ინდივიდუალური სერვისის კონფიგურაციის ფაილში, რომელიც უზრუნველყოფს შესვლის (login) სერვისს შელით (shell) ან ფაილებზე წვდომით. შენიშვნა: postlogin კონფიგურაციის ფაილში არსებული მოდულები სრულდება იმის მიუხედავად, წარმატებით დასრულდა თუ არა system-auth კონფიგურაციის ფაილში არსებული მოდულები._

nsswitch.conf
    სახელის სერვისის გადართვის (NSS) კონფიგურაციის ფაილი.

dconf-db
    ცვლილებები dconf მონაცემთა ბაზაში. ამ ფაილის გამოყენების ძირითადი შემთხვევაა gnome-ის შესვლის ეკრანის პარამეტრების შეცვლა, რომ ჩაირთოს, ან გამოირთოს სმარტ ბარათითა და თითის ანაბეჭდით ავთენტიკაცია.

dconf-locks
    ეს ფაილი განსაზღვრავს ბლოკებს მნიშვნელობების ნაკრებებზე dconf-ის მონაცემთა ბაზაში.

  პირობის ხაზები

თითოეული ეს ფაილი ნიმუშად გამოიყენება. ნიმუში უბრალო ტექსტური ფაილია რამდენიმე ოპერატორის არასავალდებულო გამოყენებით, რომელიც შეიძლება, გამოყენებული იქნეს ზოგიერთი არასავალდებულო პროფილის თვისებების მოსაწოდებლად.

{continue if "თვისება"}
    დაუყოვნებლივ შეწყვიტეთ ფაილის დამუშავება, გარდა იმ შემთხვევისა, თუ „ფუნქცია“ აღწერილია (ფაილის დანარჩენი შიგთავსი წაიშლება). თუ „ფუნქცია“ აღწერილია, ამ ოპერატორის შემცველი მთლიანი ხაზი წაიშლება, ხოლო შაბლონის დანარჩენი ნაწილი დამუშავდება.

{stop if "თვისება"}
    „continue-if“-ის საპირისპირო ოპერატორი. ფაილის დამუშავება დაუყოვნებლივ შეწყდება, თუ „ფუნქცია“ აღწერილია (ფაილის დანარჩენი შიგთავსი წაიშლება). თუ „ფუნქცია“ აღწერილი არაა, ამ ოპერატორის შემცველი მთლიანი ხაზი წაიშლება, ხოლო შაბლონის დანარჩენი ნაწილი დამუშავდება.

{include if "თვისება"}
    ამ ოპერატორის შემცველი ხაზის ჩასმა, მხოლოდ, თუ "ფუნქცია" აღწერილია.

{exclude if "თვისება"}
    "include-if'-ის საპირისპირო. ჩასვამს ფაილს, სადაც ეს ოპერატორია მოთავსებული, მხოლოდ, თუ "ფუნქცია" აღწერილი არაა.

{imply "implied-feature" if "თვისება"}
    ფუნქციის „implied-feature“ ჩართვა, თუ ჩართულია ფუნქცია „feature“. ამ ოპერატორის შემცველი მთლიანი ხაზი წაიშლება, შესაბამისად, ამავე ხაზზე სხვა რამის დამატება შეუძლებელია.

{if "feature":true|false}
    თუ "ფუნქცია" აღწერილია, შეცვალეთ ეს ოპერატორი სტრიქონით "true". წინააღმდეგ შემთხვევაში კი სტრიქონით "false".

{if "feature":true}
    თუ "თვისება" აღწერილია, შეცვალეთ ეს ოპერატორი სტრიქონით "true", თუ არა - ცარიელი სტრიქონით.

ასევე შესაძლებელია პირობით ხაზებში ლოგიკური გამოსახულების გამოყენება ერთი კონკრეტული ფუნქციის სახელის მითითების ნაცვლად. ამ შემთხვევაში, გამოსახულება შეფასდება როგორც ჭეშმარიტი (true) ან მცდარი (false) და პირობითი ოპერატორი იმოქმედებს მიღებული შედეგის შესაბამისად.

გამოსახულების სინტაქსი შედგება ფუნქციების სახელებისგან (მაგ. "ფუნქცია"), რაც აბრუნებს მნიშვნელობას true, თუ ფუნქცია აღწერილია, ან false, თუ ის აღწერილი არაა. ის ასევე მოიცავს შემდეგ ლოგიკურ ოპერატორებს: and (და), or (ან) და not (არა). გამოსახულება შეიძლება მოთავსდეს ფრჩხილებში და შეიცავდეს რამდენიმე ქვეგამოსახულებას.

მაგალითად:

{if "თვისება1" or "თვისება2":true}
    თუ აღწერილია "ფუნქცია1", ან "ფუნქცია2", ჩაანაცვლეთ ეს ოპერატორი სტრიქონით "true". თუ არა - ცარიელი სტრიქონით.

{if not "თვისება":true|false}
    თუ "ფუნქცია" აღწერილი არაა, შეცვალეთ ეს ოპერატორი სტრიქონით "true", თუ არა - სტრიქონით "false".

{if not "თვისება":true}
    თუ "ფუნქცია" აღწერილი არაა, შეცვალეთ ეს ოპერატორი სტრიქონით "true", თუ არა - ცარიელი სტრიქონით.

{if "თვისება1" and ("თვისება2" or "თვისება3"):true}
    თუ "ფუნქცია1" აღწერილია და "ფუნქცია2" ან "ფუნქცია3" აღწერილია, შეცვალეთ ეს ოპერატორი სტრიქონით "true". თუ არა - ცარიელი სტრიქონით.

  მაგალითი

ეს "if" ოპერატორის გამოყენების მაგალითია. თუ ფუნქცია "with-sudo" ჩართულია, ის sudoers-ის ხაზს "sss"-ს დაამატებს.

    passwd:     sss files
    group:      sss files
    netgroup:   sss files
    automount:  sss files
    services:   sss files
    sudoers:    files {if "with-sudo":sss}

ეს „continue-if“ და „include-if“ ოპერატორების მაგალითია. მიღებული ფაილი ცარიელი იქნება, თუ „with-smartcard“ ფუნქცია ჩართული არაა. თუ ის ჩართულია და ასევე გააქტიურებულია ფუნქცია „with-faillock“, ის ასევე ჩართავს pam_faillock-ის მხარდაჭერას.

    {continue if "with-smartcard"}
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        required                                     pam_faillock.so preauth silent deny=4 unlock_time=1200 {include if "with-faillock"}
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
    auth        sufficient                                   pam_unix.so nullok
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_faillock.so authfail deny=4 unlock_time=1200       {include if "with-faillock"}
    auth        required                                     pam_deny.so
    ...

აი „continue-if“-ის მაგალითი ლოგიკური გამოსახულების გამოყენებით. ფაილი ცარიელი იქნება, თუ არ არის მითითებული „with-smartcard“ ან „with-smartcard-required“. ეს გაამარტივებს authselect select ბრძანების გამოძახებას, რადგან აღარ იქნება საჭირო ორივე ფუნქციის მითითება და მხოლოდ „with-smartcard-required“-ის ჩართვაც საკმარისი იქნება.

    {continue if "with-smartcard" or "with-smartcard-required"}
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        required                                     pam_faillock.so preauth silent deny=4 unlock_time=1200 {include if "with-faillock"}
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
    auth        sufficient                                   pam_unix.so nullok
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_faillock.so authfail deny=4 unlock_time=1200       {include if "with-faillock"}
    auth        required                                     pam_deny.so
    ...

ეს"imply-if" ოპერატორის მაგალითია. ფუნქციის „with-smartcard-required“ ჩართვა ასევე გაააქტიურებს ფუნქციას „with-smartcard“, რომ დარწმუნდეთ, რომ ყველა შესაბამისი PAM მოდული გამოყენებულია. ეს იმავე შედეგს მოგვცემს, რასაც წინა მაგალითი.

    {imply "with-smartcard" if "with-smartcard-required"}
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        [success=1 default=ignore]                   pam_succeed_if.so service notin login:gdm:xdm:kdm:kde:xscreensaver:gnome-screensaver:kscreensaver quiet use_uid {include if "with-smartcard-required"}
    auth        [success=done ignore=ignore default=die]     pam_sss.so require_cert_auth ignore_authinfo_unavail             {include if "with-smartcard-required"}
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so                                                 {exclude if "with-smartcard"}
    auth        [default=2 ignore=ignore success=ok]         pam_localuser.so                                                 {include if "with-smartcard"}
    auth        [success=done authinfo_unavail=ignore user_unknown=ignore ignore=ignore default=die] pam_sss.so try_cert_auth {include if "with-smartcard"}
    auth        sufficient                                   pam_unix.so {if not "without-nullok":nullok}
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_deny.so
    ...

იქმნება ახალი პროფილი

authselect-ში ახალი პროფილის დასარეგისტრირებლად შექმენით საქაღალდე authselect-ის პროფილების ერთ-ერთ მდებარეობაზე და მასში მოათავსეთ ზემოთ ჩამოთვლილი ფაილები. ყველა ფაილის არსებობა სავალდებულო არაა. აუცილებელია, მხოლოდ, ფაილი README. სხვა ფაილები შეიძლება საჭიროებისამებრ შეიქმნას.

ბრძანება "authselect create-profile", შეიძლება, ახალი პროფილის შექმნისას გამოგადგეთ. მეტ ინფორმაციისთვის იხილეთ authselect(8)-ის სახელმძღვანელო, ან authselect create-profile --help.

ასევე იხილეთ

authselect(8), nsswitch.conf(5), PAM(8)