首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux笔记(6)| 文件属性

linux并没有给文件权限测试提供宏操作,而只是提供了位掩码,所以我们只能用位掩码来自己判断是否具有相应权限。...chmod命令其实内部是用linux的一个叫chmod的API实现的。 注意:只有在Linux原生目录中,改变文件权限才有效,在共享文件夹中会不起作用。...使用 (2)readdir函数调用一次就会返回一个structdirent类型的指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录项(所谓目录项就是目录中的一个子文件)。...(3)readdir调用一次只能读出一个目录项,要想读出目录中所有的目录项必须多次调用readdir函数。...readdir函数内部会记住哪个目录项已经被读过了哪个还没读,所以多次调用后不会重复返回已经返回过的目录项。当readdir函数返回NULL时就表示目录中所有的目录项已经读完了。

1.5K30

比ls快8倍?百万级文件遍历的奇技淫巧

1.问题背景 在Linux下当我们操作一个文件数较少的目录时,例如执行ls列出当前目录下所有的文件,这个命令可能会瞬间执行完毕,但是当一个目录下有上百万个文件时,执行ls命令会发生什么呢,带着疑问,我们做了如下实验...我们首先看一下man page里面对于readdir的定义: struct dirent *readdir(DIR *dirp); readdir返回一个指向dirent结构体的指针,指向目录流dirp...syscall.h> #define handle_error(msg) \ do { perror(msg); exit(EXIT_FAILURE); } while (0) struct linux_dirent...1024*1024*5 int main(int argc, char *argv[]) { int fd, nread; char buf[BUF_SIZE]; struct linux_dirent...type d_reclen d_off d_name\n"); for (bpos = 0; bpos < nread;) { d = (struct linux_dirent

5K50

Linux系统下读取目录操作及可重入函数介绍

一、读取目录下的子文件: 1、在Linux系统下,打开和读取目录下的子文件主要是用opendir与readdir函数来操作的,我们解析一下这两个函数的原型: a、opendir函数: #include...2)readdir调用一次只能读出一个目录项,要想读出目录中所有的目录项必须多次调用readdir函数。...readdir函数内部户记住哪个目录项已经被读过了哪个还没读,所以多次调用后不会重复返回已经返回过的目录项。当readdir函数返回NULL时就表示目录中所有的目录项已经读完了。...多次调用readdir其实readir内部并不会重复申请内存而是使用第一次调用readdir时分配的那个内存。这个设计方法是readdir不可重入的关键。...readdir在多次调用时是有关联的,这个关联也标明readdir函数是不可重入的。

1.6K10

Linux下的文件IO编程

Linux 系统调用(system call)是指操作系统提供给用户程序的一组“特殊接口”,用户程序可以通过这组“特殊”接口来获得操作系统提供的特殊服务。...在 Linux 中,用户程序不能直接访问内核提供的服务,必须通过系统调用来使用内核提供的服务。...Linux 中的用户编程接口(API)遵循了 UNIX 中最流行的应用编程界面标准—— POSIX。这些系统调用编程接口主要是通过 C 库(libc)实现的。...往期传送门: 史上最全的Linux常用命令汇总(超详细!...) 读取文件(read) 写入文件(write) 定位文件(lseek) 访问目录(opendir/readdir) 关闭目录(closedir) 修改文件属性(chmod/fchmod) 获取文件属性

2.4K10

FUSE

FUSE由三个部分组成,linux内核模块、FUSE库以及mount 工具。...FUSE起初是为了研究AVFS(A Virtual Filesystem)而设计的,而现在已经成为SourceForge的一个独立项目,目前适用的平台有Linux, FreeBSD, NetBSD, OpenSolaris...官方的linux kernel版本到2.6.14才添加了FUSE模块,因此2.4的内核模块下,用户如果要在FUSE中创建一个文件系统,需要先安装一个FUSE内核模块,然后使用FUSE库和API来创建。...##二、FUSE特性 库文件和 API简单,极大地方便了用户的使用 安装简便,不需要加补丁或者重新编译 kernel 执行安全,使用稳定 高效,相对于其它用户态文件系统实例 非特权用户可以使用 基于 linux2.4...= hello_readdir, .open = hello_open, .read = hello_read, }; /用户只需要调用fuse_main(),剩下的事就交给FUSE了

2.9K61

比ls快8倍?百万级文件遍历的奇技淫巧

1.问题背景 在Linux下当我们操作一个文件数较少的目录时,例如执行ls列出当前目录下所有的文件,这个命令可能会瞬间执行完毕,但是当一个目录下有上百万个文件时,执行ls命令会发生什么呢,带着疑问,我们做了如下实验...ls会首先调用opendir打开一个目录,然后循环调用readdir这个glibc中的函数直到遇到目录流的结尾,也即读完所有的目录项(dentry)为止。...我们首先看一下man page里面对于readdir的定义: struct dirent *readdir(DIR *dirp); readdir返回一个指向dirent结构体的指针,指向目录流dirp...讲完目录流的buffer大小是怎么确定的之后,让我们回到readdir的glibc实现。 ?...3.解决方法 既然glibc中readdir的buffer大小我们没法控制,何不绕过readdir直接调用getdents,在这个系统调用中我们可以直接控制buffer的大小,以下就是一个简单的例子listdir.c

1.9K30

安全研究 | Linux 遭入侵,挖矿进程被隐藏案例分析

在变更文件里可以看到一些挖矿程序,同时 /etc/ld.so.preload 文件的变更需要引起注意,这里涉及到 Linux 动态链接库预加载机制,是一种常用的进程隐藏方法,而 top 等命令都是受这个机制影响的...在 Linux 操作系统的动态链接库加载过程中,动态链接器会读取 LD_PRELOAD 环境变量的值和默认配置文件 /etc/ld.so.preload 的文件内容,并将读取到的动态链接库进行预加载,即使程序不依赖这些动态链接库...——段落引自《警惕利用 Linux 预加载型恶意动态链接库的后门》 通过查看文件内容,可以看到加载一个 .so 文件:/usr/local/lib/libjdk.so ?...三、样本分析 通过对样本逆向分析,发现样本 libjdk.so 主要是 Hook 了 readdirreaddir64 两个函数: ?...对应修改后的 readdir 函数结构如下(readdir64 函数也是类似的): ? get_dir_name 函数结构: ? get_proces_name 函数结构: ?

3.1K80
领券