みんな大好き Oracle Linux 9
そんな Linuxで、ユーザー管理するのって、大っ嫌いですよね
だったら、管理しないようにしてしまいましょう
とは言うものの 流石にそれは無理な話しなんです
会社で使う時は、どうしても必要ですな
でも、いちいち誰かが使うからユーザー作って下さいって言われて adduser するとか、それでもって管理台帳って、だるーーー
ということで愚痴は、こんぐらいにしといて
こんな面倒なユーザー管理をWindowsServerのActiveDirectoryと連携させて一元管理しようぜって話だ
だいたいの会社では Windowsドメインでユーザー管理してるだろうから、この認証機構にLinuxも参加させれば、少しは楽になるかもね
じゃー、早速、いってみようか
必須パッケージは、以下なんで、rootでさくっとインストールお願いします
dnf install oddjob oddjob-mkhomedir
dnf install krb5-workstation
dnf install realmd adcli
dnf install authselect
前提として、ActiveDirectoryのDNSに参加しておいて下さいね。
次に sssdを使う必要があるんですが、なぜか使えなくなってるんで、なんとかします。
このファイルを作成します。
/etc/sssd/sssd.conf
[sssd]
config_file_version = 2
services = nss, pam
domains = LOCAL
[nss]
#Backfill cache at 75%, do not cache bad lookups,
# no in-mem cache
entry_cache_nowait_percentage = 75
### 1 Hour caching for non existent user
entry_negative_timeout = 3600
[pam]
pam_id_timeout = 600
[domain/LOCAL]
# Prior to 1.15, must use older files provider
id_provider = proxy
proxy_lib_name = files
# Disable authentication, files provider
# always provides local access, enumerate files
auth_provider = none
access_provider = permit
enumerate = true
で、以下をrootで実行だね
chmod og-r /etc/sssd/sssd.conf
systemctl restart sssd
authselect select sssd with-mkhomedir --force
これで、無事 sssd が起動しているはずだよね
後、初期ログインでホームディレクトリ強制作成設定です
※注意
sssdのservicesキャッシュが、バグってる可能性がありそうだ
以前、エンディアンが狂う場合があったので、使わないようにすべきかも
/etc/nsswitch.conf
services: sss files <- sss を消すと使わなくなる
次に ActiveDirectoryに参加させてもらいましょう
realm discover YOURDOMAIN.COM
realm join -U [ドメイン管理者ユーザー] YOURDOMAIN.COM
このコマンド実行後に ドメイン管理者ユーザーのパスワードを入力する必要があります。
YOURDOMAIN.COM は、読み替えて下さいね
さー最後に sshの設定ですよ
/etc/ssh/sshd_config を 修正ですね。以下が有効になるようにして下さい。
PasswordAuthentication yes
UsePAM yes
もし、/etc/ssh/sshd_config.d/ の中で、PasswordAuthentication yes や UsePAM yes を上書きするような設定があればコメントアウトしておきましょう
systemctl restart ssh
で、sshdを再起動すれば完成です
ssh接続する時は、 [ADユーザー]@[ADドメイン]@[サーバー] となります
teratermなんかだと、[ADユーザー]@[ADドメイン] となりますね
ログイン出来るグループの制限や、色々と設定出来ます
/etc/sssd/sssd.conf に追加されたドメインの [domain/hogehoge]セクションが追加されているはずです
ここに、以下のようにすると、 domain users だけがログイン可能となりますね
access_provider = simple
simple_allow_groups = domain users
おまけで、ActiveDirectoryと連携することで、gitなんかも連携可能なんですね
Windowsとかだと TortoiseGitとかを使いますよね。
SSH経由でgitリポジトリからCloneする時に、SSH接続先が、ActiveDirectoryと連携された OracleLinux9だとSSO的な動作になってパスワードレスになるんですな
なんとすばらしい、もう、SSH鍵無くなってもーたとか、鍵下さーいとかって言われなくて済みますよ
gitインストールだね
dnf install git
git管理者ユーザーを作っときます
adduser --shell /usr/bin/git-shell git
リポジトリ作成 適当なパスに作ってますよ
mkdir -p /mnt/gitrepo.git
git init --bare /mnt/gitrepo.git
chown -R git:git /mnt/gitrepo.git
ここがポイント
ドメイングループにグループを変更します
chown -R :”domain このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 ” /mnt/gitrepo.git
chmod g+ws -R /mnt/gitrepo.git
cd /mnt/gitrepo.git
umask 0002
domain users は、ActiveDirectoryのグループですね
で、TortoiseGitからCloneすればOkです
ssh://このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 @gitsvr.hogehoge.co.jp:/mnt/gitrepo.git
でも detected dubious ownership ってエラー出ましたよね
実は、gitは、所有者と異なるユーザーがリポジトリをいじくると文句を言うように設計されています。
これを黙らせるには、ユーザーのssh接続先で以下のようにリポジトリが安全だと宣言する必要があるんですよね。
git config --global --add safe.directory /mnt/gitrepo.git
これで、無事、ActiveDirectory連携な git も使えるようになりました。
git pull や push がパスワードレスでアクセス出来ますね
実は、ssh+svnでも同様の動作になるんですよ





