You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell在FTP服务器设置已上传文件的权限?

在PowerShell FTP上传后设置文件权限(无需第三方库)

可以直接在现有脚本基础上扩展,无需依赖第三方库,利用.NET的FtpWebRequest发送FTP原生的SITE CHMOD命令来实现权限设置,大部分类Unix系FTP服务器(如vsftpd、ProFTPD)都支持该命令。

整合后的完整脚本

# 上传文件部分(原脚本保留)
$ftpUpload = [System.Net.FtpWebRequest]::Create("ftp://foo/test.pdf")
$ftpUpload = [System.Net.FtpWebRequest]$ftpUpload
$ftpUpload.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$ftpUpload.Credentials = New-Object System.Net.NetworkCredential("anonymous","anonymous@foo")
$ftpUpload.UseBinary = $true
$ftpUpload.UsePassive = $true
$content = [System.IO.File]::ReadAllBytes("C:\Temp\test.pdf")
$ftpUpload.ContentLength = $content.Length
$rs = $ftpUpload.GetRequestStream()
$rs.Write($content, 0, $content.Length)
$rs.Close()
$rs.Dispose()

# 新增:设置文件权限(chmod 666)
$ftpChmod = [System.Net.FtpWebRequest]::Create("ftp://foo/test.pdf")
$ftpChmod = [System.Net.FtpWebRequest]$ftpChmod
$ftpChmod.Method = [System.Net.WebRequestMethods+Ftp]::ExecuteCommand
$ftpChmod.Credentials = New-Object System.Net.NetworkCredential("anonymous","anonymous@foo")
# 指定SITE CHMOD命令,格式为"SITE CHMOD 权限值 文件名"
$ftpChmod.Command = "SITE CHMOD 666 test.pdf"

# 发送命令并验证执行结果
try {
    $response = $ftpChmod.GetResponse()
    Write-Host "权限设置成功,服务器响应:$($response.StatusDescription)"
    $response.Close()
}
catch {
    Write-Host "权限设置失败:$($_.Exception.Message)"
}

关键说明

  • 必须在文件上传完成后执行权限设置命令,确保文件已存在于FTP服务器
  • 部分FTP服务器可能无需SITE前缀,直接支持CHMOD 666 test.pdf,如果上述脚本报错,可尝试修改Command值
  • 权限值需根据实际需求调整(如644、755等)
  • 若使用Windows系FTP服务器,通常不支持CHMOD命令,需改用服务器端的权限配置方式

内容的提问来源于stack exchange,提问作者Jan Solo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:52:31