usermod
ex) testuser 계정을 생성하고 생성한 계정을 계정명: user05 홈 디렉터리: /home/user05 , 쉘: /bin/sh, 보조그룹 추가: wheel 그룹도 추가 가입, uid: 2000 으로 계정정보를 수정하시오
-> useradd testuser
-> usermod -u 2000 -md /home/user05 -s /bin/sh -l user05 -aG 'wheel' testuser
패스워드 에이징은 useradd, usermod, passwd, chage 명령으로 설정 가능하다. chage는 패스워드 에이징을 관리하는 별도의 명령어이다.min을 1, max를 90, WARNING(만료일이 되기 전 사용자에게 경고 메세지를 출력)를 1, INACTIVE(패스워드가 만료되고 여기에 지정된 숫자안에 패스워드를 변경하지 않으면 사용자 계정이 잠금상태로 변경)를 3, 만료일을 2025-10-31일로 설정하였다.
groupadd
UID(RUID)는 사용자가 로그인할 때 사용한 계정의 UID이고 EUID는 현재 명령을 수행하는 주체의 UID이다. 실행파일에 setuid가 설정되어 있는 경우 해당 실행파일을 실행한 프로세스의 UID는 사용자 계정의 UID가 아니라 실행파일 소유자의 UID인데 이것이 EUID이다. su 명령을 사용하여 다른 계정으로 전환한 경우 UID와 EUID가 달라진다.
who
w
last
su 명령을 사용하여 root 계정으로 전환하면 모든 권한을 부여하지만 sudo 명령을 사용하여 전환하면 특정 작업만 수행할 수 있는 권한만 부여한다.
일반계정으로 로그인했을 때 root 사용자 권한이 필요한 작업을 수행하기 위해서 root 사용자의 패스워드를 공유하지 않고 sudo 명령을 사용하여 root 사용자의 권한을 사용한다.
wheel이라는 그룹에 속해있는 계정만 sudo 명령을 사용할 수 있다. 그룹을 제거하고 나서 sudo 명령을 사용했을 때 사용이 불가능한 것을 볼 수 있다.
권한부여: /etc/sudoers 파일에 설정, visudo로 직접 바꿔도 됨
%는 그룹 지정할때 사용
사용자계정 호스트 = 명령어 구조로 추가함
root ALL=(ALL) ALL : root 계정의 경우 어디서나 어느 명령이든지 실행 할수 있다는 의미
파일에서 test계정에 대해 test ALL=(ALL) ALL을 해준 후 test계정으로 전환하여 /etc/shadow 파일을 열어보면 test계정의 패스워드로 입력하여 들어가면 파일을 열수 있는 것을 볼 수 있다.
파일이나 디렉터리는 해당 파일이나 디렉터리를 생성한 사용자의 계정과 그룹이 소유자와 소유 그룹으로 설정된다.
chown / chgrp
파일과 디렉터리의 소유자와 소유그룹을 변경한다.
-R : 서브 디렉터리의 소유자와 소유그룹도 변경
소유자만 바꿀때는
chown 계정명 파일명
소유그룹만 바꿀때
chown :그룹명 파일명
chgrp 그룹명 파일명
소유자와 소유그룹 둘다바꾸려면
chown 계정명:그룹명 파일명
로그는 커널과 리눅스 시스템이 제공하는 여러 서비스와 응용 프로그램이 발생시키는 메세지이다. 로그파일 소유자는 대부분 root 계정이고 접근 권한은 대부분 600이다. 보안적인 측면에서 일반 사용자 계정에서 로그파일의 내용을 함부로 볼 수 없게 하는것이 바람직하기 때문이다.
systemd 시스템에서 rsyslogd와 systemd-journald 두 데몬에 의해서 관리된다. systemd-journald는 부팅이 시작되는 순간부터 로그를 수집하고 이후에 rsyslogd로 syslog를 전달하여 각 파일 별로 로그를 저장한다.
지정된 로그파일에 계속해서 로그를 저장하면 로그파일의 크기가 과도하게 커질 수 있다. 이 경우, 파일을 읽기위해 보다 많은 메모리가 필요할 뿐 아니라 로그를 확인하고 분석하는 것도 어렵다. 따라서 로그파일의 크기가 너무 커지지 않도록 제한하는 것이 순환이다.
로그 파일이 일정 크기에 도달하거나 일정 기간이 지나면 파일을 백업하고, 새롭게 로그 파일을 생성한다. 백업된 파일도 일정 기간이 지나거나 백업 파일의 개수가 많아지면 삭제하도록 한다. 이 과정이 로그 파일의 순환이다.
유닉스나 리눅스 계열 시스템에서 로그를 기록하기 위한 표쥰 프로토콜인 syslog를 사용하여 로그를 저장하는 프로세스이다.
/etc/rslog.conf 파일을 사용하여 저장할 로그의 종류 및 우선순위를 설정할 수 있고, 수신한 로그를 /var/log 디렉터리의 각 파일로 전달한다.
이 파일의 RULES 부분에는 rsyslog에 의해 전달되는 로그의 규칙들이 정의되어 있다. 각 라인별로 하나의 로그 규칙이 정의되어 있고 공백을 기준으로 앞부분을 필터(Filter), 뒷부분을 행동(Action)이라고 한다.
cron.err 보다 높은 등급의 에러가 발생하면 /var/log/cron1에 로그가 저장되게 만든다. 이후 rsyslog를 재시작 하기 위해 systemctl restart rsyslog를 진행한다. logger -p cron.info "cronlog1" -> info는 err보다 낮은 등급이므로 cron1에 저장이 안된다.
logger -p cron.crit "cronlog2" -> crit는 err보다 높은 등급이므로 cron1에 저장된다.
systemd-journald는 시스템이 부팅을 시작했을 때부터 발생하는 모든 이벤트를 수집하여 구조화된 바이너리 형태의 저널데이터로 저장한다.
이로 인해 journal 파일은 cat으로 읽을 수 없고 journalctl 명령을 사용해야 읽을 수 있다. 저널 데이터는 /run/log/journal에 위치하고 있기 때문에 시스템이 재부팅 되면 저널 데이터는 사라진다.
journalctl
저널을 영구적으로 저장하기 위해서는 임시 파일시스템이 아닌 위치에 로그를 저장할 수 있는 디렉터리를 생성하고 기존의 저널 데이터가 저장되던 경로인 /run/log/journal 디렉터리와 동일하게 설정하면 된다.
단점 : journal을 영구적으로 저장하도록 설정하는 경우 디스크 용량 부족이 발생할 수 있다.