LoginSignup
21
20

More than 5 years have passed since last update.

[Linux]authconfigを使ったldap認証設定(nss_ldap/pam_ldap)

Last updated at Posted at 2014-03-02

こんな私向け

  • viで編集するの面倒
  • なんとか設定できたけど、su - [ユーザ] 、初回ログイン時にディレクトリできねえって人
  • ldap認証設定いろいろ面倒だわー
  • /etc/pam.d/ 配下のファイル触るとか面倒だわー

インストール

コマンド
yum install authconfig

初回ログイン時に/home/[ユーザ] ディレクトリ作成

コマンド
authconfig --enablemkhomedir --update

ldapサーバ設定

コマンド
authconfig --ldapserver="ldap://10.0.0.2/ ldap://10.0.0.3/" --update

ldap有効(nss_ldap:genent等libc系ツールが使う,nsswitch.confもこっち)

コマンド
authconfig --enableldap  --update

ldap認証有効(pam_ldap:login,telnetd等が使う)

コマンド
authconfig --enableldapauth --update

こっから先は面倒なまま

bindpw,binddn,filter groupはauthconfigで設定できなかった。
sedをつかうか
chefでやるならこんな感じ

bindpw

recipe
ruby_block "insert_line_bindpw" do
  block do
    file = Chef::Util::FileEdit.new("/etc/nslcd.conf")
    file.insert_line_if_no_match("^bindpw #{node[:ldap][:bindpw]}", "bindpw #{node[:ldap][:bindpw]}")
    file.write_file
  end
  notifies :restart, "service[nslcd]"
end

binddn

recipe
ruby_block "insert_line_binddn" do
  block do
    file = Chef::Util::FileEdit.new("/etc/nslcd.conf")
    file.insert_line_if_no_match("^binddn #{node[:ldap][:binddn]}", "binddn #{node[:ldap][:binddn]}")
    file.write_file
  end
  notifies :restart, "service[nslcd]"
end

filter group

recipe
ruby_block "insert_line_filter_group" do
  block do
    file = Chef::Util::FileEdit.new("/etc/nslcd.conf")
    file.insert_line_if_no_match("^filter group " + Regexp.escape(node[:ldap][:filter][:group]), "filter group #{node[:ldap][:filter][:group]}")
    file.write_file
  end
  notifies :restart, "service[nslcd]"
end

追記2014/3/5

sudo-ldap.confの設定が抜けていたのと
pam_ldap.confの設定が微妙な感じだった。
全部authconfigでできればいいのに。

/etc/nslcd.conf
ruby_block "insert_line_/etc/nslcd.conf" do
  block do
    file = Chef::Util::FileEdit.new("/etc/nslcd.conf")
    file.insert_line_if_no_match("^bindpw #{node[:ldap][:bindpw]}", "bindpw #{node[:ldap][:bindpw]}")
    file.write_file
    file.insert_line_if_no_match("^binddn #{node[:ldap][:binddn]}", "binddn #{node[:ldap][:binddn]}")
    file.write_file
    file.insert_line_if_no_match("^filter group " + Regexp.escape(node[:ldap][:filter][:group]), "filter group #{node[:ldap][:filter][:group]}")
    file.write_file
  end
  notifies :restart, "service[nslcd]"
end
pam_ldap.conf
ruby_block "insert_line_/etc/pam_ldap.conf" do
  block do
    file = Chef::Util::FileEdit.new("/etc/pam_ldap.conf")
    file.insert_line_if_no_match("^bindpw #{node[:ldap][:bindpw]}", "bindpw #{node[:ldap][:bindpw]}")
    file.write_file
    file.insert_line_if_no_match("^binddn #{node[:ldap][:binddn]}", "binddn #{node[:ldap][:binddn]}")
    file.write_file
    file.insert_line_if_no_match("^uri ldap://127.0.0.1/}", "uri ldap://127.0.0.1/}")
    file.write_file
  end
  notifies :restart, "service[nslcd]"
end
sudo-ldap.conf
ruby_block "insert_line_/etc/sudo-ldap.conf" do
  block do
    file = Chef::Util::FileEdit.new("/etc/sudo-ldap.conf")
    file.insert_line_if_no_match("^bindpw #{node[:ldap][:bindpw]}", "bindpw #{node[:ldap][:bindpw]}")
    file.write_file
    file.insert_line_if_no_match("^binddn #{node[:ldap][:binddn]}", "binddn #{node[:ldap][:binddn]}")
    file.write_file
    file.insert_line_if_no_match("^sudoers_base #{node[:ldap][:sudoers_base]}", "sudoers_base #{node[:ldap][:sudoers_base]}")
    file.write_file
    file.insert_line_if_no_match("^uri ldap://127.0.0.1/}", "uri ldap://127.0.0.1/}")
    file.write_file
  end
  notifies :restart, "service[nslcd]"
end

参考URL

21
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
20