計算機の認証先にLDAPを採用した. っでアカウントのパスワード変更は passwd で行える

ただし、この場合 Posix側の変更であってsamba側にはその変更は届かない. 計算機にsshログインする際のパスワードは変更されたが、
同じLDAPを認証先として構築した smb サーバで要求されるpasswdは変更されない...

ならどうするか?

windowsOSであれば一応変更できる. 結構トリッキーだけど.

求めたいのは一つのコマンドで Posix側もsmb側も一緒にパスワード更新されてほしいツール.

っでLDAPとsambaを連携させるパッケージ「smbldap-tools」(User and group administration tools for Samba/OpenLDAP)を導入してみた

修正

LDAPを一部修正します. 「dn: olcDatabase={2}hdb,cn=config」にて「olcAccess」は

olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=sybyl,dc=local" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=sybyl,dc=local" write by * read

と定義していた.
確認のため ldapsearch コマンドで

[root@ldap-server ~]# ldapsearch -Y EXTERNAL -H ldapi:/// -b olcDatabase={2}hdb,cn=config -o ldif-wrap=no | grep olcAccess
 :
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=sybyl,dc=local" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=sybyl,dc=local" write by * read
[root@ldap-server ~]#

ここで 「olcAccess: {0}to attrs」の値を変更します. 変更ファイルは下記になります.

[root@ldap-server ~]# vi ldap/smbldap.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
delete: olcAccess
olcAccess: {0}
-
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword,sambaPwdMustChange,sambaPwdLastSet
  by dn="cn=Manager,dc=sybyl,dc=local" write by anonymous auth by self write by * none
 
[root@ldap-server ~]#

これを反映させる

[root@ldap-server ~]# ldapmodify -H ldapi:/// -f  ldap/smbldap.ldif

smbldap-passwd インストール

[root@ldap-smb ~]# yum install epel-release
[root@ldap-smb ~]# yum install smbldap-tools

まずは設定. 「smbldap-config」を実行します. 色々問われるが基本リターンでOK. パスワード入力さえできればOK.

[root@ldap-smb ~]# smbldap-config
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
       smbldap-tools script configuration
       -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Before starting, check
 . if your samba controller is up and running.
 . if the domain SID is defined (you can get it with the 'net getlocalsid')
 
 . you can leave the configuration using the Ctrl-c key combination
 . empty value can be set with the "." character
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Looking for configuration files...
 
Samba Configuration File Path [/etc/samba/smb.conf] >
 
The default directory in which the smbldap configuration files are stored is shown.
If you need to change this, enter the full directory path, then press enter to continue.
Smbldap-tools Configuration Directory Path [/etc/smbldap-tools] >
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Let's start configuring the smbldap-tools scripts ...
 
. workgroup name: name of the domain Samba acts as a PDC for
  workgroup name [SAMBA] >
. netbios name: netbios name of the samba controller
  netbios name [] >
. logon drive: local path to which the home directory will be connected (for NT Workstations). Ex: 'H:'
  logon drive [] >
. logon home: home directory location (for Win95/98 or NT Workstation).
  (use %U as username) Ex:'\\\%U'
  logon home (press the "." character if you don't want homeDirectory) [\\\%U] >
. logon path: directory where roaming profiles are stored. Ex:'\\\profiles\%U'
  logon path (press the "." character if you don't want roaming profiles) [\\\profiles\%U] >
. home directory prefix (use %U as username) [/home/%U] >
. default users' homeDirectory mode [700] >
. default user netlogon script (use %U as username) [] >
. default password validation time (time in days) [45] >
. ldap suffix [dc=sybyl,dc=local] >
. ldap group suffix [ou=Group] >
. ldap user suffix [ou=People] >
. ldap machine suffix [] >
. Idmap suffix [ou=Idmap] >
. sambaUnixIdPooldn: object where you want to store the next uidNumber
  and gidNumber available for new users and groups
  sambaUnixIdPooldn object (relative to ${suffix}) [sambaDomainName=SAMBA] >
. ldap master server: IP address or DNS name of the master (writable) ldap server
  ldap master server [192.168.0.81] >
. ldap master port [389] >
. ldap master bind dn [cn=Manager,dc=sybyl,dc=local] >
. ldap master bind password [] >
. ldap slave server: IP address or DNS name of the slave ldap server: can also be the master one
  ldap slave server [192.168.0.81] >
. ldap slave port [389] >
. ldap slave bind dn [cn=Manager,dc=sybyl,dc=local] >
. ldap slave bind password [] >
. ldap tls support (1/0) [0] >
. SID for domain SAMBA: SID of the domain (can be obtained with 'net getlocalsid ')
  SID for domain SAMBA [S-1-5-21-4253967948-352593788-3218593100] >
. unix password hash: hash used for unix passwords
  If set to "exop", use LDAPv3 Password Modify (RFC 3062) extended operation.
  unix password hash (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT) [SSHA] >
. default user gidNumber [513] >
. default computer gidNumber [515] >
. default login shell [/bin/bash] >
. default skeleton directory [/etc/skel] >
. default domain name to append to mail address [] >
. treat shadowAccount object or not (1/0) [1] >
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
backup old configuration files:
  /etc/smbldap-tools/smbldap.conf->/etc/smbldap-tools/smbldap.conf.old
  /etc/smbldap-tools/smbldap_bind.conf->/etc/smbldap-tools/smbldap_bind.conf.old
writing new configuration file:
  /etc/smbldap-tools/smbldap.conf done.
  /etc/smbldap-tools/smbldap_bind.conf done.
 
[root@ldap-smb ~]#

これによって作られるファイルは「/etc/smbldap-tools/smbldap.conf」と「/etc/smbldap-tools/smbldap_bind.conf」の2つ. 中身はこんな感じになる

[root@ldap-smb ~]# grep -v -e '^\s*#' -e '^\s*$' /etc/smbldap-tools/smbldap.conf
SID="S-1-5-21-4253967948-352593788-3218593100"
sambaDomain="SAMBA"
slaveLDAP="192.168.0.81"
slavePort="389"
masterLDAP="192.168.0.81"
masterPort="389"
ldapTLS="0"
verify=""
cafile=""
clientcert=""
clientkey=""
suffix="dc=sybyl,dc=local"
usersdn="ou=People,${suffix}"
computersdn=",${suffix}"
groupsdn="ou=Group,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=SAMBA,${suffix}"
scope="sub"
password_hash="SSHA"
password_crypt_salt_format=""
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
shadowAccount="1"
defaultMaxPasswordAge="45"
userSmbHome="\\\%U"
userProfile="\\\profiles\%U"
userHomeDrive=""
userScript=""
mailDomain=""
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
 
[root@ldap-smb ~]# grep -v -e '^\s*#' -e '^\s*$' /etc/smbldap-tools/smbldap_bind.conf
slaveDN="cn=Manager,dc=sybyl,dc=local"
slavePw="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"       <-- "cn=Manager,dc=sybyl,dc=local"のパスワード(平文)
masterDN="cn=Manager,dc=sybyl,dc=local"
masterPw="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"      <-- "cn=Manager,dc=sybyl,dc=local"のパスワード(平文)
 
[root@ldap-smb ~]#

これで準備は完了

つかってみる

ここではパスワードを変更して、それがPosixもsmbも同時に変更する事を狙っている

[foo@ldap-smb ~]$ smbldap-passwd -h
(c) Jerome Tournier - (jtournier@gmail.com)- Licensed under the GPL
Usage: /usr/sbin/smbldap-passwd [hpsuB?] [username]
  -h, -?, --help show this help message
  -p             read password from STDIN without verification (root only)
  -s             update only samba password
  -u             update only UNIX password
  -B             must change Samba password at logon
[foo@ldap-smb ~]$
 
[foo@ldap-smb ~]$ smbldap-passwd
Identity validation...
Enter your UNIX password:                   <-- これまでのパスワード
Changing UNIX and samba passwords for foo
New password:                               <-- これからのパスワード
Retype new password:
[foo@ldap-smb ~]$

これで両方同時にパスワードが変更された.

smb共有を提供していないサイトでも使いたい

上記は ldap を参照しているclientマシンで、かつそこでsmbをサービス展開しているサイトである.
ではsmbを提供せず、 ldap 参照clientマシンの場合は?

前段の「smbldap-config」の内容から「smbpasswd」コマンドと「slappasswd」コマンドが必要らしい
なので、この2つを含むパッケージをまずは入れてみる

[root@ldap-client ~]# yum install samba-common-tools
[root@ldap-client ~]# yum install openldap-servers

そして本題の「smbldap-tools」

[root@ldap-client ~]# yum install epel-release
[root@ldap-client ~]# yum install smbldap-tools

次にsmbldap-toolsの設定で「smbldap-config」を実行すると

[root@ldap-client ~]# smbldap-config
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
       smbldap-tools script configuration
       -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Before starting, check
 . if your samba controller is up and running.
 . if the domain SID is defined (you can get it with the 'net getlocalsid')
 
 . you can leave the configuration using the Ctrl-c key combination
 . empty value can be set with the "." character
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
Samba needs to be started first !
 
[root@ldap-client ~]#

と言われる. smbデーモンの起動が必要なようで、そうなると/etc/samba/smb.confの調整も必要となる.
「/etc/samba/smb.conf」はsmbサービスを提供している所から参照して作る

[root@ldap-client ~]# cat /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        security = user
 
        load printers = no
 
        passdb backend = ldapsam:ldap://192.168.0.81
        ldap suffix = dc=sybyl,dc=local
        ldap user suffix = ou=People
        ldap group suffix = ou=Group
        ldap admin dn = cn=Manager,dc=sybyl,dc=local
        ldap passwd sync = yes
        ldap ssl = off
[root@ldap-client ~]#

smb共有をする必要はないので、[global]設定のみかな. 「ldap admin dn」の定義があるので「cn=Manager,dc=sybyl,dc=local」のパスワードをsecrets.tdbに格納させる

[root@ldap-client ~]# smbpasswd -W
Setting stored password for "cn=Manager,dc=sybyl,dc=local" in secrets.tdb
New SMB password:
Retype new SMB password:
 
[root@ldap-client ~]#

その後にsmbデーモンを稼働させ、再度「smbldap-config」を実行する

[root@ldap-client ~]# systemctl start smb
[root@ldap-client ~]# smbldap-config

「smbldap-config」は特段何も修正せず、リターンキーで応答. ldapのパスワードのみ入力作業となります.

その後、一般ユーザでパスワード変更が可能になる
*「smbldap-config」が完了したらsmbデーモンは停止してもいいみたい. 「systemctl stop smb」

[foo@ldap-client ~]$ smbldap-passwd
Identity validation...
Enter your UNIX password:
Changing UNIX and samba passwords for foo
New password:
Retype new password:
 
[foo@ldap-client ~]$

これでLDAPのみ参照のノードでもsshログインパスワードとsmb共有パスワードが変更される.

rootユーザのパスワード変更には使えないけど一般ユーザのpasswd へlinkを張ってもいい感じかな.

[root@c ~]# vi /etc/modulefiles/smbldap-passwd
#%Module1.0
 
set-alias passwd /usr/sbin/smbldap-passwd
 
[root@c ~]#

とするとか.


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2021-04-03 (土) 23:37:39 (117d)