ラベル Samba の投稿を表示しています。 すべての投稿を表示
ラベル Samba の投稿を表示しています。 すべての投稿を表示

2012年6月24日日曜日

Samba+OpenLDAP(PDC) ユーザー設定について

Samba+OpenLDAP(PDC) を運用したときのユーザーの登録について記載します。

まず先に結論から申し上げると作成済みのユーザー(Linuxアカウント)に Samba+OpenLDAP(PDC) のドメインにログオンできるようにするには、下記の2つのコマンドを実行する必要があります。

(前提条件として下記が設定済みである)
・Samba および OpenLDAPがPDC対応で正しくインストールされている。
・作成済みのユーザー(Linuxアカウント)がldapaddコマンド等でLDAPに登録済み。
・ログオンするPCのコンピュータ名が smbldap-useradd -w <コンピュータ名> で登録済み


[root@hoge ~]# smbldap-usermod -a <作成済みLinuxアカウント>

[root@hoge ~]# smbldap-passwd <作成済みLinuxアカウント>

今回は、Linuxユーザーとして作成済みのユーザーをSamba+OpenLDAP(PDC)のユーザーとして登録(再設定するための方法)記載します。

※基本的な設定については、別途記載することにします。

■変更前の設定内容■
[root@hoge ~]# smbldap-usershow pelo
dn: uid=pelo,ou=Users,dc=hogehoge,dc=com
uid: pelo
cn: pelo
objectClass: account,posixAccount,top
userPassword: {SSHA}*******************************
loginShell: /bin/bash
uidNumber: 3002
gidNumber: 3002
homeDirectory: /home/pelo
[root@hoge ~]# 

Windowsクライアントからログインできるユーザーは下記のようになっています。
比較すると、samba専用のアトリビュートが作成されていないことがわかります。

[root@hoge ~]# smbldap-usershow knownuser
dn: uid=knownuser,ou=Users,dc=hogehoge,dc=com
uid: knownuser
cn: knownuser
objectClass: account,posixAccount,top,shadowAccount,sambaSamAccount
shadowMin: 0
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/knownuser
gecos: Known User
shadowLastChange: 15462
shadowMax: 45
sambaSID: S-1-5-21-2725434548-1602857623-2035637331-1001
displayName: Known User
userPassword: {SSHA}*******************************
sambaNTPassword: *******************************
sambaPasswordHistory: 0000000000000000000000000000000000000000000000000000000000000000
sambaPwdLastSet: 1335947382
sambaAcctFlags: [U          ]
[root@hoge ~]# 

既に作成済みのユーザーについてsamba専用のアトリビュート情報の追加を行うには、smbldap-usermod の -a オプションで実行する必要があることがわかりました。
善は急げで、早速実行します。

[root@hoge ~]# smbldap-usermod -a pelo
Warning: sambaPrimaryGroupSID could not be set beacuse group of user pelo is not a mapped Domain group!
To get a list of groups mapped to Domain groups, use "net groupmap list" on a Domain member machine.
Use of uninitialized value in string at /usr/sbin/smbldap-usermod line 346.
Use of uninitialized value in string eq at /usr/sbin/smbldap-usermod line 347.
Use of uninitialized value in string eq at /usr/sbin/smbldap-usermod line 347.
Use of uninitialized value in string eq at /usr/sbin/smbldap-usermod line 347.
Use of uninitialized value in concatenation (.) or string at /usr/sbin/smbldap-usermod line 347.
[root@hoge ~]# 

アレレ?。
何やら、嫌らしいエラーメッセージが表示されてしまいました。
usr/sbin/smbldap-usermod の346行目と347行目を確認しましたが、影響なさそうなので無視して先へ進むことにします。

    $cn = "$Options{'N'}";
    $cn .= " " . $Options{'S'}

smbldap-usermodコマンドの実施後に内容が変わったかどうかを検証します。

[root@hoge ~]# smbldap-usershow pelo
dn: uid=pelo,ou=Users,dc=hogehoge,dc=com
uid: pelo
objectClass: account,posixAccount,top,shadowAccount,sambaSamAccount
userPassword: {SSHA}zrb5IhKHtVErK8rdx/e0pqtG4kJ0ES29
shadowLastChange: 15476
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 3002
gidNumber: 3002
homeDirectory: /home/pelo
sambaPwdLastSet: 0
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
sambaPwdMustChange: 2147483647
sambaSID: S-1-5-21-2725434548-1602857623-2035637331-7004
sambaAcctFlags: [UX]
cn:  
displayName:  
[root@hoge ~]#

上記の赤字と青字の部分が追加されていることを確認できます。
しかし、青字のアトリビュートは未設定のようです。
cn は氏名(Common Name)を設定するアトリビュートで、displayName もWindowsで利用される氏名を設定するアトリビュートのようです。
      →→→ ■OpenLDAPの基本的なアトリビュートについて■
上記の内容でWindows7クライアントからドメインにログオンを行ってもまだエラーになってしまいます。
ログオンできるユーザーとの違いを確認したらsambaのパスワード関連のアトリビュートがないようです。(sambaLMPassword,sambaAcctFlags,sambaNTPassword,,,)
よって、再度パスワードを再設定するコマンド(smbldap-passwd)を実行してパスワードを上書きします。    ↓ 今度は無事にWindows7クライアントからドメインにログオンできました。

赤字の部分が smbldap-passwd を実行した結果に追加されたアトリビュートです。

[root@hoge ~]# smbldap-usershow pelo
dn: uid=pelo,ou=Users,dc=hogehoge,dc=com
uid: pelo
objectClass: account,posixAccount,top,shadowAccount,sambaSamAccount
shadowMin: 0
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 3002
gidNumber: 3002
homeDirectory: /home/pelo
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
sambaSID: S-1-5-21-2725434548-1602857623-2035637331-7004
cn:  
displayName:  
sambaLMPassword: *******************************
sambaAcctFlags: [U]
sambaNTPassword: *******************************
sambaPwdLastSet: 1340506248
sambaPwdMustChange: 1344394248
userPassword: {SSHA}*******************************
shadowLastChange: 15515
shadowMax: 45
[root@hoge ~]# 

2012年6月23日土曜日

smbldap-usershow コマンドがエラーになる。

Samba+OpenLDAPでのユーザー情報を確認しようとsmbldap-usershowコマンドを実行したらエラーになってしまった。

[root@hoge ~]# smbldap-usershow hogehoge
Use of uninitialized value in string at /usr/lib/perl5/vendor_perl/5.8.8/smbldap_tools.pm line 397.
Use of uninitialized value in string at /usr/lib/perl5/vendor_perl/5.8.8/smbldap_tools.pm line 397.
user hogehoge doesn't exist

smbldap_tools.pm の397行目を確認したら、 $ldap_slave->bind( "$config{slaveDN}", password => "$config{slavePw}" ); となっていた。
slaveDNの設定に問題があるようなので、確認をすると下記の対応でエラーが解消された。

■ /etc/smbldap-tools/smbldap_bind.conf ■
# $Id: smbldap_bind.conf 35 2011-02-23 09:07:36Z fumiyas $
#
############################
# Credential Configuration #
############################
# Notes: you can specify two differents configuration if you use a
# master ldap for writing access and a slave ldap server for reading access
# By default, we will use the same DN (so it will work for standard Samba
# release)
slaveDN="cn=Manager,dc=hogehoge,dc=com"  <-- 追加
slavePw="****************"  <-- 追加
masterDN="cn=Manager,dc=hogehoge,dc=com"
masterPw="****************"

Samba+OpenLDAPを特にスレーブサーバを立てていないのでslaveの設定は不要と思っていたが、このslaveの記述がないとエラーになってしまうようでした。
なんだか良く理解できないが、コマンドが実行できるようになったので安心した。

2012年3月15日木曜日

Windows共有フォルダをマウントする

Windows 共有フォルダーを起動時にマウントする。
※fstabに下記のように記載する。

//マウント相手のIPアドレス/マウントしたいフォルダ名 /mnt/samba/ smbfs username=相手先のユーザー名(sambaユーザ名),password=相手先ユーザーのパスワード,gid=相手先ユーザーのグループID,uid=相手先ユーザーのユーザーID,codepage=cp932,iocharset=utf8,rw,defaults 0 0
※username と password は,マウント先が,Windowsの場合は「Windowsのログインユーザ」,マウント先がLinuxの時は「Sambaのユーザ」のものです。

※接続先がLinuxで,UTF8の場合は,「codepage=cp932,iocharset=utf8,」不要です。

【接続先がWindows】
//192.168.0.5/share /mnt/samba/ smbfs username=winuser,password=hoge,codepage=cp932,iocharset=utf8,rw,defaults 0 0
【接続先がLinux】
//192.168.0.5/share /mnt/samba/ smbfs username=smbuser,password=hoge,uid=1000,gid=1000,rw,defaults 0 0
mountコマンドでマウントする。
mount -t cifs -o user=******,password=****** //example.com/backup /mnt/backup

2012年2月21日火曜日

OpenLDAPと暗号化通信

SMTPやPOP3プロトコルでは平文パスワードがネットワーク上を流れるますが,LDAPでも同じです。tcpdumpなどで通信をキャプチャしてみると,パスワード文字列を簡単に取得することができてしまいます。

アカウント情報(UNIXアカウント)をOPENLDAPで管理する場合、実際のパスワード情報はLDAPサーバ上のuserPassword属性中に暗号化された状態で格納されていますが,ネットワーク上のトラフィックをキャプチャしてみると,平文のパスワードを取得することができてしまう。

信頼されたネットワーク内のみで運用するのであれば話は別ですが,盗聴の危険性を考慮した場合,ネットワーク経路の暗号化の検討が必要になります。

暗号化の種類

データを暗号化させるためには,いくつかの方法が考えられますが,これはSMTP/POP3/IMAPなどの基本的なプロトコルにおける考え方と同様です。

ひとつ目の方法はSSL/TLSにより,トラフィック全体を暗号化させることです。この場合SSLを使用しますので,LDAPサーバ上にサーバ鍵,証明書,CA情報などを設置しておく必要があります。トラフィックをSSLでカプセリングすることで,パスワード情報だけではなく接続の最初から最後までの全情報を暗号化させることができることが最大のメリットです。また,暗号化だけではなく信頼された接続先に安全に接続できる,という意味も持ちます。

2011年2月13日日曜日

Samba-フォルダ名の変更ができない

メインで使用したPCの様子が変なので、重要データの持ち方をサーバーと2台のクライアント間の更新しあう環境に変更を行っていたところ、クライアントからSambaの共有フォルダ直下に作成されているフォルダ名を変更できない事が判明。

Sambaは今までも使用していたが、以前からこの現象に気づいていたがそれまでは特に困らなかったので放置していた。しかし、PCの故障等からデータを紛失しないためにもメインで使用するPCを切り替え使用可能にするためにも、この現象というかSambaの設定を正しく行うようにする必要がある。

Sambaの設定に問題があるのかと思っていろいろと試行してみたが、なんと問題はSELinuxにあった。 SELinuxを無効にすると問題なく共有フォルダ直下のフォルダ名を変更することができた。

ということでSELinuxの変更に着手を開始しようとしたが、現在のマシンのSELinuxの設定を自分で独自設定したためにSambaで使用するタイプやコンテキスト変数が定義されていない。
手動で作成していくのは大変かと考えてとりあえず、SELinuxのポリシータイプを現在のseeditからtargetに変更して対応することにした。

   ↓(ここでまたやらかしてしまった。)

ポリシータイプを変更したのに、SELinuxのモードをEnforcingのまま再起動をしてしまい起動できなくなってしまった。

お決まりのブートオプションを指定して起動させて難なく対応する。
ブート時に A を押してブートオプションを指定する。(enforcing=0を追記する)

kernel /vmlinuz-2.6.18-194.32.1.el5.centos.plus ro root=/dev/VolGroup00/LogVol00 rhgb quiet  enforcing=0

起動できたら、次回起動時にラベルの振り直し(SELinux AdministratorでRelabel on next rebootをチェックする)設定をして再起動を行う。
あとは、地道に環境を整えて早くSELinuxのモードをEnforcingに戻すことにします。