Windows10 でログイン禁止ユーザを作りたい
PC の画面から「サインイン」ができないローカルアカウントを作成します。
リモートログインも拒否します。
できるのはファイル共有だけです。
Windows Server 2019 でも同様に設定できます。
0. 設定要件
共有 PC (ここにローカルアカウントを作成する)
項目 内容 備考 IP アドレス 192.168.100.10 - 基本ソフト Windows10 Pro 64bit 22H2 本稿記述時の最新版 Windows Server 2019 Standard 1809 ホスト名 Windows-PC - 共有ディレクトリ C:\ShareDir - ユーザ名 LoginDenied ログイン禁止ユーザのアカウント パスワード password123
クライアント PC-1 (接続テスト用)
項目 内容 備考 IP アドレス 192.168.100.20 - 基本ソフト Windows10 Pro 64bit 22H2 本稿記述時の最新版
クライアント PC-2 (接続テスト用)
項目 内容 備考 IP アドレス 192.168.100.21 - OS AlmaLinux release 9.4 (Seafoam Ocelot) 本稿記述時の最新版
1. 普通にローカルユーザ「LoginDenied」を作成する。(パスワードも設定)
管理者の PoorShell からユーザ LoginDenied を作成する。
共有 PC (192.168.100.10) で操作する。
CLI なら、逐一の「Microsoft アカウントが~」「Microsoft アカウントを~」「Microsoft アカウントの~」に煩わされずに済む。
>_ 管理者: Windows PowerShell − □ ×
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 PS C:\> # ユーザ LoginDenied を作成する PS C:\> Net user /add LoginDenied password123 コマンドは正常に終了しました。 PS C:\> # 作成したユーザが属しているグループを確認する PS C:\> Get-LocalGroup | foreach { echo "GroupName: $_" ; Get-LocalGroupMember $_ | Select-Object Name,PrincipalSource | Select-String "PrincipalSource=Local" } GroupName: Access Control Assistance Operators GroupName: Administrators @{Name=WINDOWS-PC\Administrator; PrincipalSource=Local} @{Name=WINDOWS-PC\PCの管理者; PrincipalSource=Local} GroupName: Backup Operators GroupName: Cryptographic Operators … 省略 … GroupName: System Managed Accounts Group @{Name=WINDOWS-PC\DefaultAccount; PrincipalSource=Local} GroupName: Users @{Name=WINDOWS-PC\LoginDenied; PrincipalSource=Local} @{Name=WINDOWS-PC\PCの管理者; PrincipalSource=Local} PS C:\>
どうしても GUI っていう人はこれ: スタート > 設定 > アカウント > 家族とその他のユーザー > その他のユーザーをこの PC に追加
アカウントのサインイン有効を確認
一度「サインアウト」を実施し、上記で作成したユーザ LoginDenied でローカルサインインが可能なことを確認する。
サインインは実施しない。サインインするとホームディレクトリが作成されてしまう。
2. グループポリシーエディタでユーザのポリシーを確認・変更する。
共有 PC (192.168.100.10) で操作する。
>_ 管理者: Windows PowerShell − □ ×
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 PS C:\> # グループポリシーエディタを起動する PS C:\> GpEdit PS C:\>
グループポリシーエディタ画面の下記ツリーをたどり、条件の確認と追加をする。
■ ローカル コンピューター ポリシー• ネットワークアクセスの許可グループを確認
∨ ■ コンピューターの構成
∨ ■ Windows の設定
∨ ■ セキュリティの設定
∨ ■ ローカル ポリシー
> ■ ユーザー権利の割り当て
• ネットワーク経由でのアクセス -- 確認
• ネットワーク経由のアクセスを拒否 -- 確認
• リモート デスクトップ サービスを使ったログオンを拒否 -- リストに追加
• ネットワークアクセスの禁止グループを確認ユーザ LoginDenied の属すグループ Users が
→
このリストに存在していることを確認する。
(Users: 上記 2 で確認したグループ名)
• リモートログオンの拒否リストにユーザを追加する。ユーザ LoginDenied の属すグループ Users が
→
このリストに存在していないことを確認する。
(Users: 上記 2 で確認したグループ名)
ここでポリシーでリモートログオンを拒否し、
「リモート デスクトップ ユーザー」のリスト*1
にユーザを追加してもログオンできなくする。
*1「スタート > 設定 > システム > リモートデスクトップ
> この PC にリモートでアクセスできるユーザーの選択」
で追加するリストのこと。
(通常はこのメニューからリモートデスクトップをユーザに許可する)
↓
ボタンをクリックする。
↓
「選択するオブジェクト名を入力してください (E):」に
ユーザ名 LoginDenied を記入して ボタンをクリックする。
↓
「リモート デスクトップ サービスを使ったログオンを拒否」の
リストに「WINDOWS-PC\LoginDenied」があることを確認して
ボタンをクリックする。
3. ログインリストからユーザを除外する。
共有 PC (192.168.100.10) で操作する。
>_ 管理者: Windows PowerShell − □ ×
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 PS C:\> # コンピュータの管理を起動する PS C:\> CompMgmt PS C:\>
コンピュータの管理画面の下記ツリーをたどり、グループ「Users」のリストから LoginDenied を除外する。
■ コンピューターの管理 (ローカル)• Users グループからユーザ LoginDenied を除外する。
∨ ■システムツール
∨ ■ローカル ユーザーとグループ
■グループ
• Users
→ 「所属するメンバー(M):」から
LoginDenied を選択し ボタンをクリックする。
その後 ボタンをクリックする。
4. ユーザの状態を確認
共有 PC (192.168.100.10) で操作する。
>_ 管理者: Windows PowerShell − □ ×
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 PS C:\> # ユーザアカウント一覧を表示する PS C:\> Get-WmiObject Win32_UserAccount | Select-Object Name Name ---- Administrator DefaultAccount Guest LoginDenied PCの管理者 WDAGUtilityAccount PS C:\>
アカウントのサインイン無効を確認
一度「サインアウト」を実施し、上記で作成したユーザ LoginDenied でサインイン出来ないことを確認する。
左下に表示されていたアカウントリストで
ユーザ LoginDenied を選択することができなくなった。
5. 共有ディレクトリを作成
共有ディレクトリはドライブの直下に作成する。
ユーザーディレクトリやシステムディレクトリに作成すると、ツリー権限の付与が複雑になるのでこれを避ける。
共有 PC (192.168.100.10) で操作する。
>_ 管理者: Windows PowerShell − □ ×
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 PS C:\> # 共有用ディレクトリを作成する PS C:\> MkDir C:\ShareDir ディレクトリ: C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2024/05/29 10:35 ShareDir
PS C:\> # ディレクトリを共有する PS C:\> Net Share ShareDir=C:\ShareDir ShareDir が共有されました。 PS C:\> # 共有の確認 (1) PS C:\> Net Share ShareDir 共有名 ShareDir パス C:\ShareDir 注釈 最大ユーザー数 制限なし ユーザー キャッシュ ドキュメントの手動キャッシュ アクセス許可 Everyone, READ ← 読み取り専用 コマンドは正常に終了しました。 PS C:\> Net View \\localhost \\localhost の共有リソース 共有名 タイプ 使用 コメント ------------------------------------------------------------------------------- ShareDir Disk コマンドは正常に終了しました。
PS C:\> # 共有ディレクトリに権限を付与する (Everyone にフルアクセスを許可) PS C:\> Grant-SmbShareAccess -Name ShareDir -AccountName Everyone -AccessRight Full -Force Name ScopeName AccountName AccessControlType AccessRight ---- --------- ----------- ----------------- ----------- ShareDir * Everyone Allow Full PS C:\> # 共有の確認 (2) PS C:\> Net Share ShareDir 共有名 ShareDir パス C:\ShareDir 注釈 最大ユーザー数 制限なし ユーザー キャッシュ ドキュメントの手動キャッシュ アクセス許可 Everyone, FULL ← 読み書き・変更のフルアクセス コマンドは正常に終了しました。
PS C:\> # テスト用ファイルを作成する PS C:\> New-Item C:\ShareDir\EmptyFile.txt ディレクトリ: C:\ShareDir Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2024/05/29 15:50 0 EmptyFile.txt PS C:\>
別の PC から共有ディレクトリをアクセス
クライアント PC-1 (192.168.100.20) から操作する。
>_ Windows PowerShell − □ ×
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 PS C:\> # 共有ディレクトリに対する接続ユーザを指定する PS C:\> Net use \\192.168.100.10\ShareDir password123 /user:LoginDenied コマンドは正常に終了しました。 PS C:\> # 共有ディレクトリのファイルを確認する PS C:\> Dir \\192.168.100.10\ShareDir ディレクトリ: \\192.168.100.10\ShareDir Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2024/05/29 15:50 0 EmptyFile.txt PS C:\>
共有 PC で接続状況を確認
共有 PC (192.168.100.10) で操作する。
192.168.100.20 からユーザ名 LoginDenied でアクセスされていることが分かる。
>_ 管理者: Windows PowerShell − □ ×
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 PS C:\> # 接続状況を確認する PS C:\> Net Session コンピューター ユーザー名 クライアント オープン アイドル時間 ------------------------------------------------------------------------------- \\192.168.100.20 LoginDenied 0 00:01:08 コマンドは正常に終了しました。 PS C:\>
6. Linux から Windows のファイルを操作
クライアント PC-2 (192.168.100.21) から操作する。
$ smbclient --user=LoginDenied "//192.168.100.10/ShareDir" --command="dir" password123
$ smbclient --user=LoginDenied "//192.168.100.10/ShareDir" --command="get EmptyFile.txt /tmp/$$" password123
. D 0 Wed May 29 15:50:19 2024 .. D 0 Wed May 29 15:50:19 2024 EmptyFile.txt A 0 Wed May 29 15:50:19 2024 10198351 blocks of size 4096. 2752996 blocks available
getting file \EmptyFile.txt of size 0 as /tmp/3830 (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
一時ユーザを作成するには、ユーザのホームディレクトリ (C:\Users\User) を削除するだけでも良い。(上記手順 2~4 を実施しない)
条件は以下。
手順は以下。
- ファイル共有可能。
- サインイン可能。
- アプリケーションの操作が可能。
- サインイン中に作成したファイルは、サインアウト時に自動削除される。
- 7-1. 普通にユーザを作成する。
- 7-2. 作成したユーザで普通にサインインする。(このとき、ユーザのホームディレクトリが作成される)
- 7-3. 普通にサインアウトする。
- 7-4. 上記 7-2 で自動的に作成されたホームディレクトリを削除する。
- 7-5. 上記 7-1 で作成したユーザで普通にサインインする。
- 7-6. 適当にネットサーフィン (死語) とかをする。
- 7-7. 普通にサインアウトする。(このとき、上記 7-6 で作成されたファイルは自動的に削除される)