Linux
find 옵션
find 찾는 명령어 find / (root부터 시작) -name "log"(이름이 log 인 파일) 그 외는 너무 많이 떠서 생략 // * find 사용자가 지정한 특정파일을 찾는 명령 사용법 find [시작 디렉토리] [각종 문법] 주어진 디렉토리에 [각종 문법]에 해당하는 내용과 일치하는 파일을 찾아 보여준다. 부모 디렉토리에서부터 시작해서 하위 디렉토리에 있는 모든 파일들에 대해서 검색하며, 시스템 내의 모든 파일들에 대해 찾고자 할때는 [시작 디렉토리[를 ‘/’(root)로 지정한다.-name “문자열” : 파일이름이 문자열과 일치하는 파일을 찾는다. “log” : 파일이름이 log인 파일 “*log” : 마지막 문자열아 log로 끝나는 모든 파일 “log*” : log로 시작하는 파일 “?lo..
파일 접근 권한
S_ISUID 04000 실행을 위한 사용자 ID설정. S_ISGID 02000 실행을 위한 그룹 ID설정. S_ISVTX 01000 스티키 비트. S_IRUSR (S_IREAD) 04000 읽기. S_IWUSR (S_IWRITE) 02000 쓰기. S_IXUSR (S_IEXEC) 00100 실행/찾기 S_IRGRP 00040 그룹에 의한 읽기 S_IWGRP 00020 그룹에 의한 쓰기. S_IXGRP 00010 그룹에 의한 실행/찾기. S_IROTH 00004 다른사람이 읽기 00004 read by others S_IWOTH 00002 다른사람이 쓰기 S_IXOTH 00001 다른사람이 실행/찾기.
커널 모듈 에서 쉘 명령어 실행하기
argv[0] = "/bin/bash"; argv[1] = "-c"; argv[2] = "/usr/bin/free"; argv[3] = NULL; envp[0] = "HOME=/"; envp[1] = "TERM=linux"; envp[2] = "PATH=/sbin:/usr/sbin:/bin:/usr/bin"; envp[3] = NULL; call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
커널에서 64비트 연산시 주의할 점
커널모듈에서는 64bit 숫자를 나누기나 모듈러 연산시 그냥 컴파일 하면 아마도 __udivdi3 와 __umoddi3 에 대해 unresolved symbol 에러가 날 것임. 그냥 / 연산자 쓰지말고것 do_div 연산자를 쓰자. 다만. do_div(a, b) 의 의미가 a = a / b 이기 때문에 입력값a 에 결과값이 들어있다는 것을 기억해주자. #include 해줄것[출처] 커넒모듈에서 나누기나 모듈러 연산시|작성자 baksejin
프로세스 정보 얻기 (Task Struct 이용)
struct thread_info *thread = current_thread_info();struct task_struct *task = thread->task; for_each_process(task){printk("pid = %d tgid = %d ppid=%d comm=%s\n ",task->pid,task->tgid,task->real_parent->pid,task->comm);}
커널영역에서 파일 입출력
#include mm_segment_t old_fs=get_fs();set_fs(KERNEL_DS); //file openfilp = filp_open(fname, O_RDWR, S_IRUSR|S_IWUSR);if(IS_ERR(filp)){printk("open error\n");return;}//file readret = vfs_read(filp, buff, sizeof(buff), &filp->f_pos);printk(KERN_ALERT "cmd[%s] ", buff); //file closefilp_close(filp, NULL);set_fs(old_fs);strcpy(cmd,buff);