タグ:ActiveDirectory ( 40 ) タグの人気記事
Windows7でクラシック表示にするグループポリシー
Windows7のAeroを無効にして、クラシック表示にするためのグループポリシーの設定です。

[ユーザの構成]→[ポリシー]→[管理テンプレート]→[コントロールパネル]→[特定の視覚スタイル ファイルを強制するか、または Windows クラシックを強制する]の設定を、有効 にして、[視覚スタイルファイルへのパス]を空欄にするといいようです。

ただし、Aeroが無効になっただけで、Windowsクラシックスタイルになっていない場合もありました。

そういう場合はテーマファイルを[視覚スタイルファイルへのパス]に指定してやると言いようなんですが、WindowsクラシックスタイルのテーマファイルをWindows7は持ってないようです。

なので、[個人設定]のウィンドウから、[Windowsクラシック]テーマを選び、テーマの保存を行います。
すると、C:\Users\ユーザ名\AppData\Local\Microsoft\Windows\Themas フォルダにテーマファイルが作成されます。
このテーマファイルを共有フォルダに置くなりして、そのパスを[視覚スタイルファイルへのパス]に指定してやることができます。
[PR]
by Jehoshaphat | 2013-03-26 22:36 | 豆知識 | Trackback | Comments(0)
グループポリシーでWindows7のアクションセンター非表示にする
グループポリシーで、Windows7のアクションセンター(バックアップできてねーよとか問題あるぞとかタスクトレイで通知するお節介な機能)を非表示にする方法です。

[ユーザーの構成]→[管理用テンプレート]→[タスク バーと スタート メニュー]→[アクション センター アイコンを削除する]を有効にするといいようです。

参考:
TechNet:アクション センターのグループ ポリシー設定
アクション センター - Windows 7 の機能 - Microsoft Windows
[PR]
by Jehoshaphat | 2013-03-26 22:35 | 豆知識 | Trackback | Comments(0)
グループポリシーでUACを無効にする
グループポリシーでWindows7,VistaのUAC(ユーザーアカウント制御)を無効にする方法です。

[コンピュータの構成]→[Windowsの設定]→[セキュリティの設定]→[ローカルポリシー]→[セキュリティオプション]→[ユーザーアカウント制御:管理者承認モードですべての管理者を実行する]の値を 無効 にすればいいようです。

コンピュータの構成なので、ドメイン全体のGPOの設定するか、OUを作って、そのOUにコンピュータオブジェクトを追加する必要があります。

参考:
Windows Vista の UAC(ユーザーアカウント制御)機能を無効にしたい
[PR]
by Jehoshaphat | 2013-03-25 22:34 | 豆知識 | Trackback | Comments(0)
(バッチ)今のユーザが任意のグループに属しているか調べる
バッチファイルを実行するユーザが、任意のローカルもしくはドメインのグループに属しているかを調べる方法です。
以下のようにすることで、調べることができます。

rem ローカルのAdministratorsグループに属しているか
net localgroup Administrators | find /I "%USERNAME%"
if %ERRORLEVEL% == 0 (
echo "属してる"
) else (
echo "属してない"
)
 
rem ドメインの Domain Admins グループに属しているか
net user "%USERNAME%" /domain | find /I "*Domain Admins"
if %ERRORLEVEL% == 0 (
echo "属してる"
) else (
echo "属してない"
)


当初は、ドメインの任意のユーザがこのバッチを実行したPCのローカルの管理者(Administrators)かどうかを調べたいと思っていました。
ローカルのAdministratorsグループに、直にドメインのユーザを指定している場合は上記の方法で取得できました。
しかし、ローカルのAdministratorsグループにドメインのグループを指定しており、そのドメイングループにユーザが所属しているとかいう場合は上記の方法だけでは判定できません。
そのような場合、ローカルのAdiministaratorsグループ内のドメインメンバを列挙し、ユーザがそのドメイングループにいるかどうかを調べる必要があります。
が、バッチだとそのあたりの処理の実装が難しいので、断念しました。

やはりちょっと複雑になるような処理はVBScriptやプログラムにしてしまったほうが楽です。


ドメインユーザがローカルのAdministratorsグループに属しているかどうかは、whoami コマンドを使うといいようです。
ただ、whoami コマンドはVsita以降は標準で着いてますが、2000はリリースキット、XP SP2のサポートツールいれないと使えないようです。

whoami /groups | find /I "Administrator"
if %ERRORLEVEL% == 0 (
echo "ローカル管理者権限有り"
) else (
echo "ローカル管理者権限なし"
)


参考:
ユーザが管理者権限を有しているかバッチで判定する方法 - Windows Server Insider - @IT
Windows Server:システム管理者の視点 - 正式に認められた「Whoami」コマンド:ITpro
[PR]
by Jehoshaphat | 2013-03-24 22:25 | VBScirpt,WSH,バッチ | Trackback | Comments(0)
Windows端末で時刻同期を即時に行う
ドメイン環境で、ドメインコントローラとの時刻同期に失敗するとも若干関連がありますが、Windows端末をNTPプロトコルを使って今すぐ時刻同期したい場合は、w32tm コマンドを使って /resync /nowait オプションをつけるといいようです。

>w32tm /resync /nowait


また、NTPプロトコルではなくSMBプロトコルでも時刻同期できるようです。(ドメイン環境)
その場合は、以下のコマンドを実行します。

>net time /set


参考:
時刻を手動で直ちに同期させる - @IT
[PR]
by Jehoshaphat | 2012-12-06 00:40 | 豆知識 | Trackback | Comments(0)
グループポリシーの適用状態を確認したい
現在ログインしてるユーザ/コンピュータ(もしくは任意のユーザ/コンピュータ)で、どのようなグループポリシーが適用されるのか知りたい時があります。

このようなときに有用なのが、グループ ポリシー結果 (GPResult.exe) コマンド ライン ツールです。

基本的には、gpresult をコマンドプロンプトで実行するだけで現在使用のコンピュータ/ログイン中のユーザで、どのグループポリシーが適用されるかが表示されます。

任意のコンピュータ/ユーザにするには下記のようなパラメータをつけるといいようです。

任意のコンピュータ
gpresult /s 任意のコンピュータ名

任意のユーザ
gpresult /u ドメイン\ユーザ名


参考:
Windows XP Professional : グループ ポリシー結果 (GPResult.exe) コマンド ライン ツールの使用方法
[PR]
by Jehoshaphat | 2012-11-09 00:02 | 豆知識 | Trackback | Comments(0)
Subversion(Apache,Linux)で認証にActiveDirectoryを使う

LinuxでSubVersionを構築しEclipse Subversive から使うではSubversionの認証としてBasic認証を使ってましたが、Windowsドメインを建てているということで、ActiveDirectoryを使って認証してみました。

環境はApache2.2 , CentOS5.5で、ドメインコントローラはWindowsServer2003です。

SubversionはApacheコンポートネントとして動かしているため、普通のWEBサーバとしての認証でも使えるかと思います。


ActiveDirectoryとの認証方法はいくつかあるようですが、今回はLDAPでの認証を試しました。
(LDAPを使ってもAuthTypeはBasicでないといけないのでパスワードは平文で流れてしまいます。)

LDAPでActiveDirectoryの認証情報を使うには、下記のように設定ファイルを編集すればOKです。(認証部分のみ)

/etc/httpd/conf.d/subversion.conf

<Location /svn>
AuthType Basic
AuthName "Subversion Repositoryr"
AuthBasicProvider ldap (認証方式。LDAPを使う)
AuthLDAPUrl "ldap://hogesv01:389/OU=person,dc=hogedomain,dc=jp?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN userhoge@hogedomain.jp
AuthLDAPBindPassword userhogeのパスワード
Require ldap-attribute objectClass=person
</Location>


AuthLDAPUrlはLDAP URLと呼ばれるもので下記の書式になるようです。

ldap://host:port/basedn?attribute?scope?filter

host : これはドメインコントローラを指定します。
port : LDAPだと389になります。
basedn : 検索の起点となる識別名(DN)を指定します。
attribute : 検索対象の属性です。sAMAccountNameはWindowsのログイン名になります。
scope : 検索する深さを指定します。one(1階層のみ検索)またはsub(下位の階層も検索)です。
filter : 検索のLDAPフィルターです。(objectClass=*)となっているのでツリー上の全てのオブジェクトを検索します。


ここで一つ問題が出てきました。
basedn部分で、OUまで含めないとサーバエラーとなってしまう点です。つまり、OUは必ず指定しないといけません。
しかし、今回ドメイン直下には複数のOUがあり、それぞれにユーザアカウントオブジェクトがあるのです。
仮に下記のように試してみましたが、下の行の設定だけが有効になってしまう状態でした。

AuthLDAPUrl "ldap://hogesv01:389/OU=person,dc=hogedomain,dc=jp?sAMAccountName?sub?(objectClass=*)"
AuthLDAPUrl "ldap://hogesv01:389/OU=devlop,dc=hogedomain,dc=jp?sAMAccountName?sub?(objectClass=*)"


で、調査したところ、Trac と mod_pythonの中ほどに答えが。。。
portをActiveDirectoryのグローバルカタログ(ポート3268)にすれば、basednでOUを指定しなくてもディレクトリ全体が検索範囲になることが分かりました。(グローバルカタログはフォレスト内の全ドメインの全オブジェクトから、ひんぱんに利用する属性のみを抽出したものです。)
AuthLDAPUrlは下記のようになります。

AuthLDAPUrl "ldap://hogesv01:3268/dc=hogedomain,dc=jp?sAMAccountName?sub?(objectClass=*)"



AuthLDAPBindDNはActiveDirectoryにアクセスするためのユーザ名です。管理者権限持ってなくもActiveDirectory内のユーザで有ればどれでもいいようです。
AuthLDAPBindPasswordで、AuthLDAPBindDNで指定したユーザのパスワードを指定します。


Requireでどのユーザに対してアクセスを許可するか設定します。(特定のユーザや特定のグループだけならAuthLDAPUrlのフィルタで設定してしまう方法も有ります)
下記にいくつかの設定例を紹介します。

LDAPディレクトリ内の全ユーザに許可する
Require valid-user

LDAPディレクトリ内のtest01 test02ユーザだけ許可する
Require ldap-user test01 test02

LDAPディレクトリ内のグループdev supportグループに属するユーザだけ許可する
AuthLDAPGroupAttribute member
AuthLDAPGroupAttributeIsDN on
Require ldap-group CN=dev,CN=Users,DC=hogedomain,DC=jp
Require ldap-group CN=support,CN=Users,DC=hogedomain,DC=jp

グループの識別名(DN)を取得するには、ADSI Edit が有用です。
ADSI Edit については、(ADSI)ActiveDirectoryのオブジェクトの属性をのぞきたいが参考になります。


参考:
開発リソース/Unix/Apache2でmod_auth_ldapを利用したActiveDirectoryベースの認証
LDAPによるApacheの認証と認可
The auth_ldap Module for Apache


今回はLDAPを使ってApacheからActiveDirecotryへの認証を行いましたが、KERBEROS認証やNTLM認証(winbind+samba)、SSPI、SPNEGO認証を用いる方法があるようです。(方法によってはシングルサインオンできそうですね。)
とりあえず参考になりそうなページだけリンクはっておきます。
●KERBEROS認証
Apache/認証にActiveDirectoryを使う方法
ActiveDirectoryでApacheの認証を
mod_auth_kerb で Basic認証を有効にする (Active Directory を使ったシングルサインオン)

●NTLM認証
Apache(Linux)に、Windowsドメイン認証を利用して、シングルサインオンを実現する詳細手順 - RX-7乗りの適当な日々
ActiveDirectoryとSUSE11.3(LINUX)上のapacheでシングルサインオンを利用する
Apacheで統合Windows認証を使う

●SSPI
ドメイン認証(mod_sspi) - なんとなく ~学習もかねて~
2008/01/28 日記: Microsoft セキュリティ サポート プロバイダ インターフェイス / Microsoft Security Support Providers Interface (SSPI)
Apache ベースのサーバ

●SPNEGO認証
Subversion にも SPNEGO 認証:お試しlog4
SPNEGO
[PR]
by Jehoshaphat | 2011-09-21 23:20 | Linux | Trackback | Comments(0)
(WSH)VBScriptでユーザが特定のグループに属しているかを判定する
ログインスクリプトで、特定のグループに所属するユーザだけ任意の処理をしたいという場合の判定方法です。

[ADSI] IADsGroup.IsMember メソッドを使ってユーザが特定のグループに所属してるかチェックしてみよう (VBScript / .NET Framework) というサイトが非常に参考になりました。
というか、答えがそのままコード付きで載せられています。(C#のコードもあるのもうれしいです。)

ということで、ほぼ参考先コードまるままですが、VBScriptでの判定方法です。
ローカルグループとドメイングループの判定をしています。

Option Explicit
 
'グループに所属しているかどうかをチェックするスクリプト
Dim comInfo , currentUser , domaingroup ,localgroup
 
Set comInfo = CreateObject("WinNTSystemInfo")
currentUser = comInfo.DomainName + "/" + comInfo.UserName
Set currentUser = GetObject("WinNT://" + currentUser + ",user")
 
'ローカルグループに属しているかの判定
Set localgroup = GetObject("WinNT://" + comInfo.ComputerName + "/Administrators,group")
Wscript.Echo currentUser.AdsPath
If localgroup.IsMember(currentUser.ADsPath) Then
WScript.Echo "ローカルAdministratorsに所属しています"
Else
WScript.Echo "ローカルAdministratorsに所属していません"
End If
 
'ドメイングループに属しているかの判定
Set domaingroup = GetObject("WinNT://ドメイン名/testu")
If domaingroup.IsMember(currentUser.ADsPath) Then
WScript.Echo "ドメインtestuグループに所属しています"
Else
WScript.Echo "ドメインtestuグループに所属していません"
End If

[PR]
by jehoshaphat | 2011-07-10 21:40 | VBScirpt,WSH,バッチ | Trackback | Comments(0)
(Linux)ActiveDirectoryと連携時に自動的にログインユーザ権限でWindows共有フォルダをマウントする
(Linux)ログイン時にActiveDirectoryのユーザ名・パスワードで認証できるようにするで、Linux認証をドメインユーザでできるようにしました。

今回は、この状態に加え、ログインしたドメインユーザのアクセス権で、Windowsのファイルサーバをマウントするための方法です。

通常のWindows共有フォルダのマウントなら下記のようにmountコマンドでできます。

mount -t cifs -o username=ドメインユーザ名,password=パスワード,domain=ドメイン名,iocharset=utf8 //サーバ名/共有フォルダ名 /マウント先

また、OS起動時にマウントするようにするには下記のように、/etc/fstab ファイルに追記します。

//サーバ名/共有フォルダ名 /マウント先 cifs username=ドメインユーザ名,passwordパスワード,domain=ドメイン名,iocharset=utf8,rw,file_mode=0555,dir_mode=0555 0 0

fstabファイルを使うようにすると、共有フォルダにアクセスするユーザが必ず固定になってしまいます。
ログイン後に、mount コマンドでパスワードを手入力さす方法もありますが(passwordオプションを指定しないと手入力になる)、ユーザからすると不便です。

Windowsのように、OSログイン時の権限で自動的に共有フォルダをマウントするようにしたいのが目的です。


いろいろ調査した結果、pam-mountを使うと可能なことが分かりました。

評価したLinuxは Ubuntu 系の軽量の EcoLinux 10.04 です。

既にSamba + Winbind で ActiveDirectoryと連携できていることを前提とします。

まずパッケージをインストールします。

# apt-get install libpam-mount
# apt-get install smbfs

今回入れたパッケージのバージョンは下記のとおりでした。
smbfs 2:3.4.7~dfsg-1ubuntu3.2
ibpam-mount 1.32-2


次に、pam_mountの設定ファイルにマウントの設定を記述します。
# vi /etc/security/pam_mount.conf.xml

<!-- Volume definitions --> の下に下記のようにマウントの定義を書きます。

<volume fstype="cifs"
server="dfssv01" path="nas" mountpoint="/mnt/dfs"
options="iocharset=utf8,dir_mode=0700,file_mode=0600">
<not>
<or>
<user>root</user>
<user>information</user>
</or>
</not>
</volume>


後は下記のpam設定ファイルに、pam_mountを使うよう設定を追記します。

# vi /etc/pam.d/common-auth
auth optional pam_mount.so try_first_pass
↑追記

# vi /etc/pam.d/common-session
session optional pam_mount.so
↑追記


これで再起動して、ドメインユーザでログインすると見事にそのユーザ権限でマウントされています。

今回はDFSをマウントしたんですが、Windowsサーバ側でDFSを使っているとDFSルートをマウントするだけでいいので楽ですね。


参考:
(3)ユーザーホームをマウントするように設定する(2010/9/10) 今回はなかなか情報が少なかったので、このサイトは非常に助かりました。
pam_mountを使ったログイン時における暗号化ファイルシステムの自動マウント - SourceForge.JP Magazine : オープンソースの話題満載
[PR]
by jehoshaphat | 2011-06-06 21:34 | Linux | Trackback | Comments(0)
(Linux)EcoLinux10.04でActiveDirectory連携してもドメインユーザでログインできない

(Linux)ログイン時にActiveDirectoryのユーザ名・パスワードで認証できるようにする でLinuxとActiveDirecotoryの認証統合を実現しました。
しかし、EcoLinuxではドメインユーザログインしようとしてもできません。

試しに SSH でコンソールログインしてやるとログインできます。wbinfo -u や id ドメインユーザ名 でもちゃんと情報の取得はできています。
Ubuntu10.04で連携したところ、これはうまく行きました。

ということで、EcoLinux10.04で使っているディスプレイマネージャが臭いんじゃないかなと判断しました。
(ディスプレイマネージャについては、(Linux)X WindowにおけるXディスプレイマネージャとXウィンドウマネージャを参考)

試しに、GNOMEのディスプレイマネージャGDM をインストールしたところ、ドメインユーザでログインできました。XDMやKDM,WDMでもOKでした。

で、ググってみると、http://sourceforge.net/tracker/index.php?func=detail&atid=894872&aid=3031824&group_id=180858で winbind での認証にバグがあるということでトラッカーにが追加されてます。

EcoLinux 10.04 で使っている LXDM を確認してみます。

# dpkg -l | grep lxdm
ii lxdm 0.2.0~svn2307+git20100408-0ubuntu1 LXDE display manager

バージョン 0.2.0 。まさにこのバグを踏んだようです。


現時点で LXDM のサイトを見ると新バージョン 0.3.0 が提供されています。
もしやバグが修正されているのでは?と思い最新化を試みました。

ソースから入れるのは面倒なので、Ubuntuリポジトリからのパッケージインストールを試みます。
Ubuntu のパッケージサイトを見ると11.04としてリリース予定のコードネーム natty には LXDM 0.3.0 のパッケージが公開されていました。

ということで、EcoLinuxのリポジトリを一時的に natty を参照するようにして、LXDM のアップグレードを試みました。

まず、現在のリポジトリのバックアップを取ります。

# cp /etc/apt/sources.list /etc/apt/sources.list.bk

後は、/etc/apt/sources.list内の lucid の表記を natty に置換し下記コマンドを実行します。

# apt-get update ←情報取得
# apt-get install lxdm ←lxdmのみアップグレード

依存関係のエラーが表示されたら、apt-get -f install を実行すると無事に入りました。

# dpkg -l | grep lxdm
ii lxdm 0.3.0-0ubuntu1 GUI login manager for LXDE

# mv /etc/apt/sources.list.bk /etc/apt/sources.list
↑リポジトリを元に戻す
# apt-update


これで再起動すると下記のようになりました。
e0091163_21255252.jpg


バージョンが 0.3.0 になってからユーザリストの機能が追加されたようです。
"その他"を選択し、ドメインのユーザ名とパスワードで認証すると、見事ログインできました。
どうやら0.3.0でバグは解決されたようです。

しかし、ログイン画面のユーザリストに、syslog とか usbmux とか saned とかシステムがらみのユーザが出てきてますね。
まず、このユーザリストの機能の有効無効の設定ですが、/etc/lxdm/lxdm.conf にて下記のようにするようです。(lxdm.confに関する設定が現時点はまだ出てないので実験した結果です。)

ユーザリスト機能を無効にする(従来のバージョンと同じくユーザ名手入力)
[userlist]
disable=0

ユーザリスト機能を有効にする
[userlist]
disable=1


/etc/lxdm/lxdm.conf の [userlist] 項目には white とか black とかの指定もあるんで、どのように設定するかを調べるため、LXDMソースを見て解析してみました。
lxdm.c の GKeyFile *lxdm_user_list(void) 関数でユーザリストに表示するしないの処理をしてるっぽいです。

white が許可リストのようで、black が拒否リストのようです。
基本的に getpwent() 関数で /etc/passwd ファイルからユーザ一覧を取得し、ホームのパスが /home/ ならレコードの先頭から3件を表示するようです。
で、white , black のはスペースでユーザ名を区切って指定するようですね。
whiteリストに載せているユーザは、ホームパスが /home/ じゃなくても表示されるようになるようです。

syslog , usbmux , saned はホームディレクトリが /home/ になってしまっているのでユーザリストに表示されたんですね。
なので、black リストで明示的に表示しないようしてやる必要があります。

下記はsyslog , usbmux , saned のユーザリスト表示を拒否し、rootを表示するようにした時の設定です。

[userlist]
disable=0
black=syslog usbmux saned
white=root


SambaとwinbindでActiveDirectoryと連携している場合はActiveDirectoryのユーザ情報も取得してくれるようです。
ただし、新規に作成したユーザ順です。。
GNOMEで使ってるGDMのように、過去のログイン履歴からユーザリストを表示してくれるような機能だったらよかったのですが、作成順となっては余り意味が無いので結局、ユーザリスト機能を無効にして使うこととしました。

この問題解決するのにかなりの時間費やしちゃいましたよ。。。


参考:
リポジトリの追加と鍵の追加
[PR]
by jehoshaphat | 2011-06-06 21:26 | 未分類 | Trackback | Comments(0)