Windows10 でログイン禁止ユーザの作成
〜 ファイル共有だけのユーザを作る 〜
2024-06-06 作成 福島
TOP > tips > winlogindeny
[ TIPS | TOYS | OTAKU | LINK | MOVIE | CGI | AvTitle | ConfuTerm | HIST | AnSt | Asob ]

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-
OSAlmaLinux release 9.4 (Seafoam Ocelot)本稿記述時の最新版


1. 普通にローカルユーザ「LoginDenied」を作成する。(パスワードも設定)

管理者の PoorShell からユーザ LoginDenied を作成する。
共有 PC (192.168.100.10) で操作する。
 >_ 管理者: 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:\> 

CLI なら、逐一の「Microsoft アカウントが~」「Microsoft アカウントを~」「Microsoft アカウントの~」に煩わされずに済む。
どうしても GUI っていう人はこれ: スタート > 設定 > アカウント > 家族とその他のユーザー > その他のユーザーをこの PC に追加

アカウントのサインイン有効を確認
一度「サインアウト」を実施し、上記で作成したユーザ LoginDenied でローカルサインインが可能なことを確認する。
サインインは実施しない。サインインするとホームディレクトリが作成されてしまう。
Login screen


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 の設定 
    セキュリティの設定 
     ローカル ポリシー 
    >  ユーザー権利の割り当て 
     • ネットワーク経由でのアクセス    -- 確認
     • ネットワーク経由のアクセスを拒否  -- 確認
     • リモート デスクトップ サービスを使ったログオンを拒否 -- リストに追加
• ネットワークアクセスの許可グループを確認
Gedit window Enabled group
ユーザ LoginDenied の属すグループ Users が
このリストに存在していることを確認する。
(Users: 上記 2 で確認したグループ名)

• ネットワークアクセスの禁止グループを確認
Gedit window Denied group
ユーザ LoginDenied の属すグループ Users が
このリストに存在していないことを確認する。
(Users: 上記 2 で確認したグループ名)

• リモートログオンの拒否リストにユーザを追加する。
Gedit window ここでポリシーでリモートログオンを拒否し、
「リモート デスクトップ ユーザー」のリスト*1
にユーザを追加してもログオンできなくする。

*1「スタート > 設定 > システム > リモートデスクトップ
> この PC にリモートでアクセスできるユーザーの選択
で追加するリストのこと。

(通常はこのメニューからリモートデスクトップをユーザに許可する)

 ↓
RDP denied group ボタンをクリックする。
 ↓
Add login-deny 「選択するオブジェクト名を入力してください (E):」に
ユーザ名 LoginDenied を記入して ボタンをクリックする。
 ↓
Confirm login-deny 「リモート デスクトップ サービスを使ったログオンを拒否」の
リストに「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 
• Users グループからユーザ LoginDenied を除外する。
CompMgmt window Delete allow-user 「所属するメンバー(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 でサインイン出来ないことを確認する。
Login window 左下に表示されていたアカウントリストで
ユーザ 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) で操作する。
 >_ 管理者: 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:\> 

192.168.100.20 からユーザ名 LoginDenied でアクセスされていることが分かる。


6. Linux から Windows のファイルを操作

クライアント PC-2 (192.168.100.21) から操作する。

$ smbclient --user=LoginDenied "//192.168.100.10/ShareDir" --command="dir" 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
$ smbclient --user=LoginDenied "//192.168.100.10/ShareDir" --command="get EmptyFile.txt /tmp/$$" password123
getting file \EmptyFile.txt of size 0 as /tmp/3830 (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)


7. おまけ
一時ユーザを作成するには、ユーザのホームディレクトリ (C:\Users\User) を削除するだけでも良い。(上記手順 2~4 を実施しない)

条件は以下。
  1. ファイル共有可能。
  2. サインイン可能。
  3. アプリケーションの操作が可能。
  4. サインイン中に作成したファイルは、サインアウト時に自動削除される。
手順は以下。
  1. 7-1. 普通にユーザを作成する。
  2. 7-2. 作成したユーザで普通にサインインする。(このとき、ユーザのホームディレクトリが作成される)
  3. 7-3. 普通にサインアウトする。
  4. 7-4. 上記 7-2 で自動的に作成されたホームディレクトリを削除する。

  5. 7-5. 上記 7-1 で作成したユーザで普通にサインインする。
  6. 7-6. 適当にネットサーフィン (死語) とかをする。
  7. 7-7. 普通にサインアウトする。(このとき、上記 7-6 で作成されたファイルは自動的に削除される)