IT 그리고 정보보안/Knowledge base 227

리눅스 프로세스 생성, 실행 그리고 제어

프로세스 생성 자식 프로세스를 생성하는 fork 함수에 대해 알아보자. 보다시피 반환값을 2가지 가진다 (실패 제외) 자식프로세스 값, 부모 프로세스 값. 자식은 getppid() 함수를 이용해 부모 프로세스의 pid를 얼마든지 알아낼 수 있고, 부모는 하나뿐이지만 부모는 여러개의 자식프로세스를 가질 수 있고 별도의 자식pid를 알아낼 함수가 존재하지 않는다. 보통 자식프로세스가 생성되면 부모의 pid값에 +1한 값이 자식프로세스의 pid이다. fork가 자식프로세스를 생성하고 나서도 부모, 자식 프로세스 두가지 모두 정상적으로 실행된다. fork로 생성된 자식프로세스는 부모 프로세스의 복사본이다. 다만, 코드(텍스트) 세그먼트는 복사하지 않고 공유한다. 중요한 것은, 자식은 부모와 메모리 영역을 공유하..

리눅스 환경의 시간과 날짜

시간과 날짜에 대한 시스템콜들을 알아보겠다. time() 부터 보겠음 time 함수는 현재 시간값을 반환하는 함수이다. 근데 시간 계산이 좀 특이함. 리눅스의 기원? 시간이 1970년 1월 1일 00시 00분 00초 부터 시작해 저 시간 부터 초 단위로 계산하여 현재 시간을 구한다. 아 그럼 gettimeofday 함수는 뭐지? 좀더 상세하게 ms(밀리 세컨드) 단위로 계산하는 것이다. tp라는 timeval 구조체를 가르키는 포인터에 현재 시간을 저장한다. tzp는 NULL을 무조건 넣어야 한다는데.. 유닉스 규격에 그렇게 되어있단다. gettimeofday 함수같이 밀리 세컨 까지 표기하는 것은 몇몇 시스템에서 굉장히 효과적일 수 있다. 시간이 정말 중요한 그런 부분.. timeval 구조체는 아래와..

리눅스 디렉토리 관리

디렉토리 만들고 삭제하는 mkdir, rmdir 함수에 대해 알아보자. 먼저 디렉토리를 생성하는 mkdir 함수이다. mkdir로 디렉토리를 생성하면 자동적으로 dot(.), dot-dot(..) 디렉토리가 생성된다. 권한에 대해 설정할 때 읽기,쓰기만 설정하고 실행권한을 설정안하면 디렉토리 안에 있는 파일에 대해 접근이 불가능하다.(주의) ,,, 다음 디렉토리를 삭제하는 rmdir 함수이다. 디렉토리 안에 파일이 있으면 안된다. dot, dot-dot 디렉토리만 있는 상태여야 삭제가 됨. 디렉토리 읽기 이번에는 디렉토리 읽기에 관련된 함수들에 알아보자. 디렉토리 읽기라 함은.. ls 명령을 치는 것과 일맥상통한다. 디렉토리에 대한 읽기는 누구나 가능하다. 초기 UNIX 시스템에서는 디렉토리 구조가 총 ..

리눅스 환경의 파일 관리

파일을 관리하기 위한 여러가지 기능의 함수들에 대해 알아본다~~ 파일 쪼개기 먼저 파일을 절단(?)할 때 사용하는 truncate() 계열 함수에 대해 알아보자. open() 함수를 사용할 때 새로 파일을 만들때 O_TRUNC 옵션을 줬던걸 기억하는지.. 이 truncate 함수를 이용해서 파일 자르는 경우의 일부라고 볼 수 있다. (통째로 다 짤라 버린다는 말) truncate와 ftruncate 두가지가 있는데, 앞서 공부한 함수들과 마찬가지로.. open된 파일에 대해 절단을 하려면 ftruncate 쓰면된다. 파일을 잘라서 파일의 크기를 length만큼 만드는 것. 하드링크 생성 및 삭제 link와 unlink에 대해 알아보자. 하드링크 파일을 만들고 링크 카운트를 줄이는 함수이다. newpath..

리눅스 파일 권한

리눅스 파일 권한에 대한 이야기를 하겠다. 리눅스 운영체제가 여러명의 유저가 사용 가능하도록 계정이 존재하는 것은 알거임. 여러명의 사용자가 동시에 OS를 사용하는데.. 권한이 각자 다르겠지. 관리자 권한이 있고, 자원 접근이 한정적인 일반 사용자 계정이 있을 것이고, 또 권한에 따른 그룹도 존재할 것이다. $ls -al 명령을 디렉토리 내에 있는 파일들의 리스트가 나온다. 우리가 볼 것은 파일 목록 앞에 적힌 " drwx------ " 패턴으로 이루어진 문자들. 바로 오늘 얘기한 권한에 관련된 내용이 표시된 부분이다. drwxrwxr-x 2 student student ​이놈들이 뭘 뜻하는 걸까. 먼저 맨 앞 d는 디렉토리인지 파일인지 구분하는 것이다. d가 되어있으면 디렉토리, -는 파일 다음 rwx..

리눅스 파일 분류

보통 알고있는 파일의 종류는 그냥 파일(정규파일..regular file)과 디렉토리인데, 사실 디렉토리도 파일의 일종이다. 파일은 여러가지 종류가 있다. 음.. 이건 기본적으로 알아야 한다고 생각한다. 1. 정규 파일(Regular file) 우리가 알고있는 파일이다. 웬만한 파일이 다 정규 파일이다. 다만 실행파일은 다름.. (ELF 파일 포맷을 따른다.) 리눅스에서는 이 파일이 텍스트인지 바이너리인지 구분을 하지 않는다. 그냥 냅다 읽어버릴뿐 그니까 정규 파일의 형식은 응용프로그램 단에서 결정하는 것임. 2. 디렉토리 파일(Directory file) 디렉토리도 파일의 일종이라고 했었다. 디렉토리 파일은 다른 파일의 이름과 그 파일들에 대한 정보를 가르키는 포인터들을 담은 파일이다. 3. 블록 특수..

리눅스 파일 입출력 관련 시스템콜 함수

먼저 open함수에 대해서 알아보자. 이름그대로 파일을 여는 시스템콜 함수이다. 파일을 read하든, write하든 일단 파일을 열어야 할 것이 아닌가? 하여튼 파일 입출력에서 가장 기본이 되는 함수이다. 일단 기본 함수 레퍼런스와 각 인자들이 뜻하는 바를 알아보자. #include int open(cosnt char *pathname, int oflag, ... /* mode_t mode */); fcntl.h 헤더파일을 사용해야 하고 반환 값은 성공한다면 파일 디스크립터값을 리턴하고, 실패한다면 -1을 리턴한다. char *pathname 파일의 경로를 포함한 이름을 나타내는 문자열 포인터 int oflags 어떤 방식으로 파일을 오픈 할 것인가에 대한 내용. 여러가지 값들이 있다. mode_t mo..

파이썬 파일 핸들링 (파일 입출력)

1. 파일 오픈, 쓰기 file 함수를 쓰던지 open 함수를 써서 파일을 생성할 수 있다. 파이썬 2.2 이전 버전에는 open으로만 열었다. file 함수를 이용하여 텍스트 파일을 하나 생성하였다. example.txt 라는 파일을 w(쓰기) 권한을 주고 만들었다. 그 뒤에는 여타 언어들의 파일 입출력과 같다. 파이썬은 매우 간결하다. 2. 파일 읽기 이렇게 하면 읽힌다. 여기선 close를 하지 않았는데, 객체가 다른 값으로 치환되거나 사라질 때 close하지 않아도 무리가 없다. 3. 라인 단위로 파일 읽기, 쓰기 여기서는 3가지 메소드가 제공된다. readline, readlines, xreadlines 먼저 readline은 한 번에 한줄 씩 읽는 것이고, readlines는 파일 전체를 라인..

파이썬 struct 모듈 (pack, unpack)

파이썬 자료형과 c언어 구조체형 사이에서 데이터 변환을 할 때 사용하는 것이다. 이 친구들은 당연히 import struct 를 해줘야 사용이 가능하지. C 프로그램이 파일에 저장한 바이너리 정보들을 가져와서 파이썬으로 읽어낼 때, 혹은 파이썬으로 C프로그램이 원하는 형식으로 자료를 파일에 저장할 때 쓴다. struct 모듈의 pack과 unpack, calsize 등을 사용할 수 있는데~ 한번 알아봅시다. - pack( format, v1, v2, v3, ....) - unpack( format, string ) - calcsize( format ) struct 모듈의 기능을 사용하기 위해 파이썬에서 지정해둔 포맷 스트링있다. C언어의 %d 같은 것들. 아마 알아두는게 좋을 듯 싶다. 내가 이걸 왜 할..

파이썬 람다(Lambda) 함수

파이썬 람다 함수에 대해 알아보자. 쉽게 말해서 한줄에 함수를 축약하여 정의해주는 함수이다. 간결하고 코드 구현이 비교적 간단한 파이썬이란 언어에 아주 적합한 함수라고 볼 수있다. lambda args : expression 이런식으로 표현이 가능하다. 예를 들어, a = lambda x,y : x+y b = a(3,4) # b는 5 이거 보다 더 쉽게 함수 이름같은 것도 정의할 필요 없이 쓸 수도 있다. print (lambda x,y : x+y)(20,30) 30 출력. 뭐 이렇게.

반응형