无法访问/ dev / null:权限被拒绝,尽管crw-rw-rw-1 root root 1,9 Sep 21 12:05 / dev / null


11

在用户postgres上:

$ ls -l /dev/null
ls: cannot access /dev/null: Permission denied

考虑到用户root,权限是正确的:

# ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Sep 21 12:05 /dev/null

我试图重新创建它:

# rm /dev/null && mknod -m 0666 /dev/null c 1 3

但是结果是一样的。我在x86_64上的Debian 7和2.6.32内核的VPS上

Answers:


18

问题出自/ dev的权限:

# ls -ld /dev
drwx------ 3 root root 4096 Sep 21 12:12 /dev

因此/ dev无法被用户访问。

# chmod a+x /dev
# chmod a+r /dev

解决了问题。


所以我想知道为什么它拥有那些权限。您可能需要重新安装。/ dev中的所有内容都是内核管理的,它具有错误的权限很奇怪。
cripto

不,/ dev中的所有内容都不是“内核管理的”。
tlund

@tlund,请阅读您最喜欢的内核书。“ / dev目录反映了内核的当前状态” doc.opensuse.org/products/draft/SLES/SLES-admin_sd_draft/…–
cripto

@ user1048138:我也想知道。我从VPS提供商的自动debian 7安装程序开始。然后我更新,升级,仅使用apt-get。加上wget some_domain / some_package.deb “手工”的一个包 ; dpkg -i some_package.deb; apt-get -f安装。曾经,/ dev / null更改为标准文件,并且/ dev权限已更改。我不能说更多。
lalebarde

1

我遇到了类似的问题,并通过搜索症状来到了这里,但是解决方案不适合我的情况。因此,我想添加另一个可能的原因,即使它与OP不太匹配。

在我的特殊情况下,我使用了proot(一个很好的chroot包装器)。但是,权限是在正确的/dev/null/dev本身。

碰巧是chroot目录的装载,我thunar以普通用户的身份通过它来完成。因此,在这种情况下,安装没有正确的权限。

您很难找到它,因为仅查看文件时看不到这些权限。

一般的解决方案路径是在问题位置(/dev/null)开始检查条件/dev,然后跳到下一个(s)级别,然后是挂载,文件系统等,接下来是什么。

在每个步骤上,您可能有几个前提条件,每个前提条件都有自己的外部层次。例如,用户可能位于错误的组中,这导致了组配置文件,该文件可能具有错误的权限等。

显然,您通常必须遵循一种树。


0

我自己无法解决这个问题,所以这就是我所做的:

mycommand.sh | echo -n

echo命令不注意标准输入,因此将被丢弃。而且-n是这样,不会将无用的换行符打印到标准输出。


1
虽然这可以回答问题,但是如果您可以提供解释为什么会这样做会更好。
DavidPostill

1
是的,但是它如何回答“无法访问/ dev / null:权限被拒绝,尽管crw-rw-rw-1 root root 1,3 Sep 21 12:05 / dev / null”这个问题呢?
DavidPostill

1
它没有回答问题。但这提供了一种解决方法。有时没有理想的直接答案。
马克·斯图尔特

0
chmod a+rw /dev/null /dev/random /dev/urandom /dev/ptmx /dev/tty /dev/zero /dev/full /dev/fuse /dev/net/tun

这就是解决我的VPS问题的原因。请注意,重新启动服务器后-您再次运行了此命令

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.