在车库里闲逛时,我发现了一台古老的点阵打印机,Epson LX-1050。Ubuntu 毫无问题地识别了它,我能够通过 CUPS 使用它打印几页。
现在,出于某种原因,我想按照 1994 年设计的方式使用这台打印机:直接写入并行端口。我尝试了最简单的方法来操作我的 USB 3G 调制解调器:
echo "Y helo thar" > /dev/lp0
我遇到一个错误:
bash: /dev/lp0: Access denied
我尝试使用 sudo 执行此命令,但没有成功。还尝试镜像将文件复制到 LPT1 的 DOS 方法:
cp /etc/hosts /dev/lp0
再次没有成功。
有什么建议我可以尝试让这种方法发挥作用吗?
答案1
我似乎已经搞明白了。我真傻。在谷歌搜索 lpadmin 用法示例时,我偶然发现了这个链接:http://ubuntuforums.org/showthread.php?t=1437325
dev/lp0 的权限为:
c---rw---- 1 root lp 6, 0 2011-06-26 22:47 /dev/lp0
据我所知,lp 组只有 lp 用户。在我执行
sudo chmod 666 /dev/lp0
以下命令开始按预期工作,使打印机将符号输出到纸上:
echo "Y helo thar" > /dev/lp0
好吧,我想这是一个很好的保护措施,可以防止有人除了打印守护进程之外意外地写入 LPT 端口,但是对我来说这仍然没有意义,为什么它对 root 禁用?
答案2
可能 lp 守护程序 (打印后台处理程序) 拥有 /dev/lp 的独占所有权。关闭后台处理程序 (阅读 lpadmin 和 /usr/bin/disable)。