Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
# FTP用のグループ [FTPGroup] 追加
PS C:\Users\Administrator> New-LocalGroup -Name "FTPGroup"
Name Description
---- -----------
FTPGroup
# FTPを許可する任意のローカルユーザーを [FTPGroup] に追加
# 下例は ローカルユーザー [Serverworld] を [FTPGroup] に追加
PS C:\Users\Administrator> Add-LocalGroupMember -Group "FTPGroup" -Member "Serverworld"
# 確認
PS C:\Users\Administrator> Get-LocalGroupMember -Name "FTPGroup"
ObjectClass Name PrincipalSource
----------- ---- ---------------
User RX-7\Serverworld Local
# FTPサイトを追加
# -Name [管理上の任意の名前]
# -IPAddress [リスンするIPアドレス] (下例は 0.0.0.0)
# -Port [リスンするポート]
PS C:\Users\Administrator> New-WebFtpSite -Name "FTPSite01" -IPAddress "*" -Port 21
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
FTPSite01 2 Started ftp *:21:
# 追加した FTPサイトで使用する物理フォルダーを設定
# 下例は FTP インストール時に作成されている [C:\inetpub\ftproot] 配下に [FTPSite01] を新規作成して設定
PS C:\Users\Administrator> mkdir 'C:\inetpub\ftproot\FTPSite01'
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name physicalPath -Value 'C:\inetpub\ftproot\FTPSite01'
# SSL/TLS 接続が必須に設定
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.security.ssl.controlChannelPolicy -Value "SslRequire"
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.security.ssl.dataChannelPolicy -Value "SslRequire"
# 証明書の Thumbprint 確認
PS C:\Users\Administrator> Get-ChildItem Cert:\LocalMachine\My
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
Thumbprint Subject
---------- -------
560F4FE5B89D70A8CAC5F65B1869C4F8A9274C15 CN=rx-8.srv.world
# 証明書ストアと Thumbprint を登録
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.security.ssl.serverCertStoreName -Value "My"
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.security.ssl.serverCertHash -Value "560F4FE5B89D70A8CAC5F65B1869C4F8A9274C15"
# 基本認証を設定
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.security.authentication.basicAuthentication.enabled -Value $true
# ローカルグループ [FTPGroup] の読み取り/書き込み許可を設定
PS C:\Users\Administrator> Add-WebConfiguration "/system.ftpServer/security/authorization" -Location FTPSite01 -PSPath IIS:\ -Value @{accessType="Allow";roles="FTPGroup";permissions="Read,Write"}
# 外部 IPアドレスを設定 (クライアントから接続可能な IPアドレス)
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.firewallSupport.externalIp4Address -Value "10.0.0.101"
# FTPサイトの物理パスに設定したフォルダーに、FTPサイトでアクセス許可したグループのアクセス許可を設定
# 下例は フルコントロール + 継承有り
PS C:\Users\Administrator> icacls "C:\inetpub\ftproot\FTPSite01" /grant "FTPGroup:(OI)(CI)(F)"
processed file: C:\inetpub\ftproot\FTPSite01
Successfully processed 1 files; Failed processing 0 files
# FTPサイトを再起動
PS C:\Users\Administrator> Restart-WebItem -PSPath 'IIS:\Sites\FTPSite01'
|