由于我无法确定的原因,在过去两天内,“man”命令在我的 Linux 服务器(Ubuntu 18.04)上停止工作。当尝试运行时,man <anything>
我最终遇到了 vi 的空白实例(大概是因为它在后台某处使用 vimpager)...一旦我退出 vim 实例,我就会在控制台上看到以下错误:
lwobker@lwobker-vms:~$ man ls
cat: /tmp/vimpager_4620/cols: Permission denied
cat: /tmp/vimpager_4620/lines: Permission denied
head: cannot open '/tmp/vimpager_4620/stdin' for reading: Permission denied
sed: can't read /tmp/vimpager_4620/stdin: Permission denied
mv: cannot move '/tmp/vimpager_4620/stdin.work' to '/tmp/vimpager_4620/stdin': Permission denied
cat: /tmp/vimpager_4620/stdin: Permission denied
/usr/bin/pager: 242: /usr/bin/pager: cannot open /tmp/vimpager_4620/stdin: Permission denied
/usr/bin/pager: 239: [: Illegal number:
无论我是否以“常规”用户身份运行,或者是否以“常规”用户身份运行,sudo man <anything>
或者是否以sudo bash
这种方式运行,都会发生这种情况。
显然某个地方存在权限问题,但如果我能找出问题所在,那我就该死了。错误消息中提到的所有 /tmp 目录都存在并且已设置读取权限,因此我不太明白为什么所有这些命令都会抱怨。
lwobker@lwobker-vms:/tmp$ ll vimpager_4234/
total 60
drwx------ 2 lwobker lwobker 4096 Nov 8 10:47 ./
drwxrwxrwt 24 root root 40960 Nov 8 10:56 ../
-rw-r--r-- 1 lwobker lwobker 11 Nov 8 10:47 1.vim
-rw-r--r-- 1 lwobker lwobker 9664 Nov 8 10:47 stdin
-rw-r--r-- 1 lwobker lwobker 0 Nov 8 10:47 stdin.work
答案1
事实证明,不知何故阿帕莫尔可执行文件的配置文件/usr/bin/man
要么已损坏,要么已被不同版本的配置文件覆盖,或者类似的内容......因此警告permission denied
来自 apparmor,而不是来自文件系统权限检查。
检查系统日志显示大量消息,例如:
audit: type=1400 audit(1541703091.843:4554): apparmor="DENIED" operation="ptrace" profile="/usr/bin/man" pid=8777 comm="ps" requested_mask="trace" denied_mask="trace" peer="/usr/bin/man"
解决方案是一个我不知道的漂亮工具,叫做AA-logprof,它基本上解析系统日志中 apparmor 的错误,并(交互式)询问您是否要调整 apparmor 配置文件以修复权限。