V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
FindHao
V2EX  ›  Linux

如何将一个普通文件转换成软链接?

  •  
  •   FindHao · 2016-11-26 21:17:47 +08:00 · 5517 次点击
    这是一个创建于 2922 天前的主题,其中的信息可能已经有所发展或是发生改变。

    按理说,软链接也是一个文件,那么如何将一个普通文件转化成软链接呢? IMPORTANT !!!: 在 C 语言中,并且不能借助 rm ln 等命令。 c 中创建软链接的函数是: symlink() 在unistd.h头文件里,查看发现是这样的:

    #define __NR_symlink 1036
    __SYSCALL(__NR_symlink, sys_symlink)
    

    如何查看这个 syscall 的源码呢? 比如,现在有a.doc这个文件,现在想建立 a-->a.doc ,但是当前已经存在了一个 a 文件,而且可以修改不能删除。上面的函数,如果检测到当前这个文件是已经存在的,将不会对这个文件进行修改。

    5 条回复    2016-11-28 00:04:54 +08:00
    FindHao
        1
    FindHao  
    OP
       2016-11-26 21:19:42 +08:00
    ryd994
        2
    ryd994  
       2016-11-27 05:39:22 +08:00 via Android
    其实手够快就没事啊
    msg7086
        3
    msg7086  
       2016-11-27 11:34:28 +08:00
    创建链接是个系统调用,会跳进内核代码里,然后转发给文件系统驱动处理。
    FindHao
        4
    FindHao  
    OP
       2016-11-27 15:45:29 +08:00
    r#2 @ryd994 我其实是想利用 dirtycow 这个漏洞,所以对原文件是没有权限删除的。

    @msg7086 恩,有点吃力,准备换个思路想想。
    zhouheyang0919
        5
    zhouheyang0919  
       2016-11-28 00:04:54 +08:00 via Android
    @FindHao 利用 DirtyCOW 漏洞只能修改可被 mmap 映射的文件内容。

    软链接涉及文件属性,不能利用 DirtyCOW 创建或修改。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3519 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:57 · PVG 18:57 · LAX 02:57 · JFK 05:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.