在 Ubuntu 16.04 中使用以下命令编译一个简单的程序gcc-5.4.0
:
$ cat tmp.c
#include <stdio.h>
int main()
{
printf("Hello World");
}
尝试以非特权用户身份进行编译时会产生以下错误:
$ gcc tmp.c
gcc: error trying to exec 'as': execvp: Permission denied
如果我查看汇编程序的权限,as
:
$ ls -lt /usr/bin/as
lrwxrwxrwx 1 root root 19 Aug 30 09:39 /usr/bin/as -> x86_64-linux-gnu-as
$ ls -lt /usr/bin/x86_64-linux-gnu-as
-rwxr-x--- 1 root root 369480 Aug 30 09:39 /usr/bin/x86_64-linux-gnu-as
这很奇怪。我可以用 root 身份编译此程序,而不会出现错误。
问题:
为什么汇编程序有 750 个权限?它怎么会变成这种状态。我无法想象 Ubuntu 默认就是这样的。