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 stack ທີ່ຖືກລວມເຂົ້າໃນເກືອບທຸກໄຟລ໌ກຳນົດຄ່າການບໍລິການແຕ່ລະອັນ.

password-auth, smartcard-auth, fingerprint-auth
    PAM stacks ເຫຼົ່ານີ້ແມ່ນສຳລັບແອັບພລິເຄຊັນທີ່ຈັດການການຢືນຢັນຕົວຕົນຈາກອຸປະກອນປະເພດຕ່າງໆ ຜ່ານການເຮັດວຽກແຍກກັນພ້ອມກັນ ແທນທີ່ຈະເປັນການເຮັດວຽກລວມກັນພຽງອັນດຽວ.

postlogin
    ຈຸດປະສົງຂອງ PAM stack ນີ້ແມ່ນເພື່ອເປັນບ່ອນກາງສຳລັບທຸກໆໂມດູນ PAM ທີ່ຄວນຈະຖືກເອີ້ນໃຊ້ ຫຼັງຈາກ stack ທີ່ຕັ້ງຄ່າໃນ system-auth ຫຼື ໄຟລ໌ກຳນົດຄ່າ PAM ທົ່ວໄປອື່ນໆ. ມັນຖືກລວມຢູ່ໃນທຸກໄຟລ໌ກຳນົດຄ່າການບໍລິການທີ່ໃຫ້ບໍລິການການເຂົ້າສູ່ລະບົບດ້ວຍ shell ຫຼື ການເຂົ້າເຖິງໄຟລ໌. ໝາຍເຫດ: ໂມດູນໃນໄຟລ໌ກຳນົດຄ່າ postlogin ຈະຖືກເຮັດວຽກ ໂດຍບໍ່ຄຳນຶງເຖິງຄວາມສຳເລັດ ຫຼື ຄວາມລົ້ມເຫຼວຂອງໂມດູນໃນໄຟລ໌ກຳນົດຄ່າ system-auth.

nsswitch.conf
    ໄຟລ໌ກຳນົດຄ່າ Name Service Switch (nsswitch.conf).

dconf-db
    ການປ່ຽນແປງໃນຖານຂໍ້ມູນ dconf. ຈຸດປະສົງຫຼັກຂອງໄຟລ໌ນີ້ແມ່ນເພື່ອຕັ້ງຄ່າການປ່ຽນແປງສຳລັບໜ້າຈໍເຂົ້າສູ່ລະບົບຂອງ gnome ເພື່ອເປີດ ຫຼື ປິດການໃຊ້ງານການຢືນຢັນຕົວຕົນດ້ວຍ smartcard ແລະ fingerprint.

dconf-locks
    ໄຟລ໌ນີ້ກຳນົດການລັອກ (locks) ຄ່າຕ່າງໆທີ່ຕັ້ງໄວ້ໃນຖານຂໍ້ມູນ dconf.

  ແຖວທີ່ມີເງື່ອນໄຂ

ແຕ່ລະໄຟລ໌ເຫຼົ່ານີ້ເຮັດໜ້າທີ່ເປັນແມ່ແບບ. ແມ່ແບບແມ່ນໄຟລ໌ຂໍ້ຄວາມທຳມະດາ ທີ່ອາດມີການໃຊ້ຕົວດຳເນີນການຕ່າງໆ ເພື່ອໃຫ້ມີຄຸນສົມບັດເພີ່ມເຕີມຂອງໂປຣໄຟລ໌.

{continue if "feature"}
    ຢຸດການປະມວນຜົນໄຟລ໌ທັນທີ ເວັ້ນເສຍແຕ່ "feature" ຈະຖືກກຳນົດ (ເນື້ອໃນທີ່ເຫຼືອຂອງໄຟລ໌ຈະຖືກລຶບອອກ). ຖ້າ "feature" ຖືກກຳນົດ, ແຖວທັງໝົດທີ່ມີຕົວດຳເນີນການນີ້ຈະຖືກລຶບອອກ ແລະ ສ່ວນທີ່ເຫຼືອຂອງແມ່ແບບຈະຖືກປະມວນຜົນ.

{stop if "feature"}
    ກົງກັນຂ້າມກັບ "continue if". ຢຸດການປະມວນຜົນໄຟລ໌ທັນທີ ຖ້າ "feature" ຖືກກຳນົດ (ເນື້ອໃນທີ່ເຫຼືອຂອງໄຟລ໌ຈະຖືກລຶບອອກ). ຖ້າ "feature" ບໍ່ຖືກກຳນົດ, ແຖວທັງໝົດທີ່ມີຕົວດຳເນີນການນີ້ຈະຖືກລຶບອອກ ແລະ ສ່ວນທີ່ເຫຼືອຂອງແມ່ແບບຈະຖືກປະມວນຜົນ.

{include if "feature"}
    ລວມແຖວທີ່ມີຕົວດຳເນີນການນີ້ ກໍ່ຕໍ່ເມື່ອ "feature" ຖືກກຳນົດ.

{exclude if "feature"}
    ກົງກັນຂ້າມກັບ "include-if". ລວມແຖວທີ່ມີຕົວດຳເນີນການນີ້ ກໍ່ຕໍ່ເມື່ອ "feature" ບໍ່ຖືກກຳນົດ.

{imply "implied-feature" if "feature"}
    ເປີດໃຊ້ງານຄຸນສົມບັດ "implied-feature" ຖ້າຄຸນສົມບັດ "feature" ຖືກເປີດໃຊ້. ແຖວທັງໝົດທີ່ມີຕົວດຳເນີນການນີ້ຈະຖືກລຶບອອກ, ດັ່ງນັ້ນຈຶ່ງບໍ່ສາມາດເພີ່ມສິ່ງອື່ນໃສ່ອ້ອມຮອບຕົວດຳເນີນການນີ້ໃນແຖວດຽວກັນໄດ້.

{if "feature":true|false}
    ຖ້າ "feature" ຖືກກຳນົດ, ໃຫ້ແທນທີ່ຕົວດຳເນີນການນີ້ດ້ວຍຂໍ້ຄວາມ "true", ຖ້າບໍ່ດັ່ງນັ້ນໃຫ້ແທນດ້ວຍຂໍ້ຄວາມ "false".

{if "feature":true}
    ຖ້າ "feature" ຖືກກຳນົດ, ໃຫ້ແທນທີ່ຕົວດຳເນີນການນີ້ດ້ວຍຂໍ້ຄວາມ "true", ຖ້າບໍ່ດັ່ງນັ້ນໃຫ້ແທນດ້ວຍຂໍ້ຄວາມຫວ່າງເປົ່າ.

ນອກຈາກນັ້ນ ຍັງສາມາດໃຊ້ສຳນວນຕັກກະໃນແຖວທີ່ມີເງື່ອນໄຂ ແທນການລະບຸຊື່ຄຸນສົມບັດພຽງຢ່າງດຽວ. ໃນກໍລະນີນີ ສຳນວນຈະຖືກປະເມີນວ່າເປັນ ຈິງ (true) ຫຼື ເທັດ (false) ແລະ ຕົວດຳເນີນການເງື່ອນໄຂຈະເຮັດວຽກຕາມຜົນລັດນັ້ນ.

ໄວຍາກອນຂອງສຳນວນປະກອບດ້ວຍຊື່ຄຸນສົມບັດ (ຕົວຢ່າງ: "feature") ເຊິ່ງຈະສົ່ງຄ່າເປັນ true ຖ້າຄຸນສົມບັດນັ້ນຖືກກຳນົດ ຫຼື false ຖ້າບໍ່ຖືກກຳນົດ ແລະ ປະກອບດ້ວຍຕົວດຳເນີນການຕັກກະດັ່ງນີ້: and, or ແລະ not. ສຳນວນອາດຈະຖືກໃສ່ໄວ້ໃນວົງເລັບ ແລະ ປະກອບດ້ວຍສຳນວນຍ່ອຍຫຼາຍອັນໄດ້.

ຕົວຢ່າງ:

{if "feature1" or "feature2":true}
    ຖ້າ "feature1" ຫຼື "feature2" ຖືກກຳນົດ, ໃຫ້ແທນທີ່ຕົວດຳເນີນການນີ້ດ້ວຍຂໍ້ຄວາມ "true", ຖ້າບໍ່ດັ່ງນັ້ນໃຫ້ແທນດ້ວຍຂໍ້ຄວາມຫວ່າງເປົ່າ.

{if not "feature":true|false}
    ຖ້າ "feature" ບໍ່ຖືກກຳນົດ, ໃຫ້ແທນທີ່ຕົວດຳເນີນການນີ້ດ້ວຍຂໍ້ຄວາມ "true", ຖ້າບໍ່ດັ່ງນັ້ນໃຫ້ແທນດ້ວຍຂໍ້ຄວາມ "false".

{if not "feature":true}
    ຖ້າ "feature" ບໍ່ຖືກກຳນົດ, ໃຫ້ແທນທີ່ຕົວດຳເນີນການນີ້ດ້ວຍຂໍ້ຄວາມ "true", ຖ້າບໍ່ດັ່ງນັ້ນໃຫ້ແທນດ້ວຍຂໍ້ຄວາມຫວ່າງເປົ່າ.

{if "feature1" and ("feature2" or "feature3"):true}
    ຖ້າ "feature1" ຖືກກຳນົດ ແລະ ອັນໃດອັນໜຶ່ງລະຫວ່າງ "feature2" ຫຼື "feature3" ຖືກກຳນົດ ໃຫ້ແທນທີ່ຕົວດຳເນີນການນີ້ດ້ວຍຂໍ້ຄວາມ "true", ຖ້າບໍ່ດັ່ງນັ້ນໃຫ້ແທນດ້ວຍຂໍ້ຄວາມຫວ່າງເປົ່າ.

  ຕົວຢ່າງ

ນີ້ແມ່ນຕົວຢ່າງການໃຊ້ຕົວດຳເນີນການ "if". ຖ້າຄຸນສົມບັດ "with-sudo" ຖືກເປີດໃຊ້, ມັນຈະເພີ່ມ "sss" ເຂົ້າໃນແຖວ sudoers.

    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)