前回はadsysを使ってActive Directory
Ubuntu Proサブスクリプションを必要とするポリシーには、
なお、現在、adsysで使える全ポリシーの一覧と各ポリシーの詳細はこちらから確認できます。
Ubuntu Proサブスクリプションの取得と適用
Ubuntu Proについて簡潔に説明すると、Ubuntuを支援しているCanonical社が提供する有償サポートサービスのことです。詳細は本連載の第820回をご覧ください。
ただし、個人利用などであればUbuntu Oneアカウントを取得することで、誰でも5台分までのサブスクリプションを無償で入手・
そこでまずは、個人向けのサブスクリプションを入手します。Buy Ubuntu Proというページを開くと、"Who will be using this subscription?"と確認されるので、"Myself"を選びます。その状態で"Register"を押すと、Ubuntu Oneアカウントのログイン画面に移ります。アカウントを持っていればログインし、持っていなければここで作成してください。
ログインしてサブスクリプション画面に遷移すると、"Free Personal Token"と表示されているはずです。その下の"Token"とあるのはUbuntuマシンにUbuntu Proサブスクリプションを適用するためのトークンです。
このTokenを登録のためのコマンドも表示されています。マシンをサブスクリプションにアタッチする際はそのコマンドをローカル管理者アカウントで実行します。
$ sudo pro attach <トークン>
コマンド実行後に"This machine is now attached to 'Ubuntu Pro - free personal subscription'"と表示されたら、そのマシンはUbuntu Proサブスクリプションにアタッチされています。
Ubuntuマシンのローカル管理者権限の設定
第837回の最後で確認したように、ドメイン管理者であるAdministratorユーザーであってもUbuntuマシンのローカル管理者権限がありませんでした。
administrator@example.com@Ubuntu-2404:~$ sudo id [sudo] administrator@example.com のパスワード: administrator@example.com は sudoers ファイルにありません。
GPOのコンピューターポリシーを使うことで、どのADユーザーにローカル管理者権限を与えるかを設定できます。
前回までの操作で対象となるUbuntuマシンはadsysTestComputerOU
に所属していますので、このOUにリンクされたadsysTestComputerGPO
のポリシーで設定することにします。また、ローカル管理者権限を与えるのはADのAdministratorユーザーも所属するドメイン管理者グループDomain Admins
ADグループ)
実際の操作は前回同様、GPOの設定はドメインコントローラー側でおこなうため、スタートメニューからadsysTestComputerGPO
を右クリックして
その後、左側のツリーペインから
デフォルトではuser@domain
とした場合はそのユーザーに、%group@domain
とした場合はそのグループのメンバーにローカル管理者権限が与えられます。複数のユーザー・
今回はDomain Admins
ADグループに権限を与えるので%domain admins@example.
と記載しておきます。
ポリシーの設定が終わったら、Ubuntuマシンに移り、ローカル管理者権限でGPOを適用します。
$ sudo adsysctl update --all
これによって、Administratorユーザーでもsudo
を使ってroot権限を使えるようになります。
administrator@example.com@Ubuntu-2404:~$ sudo id [sudo] administrator@example.com のパスワード: uid=0(root) gid=0(root) groups=0(root)
ちなみに、これはsudoersファイルにより実現されています。/etc/
に次のような設定が書き込まれています。
$ sudo cat /etc/sudoers.d/99-adsys-privilege-enforcement # This file is managed by adsys. # Do not edit this file manually. # Any changes will be overwritten. "%domain admins@example.com" ALL=(ALL:ALL) ALL
また、同じ/etc/
で権限が調整されます。
$ sudo cat /etc/sudoers.d/99-adsys-privilege-enforcement # This file is managed by adsys. # Do not edit this file manually. # Any changes will be overwritten. %admin ALL=(ALL) !ALL %sudo ALL=(ALL:ALL) !ALL "%domain admins@example.com" ALL=(ALL:ALL) ALL
"Allow local administrators"ポリシーを
プロキシ設定
グループ ポリシー管理エディターの
この設定を使うには、Ubuntuマシンにubuntu-proxy-managerがインストールされている必要があります。
$ sudo apt install -y ubuntu-proxy-manager
インストールが終われば、あとはポリシーを設定するだけです。今回はHTTP Proxyにprotocol://
の形式で設定を入れますusername:password@
の部分は省略できます)。
Ubuntuマシン側でGPOを即時適用すると、指定した内容でプロキシが設定されます。
# 環境変数 $ cat /etc/environment.d/99ubuntu-proxy-manager.conf ### This file was generated by ubuntu-proxy-manager - manual changes will be overwritten HTTP_PROXY="http://proxy.example.com:3128" http_proxy="http://proxy.example.com:3128"
# APTの設定 $ cat /etc/apt/apt.conf.d/99ubuntu-proxy-manager ### This file was generated by ubuntu-proxy-manager - manual changes will be overwritten Acquire::http::Proxy "http://proxy.example.com:3128";
GPOによるスクリプト実行のための準備:adwatchdのインストール
adsysではGPOで設定することで、Ubuntuマシンの起動時やUbuntuマシンにユーザーがログインするときにスクリプトを実行できます。次はこれを紹介したいのですが、その前にスクリプトを実行するなら、ドメインコントローラーにセットアップしておいたほうがいいadwatchdというツールがあります。
ここでは、このadwatchdがなぜ必要で、どういう動きをするのかを説明し、セットアップの流れを紹介します。
まず、Ubuntuマシンにてグループポリシーで実行するスクリプトは、SYSVOLフォルダ直下に<ディストリビューション名>\scripts
というパスのフォルダに配置します。よって今回の場合、パスは\\example.
です。このフォルダは存在しないため、手動で作成します。後で示すようにグループポリシーを使って実行するスクリプトはこの\\example.
からの相対パスで指定します。
また、\\example.
というファイルの配置も必要です。このGPT.
ファイルに含まれる情報にはVersion
があります。その番号が上がると、GPT.
自体はadsysに限らず、グループポリシー一般で使用されるものです。
ところが、手動作成した\\example.
フォルダはドメインコントローラーの関知するところではなく、スクリプトの更新などをおこなってもGPT.
のVersion
も自動では上がりません。そのため、scripts
フォルダ以下のスクリプトを追加・Version
の値を何らかの方法
この作業を自動化してくれるのがadwatchdです。adwatchdはWindowsサービスとして稼働し、指定されたフォルダを監視し、変更が加えられたらGPT.
のVersion
の値をインクリメントしてくれます。adwatchdの便利さが伝わってであろうところで、実際に展開の流れに移ります。
adwatchdの入手・
- Ubuntuマシンで
adsys-windows
パッケージをインストールすると配置される/usr/
をドメインコントローラーの適切な場所share/ adsys/ windows/ adwatchd. exe (例: C:\Program Files\Ubuntu\adsys\
)に配置する。 - GitHubから最新のインストーラー(
adwatchd_
)を入手し、ドメインコントローラーにインストールする。setup. exe
今回は第836回でadsys-windows
パッケージをインストールしたので、1で進めます。Ubuntuマシンから実行ファイルをコピーし、C:\Program Files\Ubuntu\adsys\adwatchd.
というパスで実行ファイルを配置します。
adwatchdの設定を始める前にUbuntuマシン向けのアセットフォルダ\\example.
を作成し、その直下にscript
フォルダを作成します。
フォルダを作成できたら、管理者権限でコマンドプロンプトcmd.
)adwatchd.
を配置したフォルダに移動します。今回はC:\Program Files\Ubuntu\adsys\
に配置したのでここに移動します。移動したら、adwatchd.
を実行します[3]。
設定入力画面が表示されますので、情報を入れます。項目の移動には矢印キーやTabキーが使えます。
Config file
欄は空欄にすると、デフォルトパスで設定ファイルが作成されます。特にこだわりはないので今回は空欄のままにします。Directories
欄はadwatchdが監視するフォルダパスを指定します。今回は先ほど作成した\\example.
を指定します。com\SYSVOL\example. com\Ubuntu\
最後に[ Install ]
にフォーカスし、Enterを押します。Service adwatchd was successfully installed and is now running.
と表示されたら、インストールは成功です。
ちなみに今回設定した内容は、"C:\Program Files\Ubuntu\adsys\adwatchd.
PS> Get-Content "C:\Program Files\Ubuntu\adsys\adwatchd.yaml" verbose: 0 dirs: - \\example.com\SYSVOL\example.com\Ubuntu
今回は対話的にこの設定ファイルを作りました。通常はこの手順が推奨されている手順ですが、生成された設定ファイルを使ってadwatchdを設定することも可能です。
PS> &"C:\Program Files\Ubuntu\adsys\adwatchd.exe" service install -c "C:\Program Files\Ubuntu\adsys\adwatchd.yaml"
複数のドメインコントローラーにadwatchdをセットアップする場合には、このように設定ファイルをコピーしてデプロイするといいでしょう[4]。
GPOによるスクリプト実行(ログインスクリプト)
adwatchdがデプロイできたので、スクリプトを実行するようにGPOを設定します。スクリプトもコンピューターポリシーで実行できるのですが、実例がコンピューターポリシーばかりになるので、ユーザーポリシーとして実行するようにしてみます。
ユーザーポリシーとして設定するため、ADユーザーとして作成したubuntuユーザーが所属するadsysTestUserOU
にリンクされたadsysTestUserGPO
を操作します。設定するポリシーは
スクリプトは次の内容のものを\\example.
に配置します。
$ cat hello_world.sh #!/bin/bash echo "I'm $(whoami)! Hello, world! $(date)" >> $HOME/login_script.log
内容はご覧のとおり、ユーザー名と日時を含むメッセージをユーザーのホームディレクトリのファイルに書き出すというものです。
このスクリプトを配置すると、adwatchdが自動でGPT.
を生成します[5]。
PS> Get-Content \\example.com\SYSVOL\example.com\Ubuntu\GPT.INI [General] Version=1
続いて、ポリシーを設定します。入力する値は\\example.
からのスクリプトへの相対パスなのでhello_
です。
設定が終わったらログイン画面からubuntuユーザーでログインします[6]。
ubuntu@example.com@Ubuntu-2404:~$ cat login_script.log I'm ubuntu@example.com! Hello, world! 2024年 10月 30日 水曜日 12:37:03 JST
簡単に仕組みにも触れておくと、adsys-user-scripts.
というsystemdのユーザーサービスによって、ログイン時にスクリプトが実行されるようになっています。
ubuntu@example.com@Ubuntu-2404:~$ systemctl --user cat adsys-user-scripts.service # /usr/lib/systemd/user/adsys-user-scripts.service [Unit] Description=ADSys user logon and logoff scripts execution Before=shutdown.target Conflicts=shutdown.target ConditionPathExists=/run/adsys/users/%U/scripts/.ready [Service] Type=notify # needed for systemd-notify from non root user. Only open it to elements of the cgroup. NotifyAccess=all RemainAfterExit=yes ExecStart=/sbin/adsysd runscripts --allow-order-missing /run/adsys/users/%U/scripts/logon ExecStop=/sbin/adsysd runscripts --allow-order-missing /run/adsys/users/%U/scripts/logoff [Install] WantedBy=default.target ubuntu@example.com@Ubuntu-2404:~$ cat /run/adsys/users/$(id -u)/scripts/logon scripts/hello_world.sh ubuntu@example.com@Ubuntu-2404:~$ cat /run/adsys/users/$(id -u)/scripts/scripts/hello_world.sh #!/bin/bash echo "I'm $(whoami)! Hello, world! $(date)" >> $HOME/login_script.log
全4回にわたりadsysについて解説しました。
個人利用のUbuntuマシンには縁遠いものですが、会社などの組織でPCを使用していく場合、程度の差こそあれ、システム管理者が組織的にPCを管理する必要が出てきます。adsys
正直なところ、使ってみるとまだまだ改善・