インターネットプロジェクトのLDAP。 パート4

記事の最後の部分を書いていないことをおaびします。続けてください!
他の部分へのリンク: onetwothree5
このパートでは、Linux / Unixサーバーにログインする方法を学びます。

先ほど言ったように、認可を設定することはそれほど難しくありません。カタログの構造を計画することはどれほど困難です。 私はこのようにしました:
タイプposixAccountのオブジェクトにユーザーを格納し、unixグループをposixGroupオブジェクトに格納します。
ユーザー自身は、ou =開発者、ou =シェルユーザー、dc = habr、dc = ruなどのコンテナに保存されます

サーバーはオブジェクトではありませんが、このサーバーへのユーザーアクセス、sudo権限のオブジェクトを決定するためにgroupOfUniqueNamesタイプのオブジェクトが格納されているコンテナです。 IPなどに関する情報を保存することも便利です。 たとえば、サーバーへのアクセス権を持つユーザーを保存するDNオブジェクト:
cn =開発者、ou = dev.habr.ru、ou = datacenter01、ou =サーバー、dc = habr、dc = ru
私の例はあなたの場合には便利ではないかもしれません、とにかく、構造を描く必要があります。

構成に直接進みます。
認可には、 PADLという名前で会社が開発したnss_ldapおよびpam_ldapモジュールが使用されます。
必要なパッケージをインストールします。
apt-get install libpam-ldap libnss-ldap
インストーラーは次の質問を設定します。


/etc/pam_ldap.confおよび/etc/libnss-ldap.conf構成を確認でき/etc/libnss-ldap.conf
私にとっては同じなので、シンボリックリンクを作成しました。
ln -sf /etc/libnss-ldap.conf /etc/pam_ldap.conf
管理者のパスワードを入力した場合:
ln -sf /etc/libnss-ldap.secret /etc/pam_ldap.secret

次に、PAM設定を修正する必要があります( 注意してください ):
cat > /etc/pam.d/common-account << "EOF"
account required pam_ldap.so ignore_authinfo_unavail ignore_unknown_user
account required pam_unix.so
EOF


cat > /etc/pam.d/common-auth << "EOF"
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure
EOF


cat > /etc/pam.d/common-password << "EOF"
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5
EOF


cat > /etc/pam.d/common-session << "EOF"
session required pam_mkhomedir.so umask=0077 skel=/etc/skel/ silent # home-,
session sufficient pam_ldap.so
session required pam_unix.so
EOF


ファイル/etc/nsswitch.confを編集します。
passwd: files ldap
group: files ldap
shadow: files ldap



実際には、システムはou = shell-users、dc = habr、dc = ru以下にあるユーザーをスキップしますが、特定の基準に従ってユーザーを許可する必要があります。いくつかのオプションがあります。
1。
groupOfUniqueNamesを使用し、/ etc / pam_ldap.confで次の行を記述します。
pam_groupdn cn=developers,ou=dev.habr.ru,ou=datacenter01,ou=servers,dc=habr,dc=ru
pam_member_attribute uniqueMember


そのようなグループは1つしか存在できないことを除いて、すべてがうまくいくようです。
2。
オプションのPAMモジュール-pam_listfileまたはpam_succed_ifを使用します
これらのモジュールは、user、group、rhost、ttyなどの属性についてユーザーをチェックできます。
しかし、ここではグループはposixGroupになります-これはあまり便利ではありませんが、適応できます。 好きじゃなかった。
3。
実際にはこれが最初のオプションですが、padl.comからの特別なパッチを使用すると、構成で複数のpam_groupdnエントリを使用できます。 これは次のように行われます。
apt-get install build-essential fakeroot dpkg-dev
cd /usr/src
apt-get source libpam-ldap
apt-get build-dep libpam-ldap
cd /usr/src/libpam-ldap-184 ( , debian)
wget "http://bugzilla.padl.com/attachment.cgi?id=227" -O - | sed s=orig/pam=pam= | sed s=new/pam=pam= > debian/patches/99pam_ldap.patch
dpkg-buildpackage -rfakeroot -uc -b
dpkg -i ../libpam-ldap*.deb


Debian Squeezeパッチの適用方法は少し異なります。
wget -q "http://bugzilla.padl.com/attachment.cgi?id=227" -O - | sed s=orig/pam=pam= | sed s=new/pam=pam= > debian/patches/multi_groupdn
echo multi_groupdn >> debian/patches/series


実際にはすべて。
シンボリックリンクを/etc/pam_ldap.confに復元します(dpkgはそれらを消去します):
ln -sf /etc/libnss-ldap.conf /etc/pam_ldap.conf
ln -sf /etc/libnss-ldap.secret /etc/pam_ldap.secret
そして、必要なpam_groupdnを規定します。
pam_groupdn cn=developers,ou=dev.habr.ru,ou=datacenter01,ou=servers,dc=habr,dc=ru
pam_groupdn cn=admins,dc=habr,dc=ru



承認を確認-喜ぶ。

sudoについてはまだ質問がありました。非常に多くの資料があります。明らかに4つのトピックを超える必要があります。
ご清聴ありがとうございました!

Source: https://habr.com/ru/post/J53279/


All Articles