본문 바로가기

분류 전체보기

(43)
systemd timer로 cron 대체하기 리눅스 init으로 많이 사용되는 systemd의 기능 중에 timer가 있습니다. 이 timer는 이름 그대로 일정 시간이 지난 이후에 작업을 수행하도록 하는 기능입니다. 예전의 리눅스에서는 cron이란 프로그램으로 crontab 설정파일을 통하여 일정 시간마다 프로그램을 실행시켰습니다만 가독성이 그리 좋지 못합니다.systemd에서는 가독성이 좋으면서 부가적인 옵션이 많으며 간단하게 설정이 가능하고, 리눅스가 실행되는 도중에는 절대 죽지 않기 때문에 사용자도 모르게 cron 서비스가 죽어버리는 사태도 막을 수 있습니다. 그러므로 만약 지금까지 cron을 사용하셨다면 systemd로 넘어오는게 시스템 자동화와 일률적인 관리 편의성을 위해서라도 바람직할거라 생각합니다. systemd는 모든 설정을 Uni..
systemd로 서비스 관리하기 systemd로 서비스를 관리하기 위해서는 먼저 systemctl이란 명령을 알아야합니다.systemctl은 systemd의 전반적인 설정에 필수적인 명령으로, 앞으로 systemd를 사용하기 위해서 가장 많이 사용할 명령입니다. 먼저 시스템 내부의 유닛들을 보기 위해서 list-units 라는 내부 명령이 있습니다. $ systemctl list-units 이렇게 정말 다양한 unit들이 존재합니다. list-units는 기본적으로 실행중인 유닛들을 표시합니다. 만약 모든 유닛들을 보고싶다면 --all 옵션을 사용하면 됩니다. $ systemctl --all list-units 여기서는 service 유닛들을 다룰 예정이라 이 유닛들만 보기 위해서는 -t 옵션을 사용하면 됩니다. $ systemctl ..
systemd란 무엇인가 근 몇 년 안에 리눅스를 조금이라도 깊게 사용해봤다면 systemd라는 미지의 프로세스가 있다는 것을 눈치채셨을 겁니다. 오래전에 사용하셨던 분이라면 init이 사라져버리고 systemd가 떡하니 PID 1를 차지하고 있는 것을 보고 의아해 하였을 분도 계실겁니다.systemd가 PID 1을 차지하는 것을 보면 init이 퇴출당하고 init이 하던 작업을 물려받은 더 대단한 systemd가 나타났다는 것을 쉽게 유추할 수 있습니다. 도대체 뭐가 그리 좋길래 상당수의 배포판들이 오래전부터 사용해오던 init을 버리고 systemd로 갈아탔는지 알아봅시다. 예전의 PID 1이었던 init은 현재로부터 수 십 년 전에 처음 소개된 프로그램인데 그 때의 구조를 거의 바꾸지 않고 계속 기능이 추가되며 날이 갈수록..
아치리눅스 pacman 사용하기 데비안 계열에서는 apt를, 레드햇 계열은 yum을 사용하듯이 아치리눅스는 pacman이라는 패키지 관리자를 통해 시스템의 패키지들을 관리합니다. pacman 에서는 여러 옵션들을 제공하지만 실제로 사용하는 옵션은 그리 많지 않습니다. 업그레이드, 검색, 설치, 삭제 정도만 알아두면 사용에 큰 어려움이 없습니다. 1. 시스템 전체 업그레이드 pacman에서 시스템의 모든 패키지들을 업그레이드하는 것은 아치리눅스를 사용하면서 가장 많이 사용하게될 명령입니다. 명령은 아래와 같습니다. $ sudo pacman -Syu 이를 실행하면 pacman은 패키지 데이터베이스를 업데이트하고 업데이트가 필요한 패키지를 찾아서 사용자가 업그레이드를 할지 말지 물어봅니다. 2. 패키지 검색 아치리눅스를 사용하다보면 추가적으..
htmlspecialchars로 XSS 공격 방어하기 XSS 공격은 어떤 면에서는 간단히 막을 수 있을 것처럼 보이지만 다르게 보면 상당히 골치아픈 공격 중 하나입니다. XSS 공격을 막는 것은 아주 간단합니다. 사용자의 입력값에서 html 관련 문자 ( " ' &)들을 모두 html entity( " ' &)로 변환시키는 겁니다. 이렇게되면 사용자의 어떠한 입력값도 HTML 요소로 브라우저가 해석하지 않으니 당연히 XSS가 불가능합니다. PHP에서는 이를 간편하게 할 수 있는 htmlspecialchars라는 함수가 존재합니다. php 메뉴얼 인자로 총 1~4개를 받습니다. htmlspecialchars(변환할 문자열[, 옵션[, 인코딩[, 더블 인코드]]]) 첫 번째 인자로 변환시킬 문자열을 입력합니다.두 번째 인자로는 옵션을 입력하..
systemd-resolved 사용하기 전통적으로 리눅스에서 도메인을 IP 주소로 변환 할 때는 먼저 /etc/hosts에 등록되어 있는지 확인하고 만약 없다면 /etc/resolv.conf 에 등록되어 있는 네임서버에 DNS Query를 합니다. 하지만 세월이 지나면서 중간에 다른 방법으로도 변환하는 것이 필요해지면서 NSS(Name Service Switch)가 도입되었습니다. 이것을 사용하면 도메인 뿐만 아니라 사용자 계정, 그룹 등 다양한 정보에 대해 가져오는 위치와 순서를 제어할 수 있습니다. 다만 이것까지 설명하기에는 너무 난잡해질 것 같아서 여기서는 무시하도록 하겠습니다. (nss가 도입되어도 hosts 파일 검사 -> resolv.conf로 DNS에 쿼리한다는 순서는 바뀌지 않았기 때문입니다.) 우선 systemd-resolve..
라즈베리파이에 64비트 아치리눅스 설치하기 2016년 초에 ARMv8 명령어셋을 지원하는 Cortex-A53 CPU를 장착한 라즈베리파이 3B가 출시되었습니다. 하지만 여러 해가 지나도록 어떤 배포판도 64비트를 제대로 지원하지 않았습니다. 그나마 아치리눅스는 3B에서 64비트로 동작하는 버전을 내놓긴 했지만 3B+는 지원하지 않는다는 문구가 있었습니다. 그러던 중 최근에 ArchlinuxARM에 들어가보니 해당 문구가 사라졌습니다! 그래서 저의 라즈베리파이 3B+에 64비트 아치리눅스를 설치해볼 예정입니다. 먼저 준비물은 라즈베리파이 3 이상 버전과 마이크로 SD 컨버터와 리눅스로 돌아가는 컴퓨터가 필요합니다. 라즈비안이 아닌 아치리눅스를 설치하려 하는 사람이라면 적어도 리눅스가 돌아가는 컴퓨터 정도는 가지고 있다고 믿고있습니다! 만약 리눅스를..
아치리눅스 설치하기 아치리눅스는 롤링 업데이트를 통해 상당히 빠른 속도의 업데이트를 지원합니다. 그러므로 배포판의 버전도 존재하지 않고 설치를 하게되면 무조건 최신의 시스템으로 이용할 수 있게 됩니다. 그리고 어떤 프로그램의 새로운 버전이 나왔을 때 레포지토리에 올라오는 속도도 다른 배포판들과 비교 불가능할 정도로 빠르기 때문에 새로운 기능을 빠르게 만나보기에도 좋습니다. 아치리눅스도 우분투나 CentOS처럼 설치를 위한 ISO 파일을 제공합니다. 다만 미니멀리즘을 추구하는 아치리눅스답게 GUI는 지원하지 않습니다.목차1. ISO 다운로드 && USB 설치 2. 설치 전 설정 3. 설치 4. 부트로더 설치 1. ISO 다운로드 && USB 설치 ISO 파일은 여기에서 다운받을 수 있습니다. 토렌트를 사용하거나 밑의 여러 미..