Linux

qwding

1 minute read

事情起因 最近接了个C++项目,结果编译完放到服务器上会报动态库版本不对,之后又是一个系统库不对,我粗暴的将CentOS 7(之前不知道系统是7…不然打死也不这么干啊) 的/lib64/libc.so.6 直接拷贝到了CentOS 6.5系统上,灾难发生了…. 所有命令用不了,傻逼了… 恰好那个服务器正跑着一个pv 几百万的项目,顿时压力山大 绝大部分命令都用不了,ls 命令都用不了了,本想将软链换回去,ln 不好使,怎么办! 后来查阅到命令ldconfig,专门管理动态库的,发现这个命令可以运行诶(哭笑脸)。 在查阅其参数,发现只有一个-l貌似可以用到,可是大部分博客都是这么写的: -l Manually link individual libraries. 并没有看到列子(哭笑脸) 抱着死马当活马医的心态试用如下 ldconfig -l /lib64/libc.so.6 /lib64/libc-2.12.so 居然好使了,福大命大! 后来检查发现,貌似这个命令只是临时更改软链,想永久改还是需要修改文件的。 ldconfig 写的感觉不错的链接:http://blog.csdn.net/unix21/article/details/12119861 主要还是管理linux的动态链接库的,安装动态链接库以后,需要将库目录放到 /etc/ld.so.conf 里面,再执行ldconfig,这时候会将库的信息放到 /etc/ld.so.cache(高速缓存机制)。 系统在使用库时候先去 /etc/ld.so.cache 目录下找,找到了再去 /etc/ld.so.conf 目录下找。所以如果 /etc/ld.so.cache 没有,那就找不到。到这里也就明白了,新加库,就要执行ldconfig,但是更新的话就不需要了 linux博大精深 不搞不知道,最近新接的别人的项目,发现写C的还是对底层能更是了解很多啊!linux很多东西用C写起来更能发挥效果啊。

使用root用户时候出现权限不够

permission denied when use user root.

qwding

1 minute read

非常费解的问题 写了一个logrotate的脚本,用crontab定时跑,非常费解的问题出现了,我单独跑logrotate怎么跑都没问题,但是放到crontab里就会出现权限不够的问题。其中就有使用curl权限不够,百思不得其姐! 有没有搞错,我是root用户啊,还出现权限不够的问题。 试过了将curl权限提到最高,赋给s权限,均失败。 google查阅curl permission denied / crontab permission denied / logrotate permission denied 均无果。 吐血。。。 过程 查阅系统日志(centos) cat /var/log/messages |grep curl Feb 21 14:52:01 client kernel: type=1400 audit(1487659921.234:2409): avc: denied { name_connect } for pid=26860 comm="curl" dest=2727 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:unreserved_port_t:s0 tclass=tcp_socket 什么鬼,看不懂,仔细查阅一下,查到SELinux。 我去,这不是之前搞mysql常遇到的问题么 修改 /etc/selinux/config SELINUX=disabled # 设置为disabled 测试crontab好使了! SELinux 这个是什么美国国家安全局,增加安全控制的东西 这个设置了enforcing时候,你的root用户其实也没毛多大用了,也是受限制的。 总之就是不让你动你运行程序以外的文件 纠错过程 很曲折,一直以为是crontab运行时候用户的问题,或者文件的权限问题,在root下还是报错,所以一直卡在那里。 最后能找到问题也是花费好多时间…… 好烦