关于sed -i 修改selinux 的软链接文件的问题

http://blog.csdn.net/kumu_linux/article/details/8598005

因为sed -i /etc/sysconfig/selinux(selinux文件是/etc/selinux/config的软链接)配置文件重启SELINUX没有关闭,才发现原来sed -i是不能直接修改软链接文件的,如下我修改之后的后果:

  1. [root@node1 ~]# ll /etc/sysconfig/selinux
  2. lrwxrwxrwx. 1 root root 19 2月  20 20:34 /etc/sysconfig/selinux -> /etc/selinux/config
  3. [root@node1 ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
  4. [root@node1 ~]# ll /etc/sysconfig/selinux
  5. -rw-r--r-- 1 root root 457 2月  20 22:50 /etc/sysconfig/selinux
  6. [root@node1 ~]#

我们发现链接文件不再是链接文件了,后来查看sed man选项时发现如下选项说明

--follow-symlinks               follow symlinks when processing in place; hard links will still be broken.

-i[SUFFIX], --in-place[=SUFFIX]               edit  files  in  place (makes backup if extension supplied).  The default operation mode is to               break symbolic and hard links.  This can be changed with --follow-symlinks and --copy.

-c, --copy               use copy instead of rename when shuffling files in -i mode.  While this  will  avoid  breaking               links  (symbolic  or hard), the resulting editing operation is not atomic.  This is rarely the               desired mode; --follow-symlinks is usually enough, and it is both faster and more secure.

以上说明就不作过多解释了,说的很明显,看下面实例

  1. [root@node1 ~]# echo "test" >>test
  2. [root@node1 ~]# ln -s ~/test ~/test_soft
  3. [root@node1 ~]# ln ~/test ~/test_hard
  4. [root@node1 ~]# ll -i test*
  5. 271653 -rw-r--r-- 2 root root  5 2月  20 23:04 test
  6. 271653 -rw-r--r-- 2 root root  5 2月  20 23:04 test_hard
  7. 271655 lrwxrwxrwx 1 root root 10 2月  20 23:04 test_soft -> /root/test
  8. [root@node1 ~]# sed -i "s/test/hard/g" test_hard
  9. [root@node1 ~]# sed -i "s/test/soft/g" test_soft
  10. [root@node1 ~]# ll -i test*
  11. 271653 -rw-r--r-- 1 root root 5 2月  20 23:04 test
  12. 271656 -rw-r--r-- 1 root root 5 2月  20 23:05 test_hard
  13. 271657 -rw-r--r-- 1 root root 5 2月  20 23:06 test_soft
  14. [root@node1 ~]#

很明显如man中所说-i选项对软链接和硬链接都会使受到破坏

  1. [root@node1 ~]# rm -rf test*
  2. [root@node1 ~]# echo "test" >>test
  3. [root@node1 ~]# ln -s ~/test ~/test_soft
  4. [root@node1 ~]# ln ~/test ~/test_hard
  5. [root@node1 ~]# ll -i test*
  6. 271653 -rw-r--r-- 2 root root  5 2月  20 23:08 test
  7. 271653 -rw-r--r-- 2 root root  5 2月  20 23:08 test_hard
  8. 271655 lrwxrwxrwx 1 root root 10 2月  20 23:08 test_soft -> /root/test
  9. [root@node1 ~]# sed -i -c  "s/test/soft/g" test_soft
  10. [root@node1 ~]# sed -i -c  "s/test/soft/g" test_hard
  11. [root@node1 ~]# ll -i test*
  12. 271653 -rw-r--r-- 2 root root  5 2月  20 23:11 test
  13. 271653 -rw-r--r-- 2 root root  5 2月  20 23:11 test_hard
  14. 271655 lrwxrwxrwx 1 root root 10 2月  20 23:08 test_soft -> /root/test

--follow-symlinks选项只对软链接有效,硬链接还是会被破坏,建议使用-c选项,这里就不举例了

后来朋友在RHEL5上运行相同的操作居然没有出现类似的现象,运行结果如下:

  1. $ echo "test" >> test
  2. $ ln -s ~/test ~/test1
  3. $ ll ~/test1
  4. lrwxrwxrwx 1 sxkj sxkj 15 02-21 13:26 /home/sxkj/test1 -> /home/sxkj/test
  5. $ sed -i "s/test/test1/g" ~/test1
  6. $ ll ~/test1
  7. lrwxrwxrwx 1 sxkj sxkj 15 02-21 13:26 /home/sxkj/test1 -> /home/sxkj/test

经查是sed的版本不同造成的影响,RHEL5系列的还是使用老版本的sed,没有--follow-symlinks类似的选项,笔者之前实验的版本是RHEL6.3,所以出现之前的一系列问题了

关于sed -i 修改selinux 的软链接文件的问题的更多相关文章

  1. Linux之SElinux安全上下文件(1)

    SELinux:Secure Enhanced Linux,是美国国家安全局(NSA=The National Security Agency)和SCC(Secure Computing Courpo ...

  2. sed 's/AA/BB/' file # 将文件中的AA替换成BB,只替换一行中第一次出现的AA,替换后的结果输出到屏幕 sed 's/AA/BB/g' file # 将文件中的所有AA都替换成BB,替换后的结果输出到屏幕

    生信人的自我修养:Linux命令速查手册 简佐义 ​ 四川大学 生物信息学硕士 科学求真 赢 10 万奖金 · 院士面对面 209 人赞同了该文章 许多人做生物信息学,要么不重视Linux,要么不知道 ...

  3. Tomcat编码问题及访问软链接文件设置

    Tomcat编码问题及访问软链接文件设置 一.编码问题:让其支持UTF-8格式 修改tomcat中server.xml Connector port=" protocol="org ...

  4. centos7 修改selinux 开机导致 faild to load SELinux policy freezing 错误

    centos7 修改selinux 开机导致 faild to load SELinux policy  freezing 错误 之前把selinux关闭了,这次想打开selinux,于是修改了 /e ...

  5. 特殊权限set_uid /特殊权限set_gid/特殊权限stick_bit/软链接文件/硬连接文件

    2.18 特殊权限set_uid 2.19 特殊权限set_gid 2.20 特殊权限stick_bit 2.21 软链接文件 2.22 硬连接文件 特殊权限set_uid(s权限用户user权限) ...

  6. Linux:自动获取静态IP地址,清空iptable,修改selinux脚本

    自动获取静态IP地址,清空iptable,修改selinux脚本 环境:VMware 平台:centos6.8全新 功能: 1)应用ifconfig -a,route -n,cat /etc/reso ...

  7. Linux CentOS7 VMware 特殊权限set_uid、特殊权限set_gid、特殊权限stick_bit、软链接文件、硬连接文件

    一.特殊权限set_uid root用户本身拥有对/etc/passwd的写权限,无可厚非:那普通用户呢,这里就用到了setuid,setuid的作用是“让执行该命令的用户以该命令拥有者的权限去执行” ...

  8. RHEL7 修改SSH默认端口及修改SELinux运行状态

    RHEL7安装后,默认开启SSH服务以便远程配置,但默认端口22并不安全,一般不建议使用默认端口,那就修改SSH默认端口.在sshd_config里面的修改RHEL7.0上修改和7.0以下类似,但要注 ...

  9. 修改目的端trail文件的最大大小--转载

    本文为原创,转载请注明出处: http://blog.csdn.net/msdnchina/article/details/38346435 修改目的端trail文件的最大大小. 本文产生的背景: 在 ...

随机推荐

  1. liunx下误删除/var目录下的empty文件,导致ssh连接不上

    清理Liunx上不用的文件,导致误删 /var/下的empty文件,因为用的是ftp删的,所以可能有隐藏文件没有看到,导致其他同事都登录不上去 解决方法: 1.在/var文件夹下,重新建立empty文 ...

  2. cesium入门1

    本教程将获得所有技能水平的开发人员和他们的第一个铯应用程序运行. 验证Cesium在您的Web浏览器中工作的最简单的方法是单击此处运行Hello World示例 (打开一个新窗口).如果你看到像下面的 ...

  3. makefile--变量的使用(二)

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 仔细研究我们的之前Makefile发现,我们还有改进的地方,就是此处: target_bin : ...

  4. Maven------pom.xml自动加载各种类库代码

    转载: http://lavasoft.blog.51cto.com/62575/1388866/ 一般要加<type>jar</type> <dependency> ...

  5. Vitamio与FFmpeg、LGPL、GPL的关系

    转自:http://sun.sanniang.me/2014/04/26/the-relationship-vitamio-with-ffmepg-lgp-gpl Vitamio 使用了 FFmpeg ...

  6. shell、cmd、dos和脚本语言杂谈(转)

    问题一:DOS与windows中cmd区别   在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作. 操作系统可以分成核心(kernel)和Shell(外壳)两部 ...

  7. Swift-Swift的Singleton三种写法

    第一种: import Foundation class SingletonA : NSObject { static let sharedInstance: SingletonA = Singlet ...

  8. PHP遍历文件夹及子文件夹所有文件(此外还有飞递归的方法)

    <html> <body> <?php function traverse($path = '.') { $current_dir = opendir($path); / ...

  9. 网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP

    TUN 设备 TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为.先来看看物理设备是如何工作的:

  10. 设计模式之模板方法模式(Java实现)

    "那个,上次由于我老婆要给我做饭,所以就没有说完就走掉了...这个那个".这次和以前一样,先来开场福利(工厂方法模式已被作者踹下场).由美女抽象工厂介绍一下适用场景~大家欢迎 抽象 ...