AUTHSELECT-PROFILES(5)

NAME
authselect-profiles - cara memperluas profil authselect.

DESKRIPSI

Halaman manual ini menjelaskan bagaimana profil authselect diatur dan cara membuat profil baru.

DIREKTORI PROFIL

Profil dapat ditemukan di salah satu dari tiga direktori.

"/usr/share/authselect/default"
    Direktori baca-saja (read-only) yang berisi profil yang disertakan bersama dengan authselect.

"/usr/share/authselect/vendor"
    Direktori baca-saja untuk profil khusus vendor yang dapat menimpa profil di direktori default.

"/etc/authselect/custom"
    Tempat untuk profil yang ditentukan oleh administrator.

BERKAS PROFIL

Setiap profil terdiri dari satu atau lebih berkas berikut yang memberikan deskripsi profil wajib dan menjelaskan perubahan yang dilakukan pada sistem.

README
    Deskripsi profil. Baris pertama harus berupa nama profil.

system-auth
    Tumpukan PAM yang disertakan dari hampir semua berkas konfigurasi layanan individual.

password-auth, smartcard-auth, fingerprint-auth
    Tumpukan PAM ini ditujukan untuk aplikasi yang menangani autentikasi dari berbagai jenis perangkat melalui percakapan individual yang berjalan bersamaan alih-alih satu percakapan agregat.

postlogin
    Tujuan dari tumpukan PAM ini adalah untuk menyediakan tempat umum bagi semua modul PAM yang harus dipanggil setelah tumpukan yang dikonfigurasi dalam system-auth atau berkas konfigurasi PAM umum lainnya. Ini disertakan dari semua berkas konfigurasi layanan individual yang menyediakan layanan login dengan akses shell atau berkas. CATATAN: modul dalam berkas konfigurasi postlogin dijalankan tanpa memandang keberhasilan atau kegagalan modul dalam berkas konfigurasi system-auth.

nsswitch.conf
    Berkas konfigurasi Name Service Switch.

dconf-db
    Perubahan pada basis data dconf. Kasus penggunaan utama dari berkas ini adalah untuk menetapkan perubahan pada layar login gnome guna mengaktifkan atau menonaktifkan autentikasi smartcard dan sidik jari.

dconf-locks
    Berkas ini menentukan kunci (locks) pada nilai yang ditetapkan dalam basis data dconf.

  BARIS BERSYARAT

Setiap berkas ini berfungsi sebagai templat. Templat adalah berkas teks biasa dengan penggunaan opsional dari beberapa operator yang dapat digunakan untuk menyediakan beberapa fitur profil opsional.

{continue if "feature"}
    Segera hentikan pemrosesan berkas kecuali "feature" ditentukan (sisa konten berkas akan dihapus). Jika "feature" ditentukan, seluruh baris dengan operator ini akan dihapus dan sisa templat akan diproses.

{stop if "feature"}
    Kebalikan dari "continue if". Segera hentikan pemrosesan berkas jika "feature" ditentukan (sisa konten berkas akan dihapus). Jika "feature" tidak ditentukan, seluruh baris dengan operator ini akan dihapus dan sisa templat akan diproses.

{include if "feature"}
    Sertakan baris tempat operator ini diletakkan hanya jika "feature" ditentukan.

{exclude if "feature"}
    Kebalikan dari "include-if". Sertakan baris tempat operator ini diletakkan hanya jika "feature" tidak ditentukan.

{imply "implied-feature" if "feature"}
    Aktifkan fitur "implied-feature" jika fitur "feature" diaktifkan. Seluruh baris dengan operator ini dihapus, sehingga tidak mungkin untuk menambahkan hal lain di sekitar operator ini pada baris yang sama.

{if "feature":true|false}
    Jika "feature" ditentukan, ganti operator ini dengan string "true", jika tidak ganti dengan string "false".

{if "feature":true}
    Jika "feature" ditentukan, ganti operator ini dengan string "true", jika tidak ganti dengan string kosong.

Dimungkinkan juga untuk menggunakan ekspresi logika dalam baris bersyarat alih-alih menentukan satu nama fitur. Dalam hal ini ekspresi akan bernilai benar (true) atau salah (false) dan operator bersyarat akan bertindak berdasarkan hasilnya.

Sintaks ekspresi terdiri dari nama fitur (misalnya "feature") yang mengembalikan true jika fitur tersebut ditentukan atau false jika tidak ditentukan, serta dari operator logika berikut: and, or, dan not. Ekspresi juga dapat diapit dalam tanda kurung dan berisi beberapa sub-ekspresi.

Sebagai contoh:

{if "feature1" or "feature2":true}
    Jika "feature1" atau "feature2" ditentukan, ganti operator ini dengan string "true", jika tidak ganti dengan string kosong.

{if not "feature":true|false}
    Jika "feature" tidak ditentukan, ganti operator ini dengan string "true", jika tidak ganti dengan string "false".

{if not "feature":true}
    Jika "feature" tidak ditentukan, ganti operator ini dengan string "true", jika tidak ganti dengan string kosong.

{if "feature1" and ("feature2" or "feature3"):true}
    Jika "feature1" ditentukan, dan salah satu dari "feature2" dan "feature3" ditentukan, ganti operator ini dengan string "true", jika tidak ganti dengan string kosong.

  CONTOH

Berikut adalah contoh penggunaan operator "if". Jika fitur "with-sudo" diaktifkan, ini akan menambahkan "sss" ke baris sudoers.

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

Berikut adalah contoh operator "continue-if" dan "include-if". Berkas yang dihasilkan akan kosong kecuali fitur "with-smartcard" diaktifkan. Jika fitur tersebut diaktifkan dan fitur "with-faillock" juga diaktifkan, ini juga akan mengaktifkan dukungan untuk 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
    ...

Berikut adalah contoh "continue-if" menggunakan ekspresi logika. Berkas akan kosong kecuali "with-smartcard" atau "with-smartcard-required" ditetapkan. Ini akan menyederhanakan pemanggilan perintah authselect select yang tidak harus menyertakan kedua fitur tersebut tetapi hanya "with-smartcard-required" saja yang diperlukan.

    {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
    ...

Berikut adalah contoh operator "imply-if". Mengaktifkan fitur "with-smartcard-required" juga akan mengaktifkan "with-smartcard" untuk memastikan bahwa semua modul PAM yang relevan digunakan. Ini akan menghasilkan perilaku yang sama seperti contoh sebelumnya.

    {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
    ...

MEMBUAT PROFIL BARU

Untuk mendaftarkan profil baru dalam authselect, buatlah sebuah direktori di salah satu lokasi profil authselect dengan berkas-berkas yang tercantum di atas. Tidak semua berkas harus ada, hanya README yang bersifat wajib. Berkas lainnya dapat dibuat sesuai kebutuhan.

Anda mungkin akan terbantu dengan perintah authselect create-profile saat membuat profil baru. Lihat halaman manual authselect(8) atau authselect create-profile --help untuk informasi lebih lanjut.

LIHAT JUGA

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