zoukankan      html  css  js  c++  java
  • error: /usr/include/stdio.h: Permission denied 的一种情况分析

    error: /usr/include/stdio.h: Permission denied 的一种情况分析
    代码:
    1. #include <stdio.h>
    2. int main(){
    3.         printf ("hello long size %d ",sizeof(long));
    4. }
    很简单,测试是否能够编译通过
    对比
    • 在root的用户下编译正常通过
    • 在其他用户测试不通过

      点击(此处)折叠或打开

      1. ~> gcc test.c
      2. test.c:1:19: error: /usr/include/stdio.h: Permission denied
      3. test.c: In function 'main':
      4. test.c:5: warning: incompatible implicit declaration of built-in function 'printf'

    尝试着解决问题

    提示说是权限受限。
    在root用户下看看stdio.h的属性

    点击(此处)折叠或打开

    1. ll /usr/include/stdio.h
    2. -rw-r--r-- 1 root root 31144 2010-05-06 10:33 /usr/include/stdio.h
    具有可读属性,但是用vim打开,显示是个 [new file], 为什么呢?
    具有可读权限就是看不到文件!

    给文档添加可执行权限,chmod +x /usr/include/stdio.h
    问题如故

    给link添加可执行权限,# find /usr/include/ -type l -exec ls -l {} ;
    问题如故

    去除link的可执行权限,# find /usr/include/ -type l -exec chmod -x  {} ;

    给文件夹添加可执行权限,# find /usr/include/ -type d -exec chmod +x  {} ;
    问题解决

    分析
        我不明白,打开/usr/include/stdio.h 和其他文件夹的可执行权限有什么相关,因为/usr/include和/usr/include/stdio.h 都具有可行性,用户应该可以读取stdio.h文件才对啊。
       
    这个情况出现在移植的过程中,为了防止不必要的麻烦,添加如下命令,chmod -R 755 /usr/include/

  • 相关阅读:
    7天入门JavaScript,第一天
    linux 下 启动web项目报 java.net.UnknownHostException
    HashMap 和 Hashtable
    Servlet 两种跳转方式
    SpringMVC
    把当前时间(NSDate)转为字符串
    写入数据到Plist文件中时,第一次要创建一个空的数组,否则写入文件失败
    实现多个UIView之间切换的动画效果
    missing required architecture x86_64 in file 不支持64位
    获取IOS bundle中的文件
  • 原文地址:https://www.cnblogs.com/timssd/p/4781171.html
Copyright © 2011-2022 走看看