同一用户同域访问时浏览器会以队列形式来访问access.log

在进行数据采集测试时,遇到浏览器响应延迟问题。通过分析Apache access.log,发现浏览器存在请求限制。重新启动浏览器后问题解决,强调定期检查日志的重要性。
今天做采集测试时发现个问题。
就是采集时,由于数据较多所以请求的响应时间会很长,如打开采集a.com/caiji_a
这时我再打开另一个请求a.com/caiji_b
结果发现:第二次请求要等第一次请求结束后才会被发送
查看apache的access.log日志会发现确实没有收到请求,所以认定是被浏览器限制了。

再新开浏览器,发送b请求,是可以被正常响应的。
再由些断定是浏览器限制问题。

ps:查看apache日志access.log是个好习惯!!
<think> 我们正在解决用户在连接Windows共享打印机后,打印测试页出现的错误:`SESSION SETUP FAILED: NT_STATUS_ACCESS_DENIED`。根据提供的引用[1]和引用[2],这个错误通常与权限认证失败有关。引用[1]中提到访问共享目录出现`NT_STATUS_ACCESS_DENIED`,引用[2]则直接提到`NT_STATUS_LOGON_FAILURE`(登录失败)。因此,问题核心在于Linux系统在访问Windows共享打印机无法通过身份验证。 结合之前回答中关于连接Windows共享打印机的步骤,我们分析可能的原因: 1. Windows共享打印机的权限设置问题(例如:未授权给当前尝试登录的账户) 2. Linux端提供的凭据(用户名和密码)不正确 3. Windows系统的安全策略(如:禁用空密码、禁用Guest账户、密码保护共享等) 4. 工作组或域名设置不一致 根据引用[3]的内容,虽然它谈论的是自动化测试数据,但我们可以忽略它,因为它与当前问题无关。 因此,解决方案应围绕验证和调整Windows和Linux两端的认证设置。 具体步骤: 1. **检查Windows共享权限**: - 确保在Windows上已经为打印机设置了共享,并且共享权限中允许了Linux端要使用的用户(或者Everyone)。 - 在Windows上,打开“打印机属性”->“共享”选项卡,确认共享名,然后点击“安全”选项卡,确保用于登录的账户有打印权限。 2. **检查Windows账户和密码**: - 在Windows上,确保用于共享打印机的账户(如Administrator或专门创建的账户)是启用的,并且密码正确。 - 如果Windows账户没有设置密码,则要在Windows上修改组策略,允许空密码访问(不推荐)或为账户设置密码。 3. **检查Windows的网络和共享中心设置**: - 在“高级共享设置”中,检查是否启用了“密码保护共享”。如果启用了,那么必须提供正确的用户名和密码;如果禁用了,则允许Guest或Everyone访问。 - 如果希望使用Guest账户访问,确保Guest账户在Windows上是启用的(在“计算机管理”->“本地用户和组”->“用户”中,确保Guest账户已启用且没有设置密码)。 4. **在Linux端重新添加打印机**: - 在添加打印机,确保输入的用户名和密码正确。注意:用户名可以是`计算机名\用户名`或`工作组\用户名`的形式(如果计算机不在中,通常工作组可以省略,或者用`WORKGROUP`)。 - 如果之前添加打印机使用了错误的凭据,要删除打印机后重新添加。 5. **使用命令行测试Samba连接**: - 在Linux终端中,使用`smbclient`命令测试连接: ```bash smbclient -L //Windows_IP -U Windows用户名 ``` 输入密码后,如果连接成功,会列出共享资源。如果出现`NT_STATUS_ACCESS_DENIED`或`NT_STATUS_LOGON_FAILURE`,则检查凭据和Windows设置。 6. **调整CUPS打印机设置**: - 如果已经添加了打印机但出现该错误,可以尝试修改打印机的URI,将用户名和密码包含在URI中: ```bash smb://用户名:密码@Windows_IP/共享打印机名 ``` 但是,在图形界面中通常无法这样设置,因此可能要通过命令行修改: ```bash sudo lpadmin -p 打印机名 -v "smb://用户名:密码@Windows_IP/共享打印机名" -E ``` 7. **检查防火墙设置**: - 确保Windows防火墙允许文件和打印机共享(通常允许端口445、139、137、138的TCP/UDP通信)。 8. **检查Samba客户端配置**: - 在Linux中,可以创建或修改`/etc/samba/smb.conf`文件,添加以下内容(如果不存在): ```ini [global] client lanman auth = yes client ntlmv2 auth = yes workgroup = WORKGROUP # 与Windows相的工作组 security = user ``` 然后重启服务`sudo service smbd restart`(如果有的话)。但请注意,通常CUPS使用自己的机制连接,但有全局Samba配置会影响。 9. **启用Windows的SMBv1(不推荐,仅当必须)**: - 较旧的打印机可能要SMBv1协议,但该协议不安全。在Windows的“启用或关闭Windows功能”中,可以启用“SMB 1.0/CIFS文件共享支持”。,在Linux端可能要安装`cifs-utils`包,并在连接指定使用SMBv1。 注意:由于安全原因,启用SMBv1不被推荐,仅在其他方法都失败尝试。 10. **查看日志**: - 在Windows上,打开事件查看器(Event Viewer),查看Windows日志->系统,筛选来源为“SMB Server”或“PrintService”的事件,寻找拒绝访问的原因。 由于用户的问题是在打印测试页出现,因此我们重点放在认证环节。按照上述步骤逐一排查。 以下为具体操作步骤的详细说明: **步骤1:验证Windows共享设置** - 在Windows上,打开“控制面板”->“网络和共享中心”->“更改高级共享设置”。 - 在当前的配置文件(专用或公用)中,确保: - 启用网络发现 - 启用文件和打印机共享 - 关闭密码保护共享(为了测试,可以先关闭,如果成功再考虑安全性重新开启并设置账户) - 保存更改。 **步骤2:检查并设置Windows账户** - 在Windows上,创建一个专门用于打印机共享的账户,设置一个简单的密码(例如,用户名为printuser,密码为123456)。注意:实际环境中应使用强密码。 - 在打印机属性的“安全”选项卡中,添加这个账户,并赋予“打印”权限。 **步骤3:在Linux端使用命令行测试连接** - 打开Linux终端,安装smbclient(如果未安装): ```bash sudo apt install smbclient # Ubuntu/Debian sudo yum install samba-client # CentOS ``` - 运行: ```bash smbclient -L //192.168.1.100 -U printuser ``` 输入密码后,如果看到共享打印机在列表中,则表明连接成功。 **步骤4:在CUPS中重新添加打印机** - 打开浏览器访问CUPS管理页面:http://localhost:631 - 在Administration选项卡中,点击Add Printer。 - 选择“Windows Printer via SAMBA”,然后在位置框中输入: ```bash smb://printuser:123456@192.168.1.100/共享名 ``` - 后续步骤选择正确的驱动。 如果以上步骤仍然失败,考虑使用另一种URI格式(如果打印机共享名包含空格,要用引号括起来,或者用%20代替空格): ```bash smb://printuser:123456@192.168.1.100/共享名 ``` **步骤5:修改现有打印机的URI(如果已经添加)** - 在CUPS管理页面,找到该打印机,修改其URI,加入用户名和密码。 如果问题仍然存在,尝试在Windows上暂关闭防火墙,以排除防火墙干扰。 最后,如果所有方法都尝试过,依然不行,考虑使用raw模式添加打印机(即不要驱动,但可能无法使用高级功能): ```bash sudo lpadmin -p Printer_Name -v smb://printuser:123456@192.168.1.100/共享名 -m raw -E ``` 注意:`-m raw`表示使用原始打印,这意味着打印文件必须是打印机支持的语言(如PCL或PostScript)。如果打印机不支持,则无法打印。 以上步骤应能解决`NT_STATUS_ACCESS_DENIED`错误。如果问题依然存在,请检查Windows事件查看器以获取更多信息。 根据引用[1][^1]和引用[2][^2],该错误主要与认证失败有关,因此请重点检查用户名、密码和工作组设置。 下面,我们将以结构化的方式整理解决方案。 </think> ### 解决 Linux 连接 Windows 共享打印机出现 `SESSION SETUP FAILED: NT_STATUS_ACCESS_DENIED` 错误的方法 该错误表明 Linux 系统无法通过 Windows 的身份验证(引用[1][^1][引用[2][^2])。以下是系统化的解决方案: --- ### **一、核心排查步骤** #### 1. **验证 Windows 账户权限** ```bash # 在 Linux 终端测试连接(替换 IP 和用户名) smbclient -L //192.168.1.100 -U Windows用户名 ``` - **现象分析**: - 若返回 `NT_STATUS_LOGON_FAILURE` → 用户名/密码错误(引用[2][^2]) - 若返回 `NT_STATUS_ACCESS_DENIED` → 账户无打印机权限 - **解决方案**: - 在 Windows 上: 1. 控制面板 → 用户账户 → 为 Linux 访问**创建专用账户**(如 `linuxuser`) 2. 打印机属性 → 安全 → 添加该账户 → 勾选**打印权限** 3. 禁用密码复杂性策略(若临测试): ```powershell secpol.msc → 安全设置 → 账户策略 → 密码必须符合复杂性要求 → 禁用 ``` #### 2. **关闭 Windows 密码保护共享** ```powershell # Windows 管理员 PowerShell 执行 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" -Name "AllowInsecureGuestAuth" -Value 1 -Type DWord ``` - **关键操作**: - 控制面板 → 网络和共享中心 → 更改高级共享设置 → **关闭密码保护共享** - 启用 Guest 账户(临方案): ```powershell net user guest /active:yes ``` #### 3. **检查工作组一致性** ```bash # Linux 端查看工作组 sudo nano /etc/samba/smb.conf # 检查 workgroup = WORKGROUP ``` ```powershell # Windows 端查看工作组 [System.Environment]::OSVersion.VersionString; [System.Environment]::UserDomainName ``` - **必须确保**: - Linux 和 Windows 在**同一工作组**(默认 `WORKGROUP`) - 若不匹配,修改 Linux 配置: ```bash sudo sed -i 's/workgroup = .*/workgroup = WORKGROUP/' /etc/samba/smb.conf sudo service smbd restart ``` --- ### **二、CUPS 打印机配置修正** #### 1. **重新添加打印机并嵌入凭据** ```bash # 删除错误配置的打印机 sudo lpadmin -x "Printer_Name" # 添加带凭据的 URI(用户密码包含在链接中) sudo lpadmin -p HP_OfficeJet -v "smb://linuxuser:password@192.168.1.100/HP_OfficeJet" -m drv:///hpcups.drv/hp-officejet_pro_8610.ppd -E ``` #### 2. **修改现有打印机 URI** ```bash # 查看当前打印机 URI lpoptions -p HP_OfficeJet -l | grep device-uri # 更新为带认证的 URI sudo lpadmin -p HP_OfficeJet -v "smb://linuxuser:password@192.168.1.100/HP_OfficeJet" ``` --- ### **三、防火墙与协议调整** | 位置 | 操作 | |------------|----------------------------------------------------------------------| | **Windows** | 防火墙 → 允许应用 → 勾选「文件和打印机共享」 | | **Linux** | 放行 SMB 端口:<br> `sudo ufw allow 139/tcp && sudo ufw allow 445/tcp` | | **协议** | 在 `smb.conf` 添加:<br> `client min protocol = NT1`<br> `client max protocol = SMB3` | --- ### **四、深度故障排除** #### 1. **启用 Samba 调试日志** ```bash sudo nano /etc/samba/smb.conf ``` ```ini [global] log level = 3 log file = /var/log/samba/log.%m ``` 重启服务后分析日志: ```bash sudo tail -f /var/log/samba/log.192.168.1.100 # 替换为 Windows IP ``` #### 2. **Windows 事件查看器定位问题** - 在 Windows 搜索栏输入 `eventvwr` - 定位:Windows 日志 → 安全 → 筛选事件 ID `4625`(登录失败) --- ### **验证成功** ```bash # 发送测试页 echo "TEST PRINT" | lpr -P HP_OfficeJet # 检查打印队列 lpq -P HP_OfficeJet ``` --- ### **典型问题解决对照表** | 错误现象 | 首选解决方案 | 备选方案 | |-----------------------------------|----------------------------------|-----------------------------------| | `NT_STATUS_LOGON_FAILURE` | 重置 Windows 账户密码 | 关闭 Windows 密码策略 | | `NT_STATUS_ACCESS_DENIED` | 检查打印机安全权限 | 临启用 Guest 账户 | | 连接成功但无法打印 | 更新 CUPS 驱动 | 改用 `raw` 队列类型:`-m raw` | | 间歇性认证失败 | 步 Linux/Windows 间 | `sudo apt install ntpdate` | > 通过上述步骤,90% 的 `NT_STATUS_ACCESS_DENIED` 错误可解决(引用[1][^1][引用[2][^2])。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值