사용자 및 파일 권한 관리 명령어
리눅스 서버 관리 명령어
리눅스에서 해킹할 때 일반 계정이나 root 계정을 탈취해서 로그인한 후 공격 대상에 침입하는데 파일의 권한을 변경하여 악성 코드를 심거나 파일을 변조하기도 한다
이러한 해킹을 수행하고, 방어하기 위해서 리눅스의 핵심 구성 요소인 사용자와 파일의 권한에 대한 학습이 필요하다
파일 권한
ls -l, 파일 형식과 소유자에 대한 권한 정보 출력

ls -l 명령어를 실행하면 파일 목록 옆에 -rw와 같은 파일 형식과 소유자에 대한 권한 정보가 출력된다
먼저 drwxrw-xr-x 부분은 파일 형식과 권한을 표시하고, 그 뒤 kang kang 부분은 해당 파일과 디렉터리의 사용자와 그룹의 소유권을 표시한다
파일 권한 설명

r w x로 표현되는 파일과 디렉터리의 권한 종류는 다음과 같다
종류 / 파일/ 디렉터리
r (읽기권한) / 파일 읽기, 복사 가능 / ls 명령어로 디렉터리 내 목록 조회 가능
w (쓰기권한) / 파일 수정, 이동, 삭제 가능 / 디렉터리 내 파일을 생성, 삭제 가능
x (실행권한) / 파일 실행 가능 / cd 명령어로 디렉터리 접근 가능
소유권 유형

예시로 사용자와 권한 종류 학습

첫 번째 필드가 d이니 파일 형식은 디렉터리이다
2 ~ 4 번째 사용자 권한은 rwx이므로 사용자는 읽기, 쓰기, 실행 권한을 가지고 있다
5 ~ 7 번째 그룹 권한과 8 ~ 10 번째 기타 사용자 권한은 모두 r-x이므로 읽기와 실행 권한만 가지고 있다
whoami, 현재 사용자 확인
whoami는 현재 로그인한 사용자가 누구인지 확인하는 명령어로, 명령을 실행하면 현재 접속한 사용자의 이름이 출력된다

adduser, useradd, 사용자 추가
신규 사용자를 추가할 때는 adduser 혹은 useradd 명령어를 사용한다 형식은 adduser <사용자명>, -d 옵션으로 홈 디렉터리를 변경하거나, -g <그룹 ID=""> 혹은 -G <그룹명>으로 추가 사용자의 그룹을 지정할 수도 있다그룹명>그룹>사용자명>

먼저 testuser 이름으로 사용자를 생성하고

그룹 ID를 1로 지정한 testuser2 사용자를 생성한다


후에 사용자 정보를 확인하기 위해 /etc/passwd라는 사용자 정보가 담긴 파일을 cat 명령어로 출력하면 testuser 사용자와 그룹 ID가 1로 지정된 testuser2 사용자를 확인할 수 있다
/etc/passwd 파일
/etc/passwd 파일에는 사용자의 정보가 사용자 id로 정렬된 상태로 저장되어 있다
사용자명:비밀번호:사용자 ID:그룹 ID:코멘트:홈 디렉터리:기본 셸
비밀번호는 암호화로 되어 x로 나오고 /etc/shadow 파일에 저장된다
cat 명령어
파일의 내용을 간단하게 출력하기 위해 사용하는 명령어
userdel, 사용자 삭제
기존 사용자를 제거하려면 userdel 명령어를 사용해야 한다 형식은 userdel <사용자명>사용자명>

usermod, 사용자 변경
사용자의 설정 (홈 디렉터리, 비밀번호, 그룹명 등)을 변경하고자 할 때 usermod 명령어를 사용한다 형식은 usermod <옵션> <사용자명>이고, 주요 옵션으로는 -d (홈 디렉터리 변경), -g (그룹 ID 변경), -p (비밀번호 변경) 등이 있다사용자명>옵션>

testuser 사용자의 그룹 ID를 1로, 홈 디렉터리를 /tmp로 변경

testuser2 사용자 정보는 보이지 않고, testuser 사용자의 그룹 ID와 홈 디렉터리가 변경된 것을 확인할 수 있다
chmod, 파일 권한 변경
파일과 디렉터리의 소유자별 읽기, 쓰기, 실행 권한을 변경하고자 할 때 chmod 명령어를 사용한다
chmod 명령어 형식은 chmod <권한> <파일명>이고, 권한은 r, w, x 기호를 이용해 표현하는 방식과 2진수의 비트 형태로 표현하는 방식이 있다파일명>권한>
ex) chmod u+rw abc.txt라고 지정하면 소유자 권한에 읽기, 쓰기 권한을 추가한다는 것이다
비트 형태 표현은 아홉 자리로 앞에 세 자리는 사용자, 중간 세 자리는 그룹, 마지막 세 자리는 기타 사용자에 대한 권한을 2진수 형태로 표현한다

먼저 copy2.txt에 대한 권한을 확인

copy2.txt의 소유자(u)에 쓰기 권한을 제거(-w)하였더니 w가 변경된 모습을 볼 수 있다

비트를 이용해 copy2.txt의 소유자, 그룹, 기타 사용자 권한을 원래대로 변경하였다
6 (rw-) 6 (rw-) 4 (r–)로 파일 권한을 변경하였고
ls- l로 권한을 확인해보면 원래대로 변경된 것을 확인할 수 있다
chown, 파일 소유권 변경
파일과 디렉터리의 소유자를 변경하기 위해 chown 명령어를 사용한다
chown <변경 사용자=""> <파일명> 형식으로 사용하며, 소유권 변경 명령어도 파일 소유자와 슈퍼 사용자(root)만 실행이 가능하다파일명>변경>

copy2.txt의 소유자를 root로 변경하고 ls -l을 사용해서 확인해보았더니 변경된 것을 볼 수 있다
chgrp, 파일 그룹 변경
chown 명령어와 유사하게 파일의 그룹을 변경하기 위해서 chgrp 명령어를 사용할 수 있다 chgrp <변경 그룹=""> <파일명> 형식으로 변경이 가능하다파일명>변경>

그룹이 root로 변경된 것을 확인할 수 있다
umask, 초기 파일 접근 권한 설정
파일이나 디렉터리를 생성할 때 적용되는 접근 권한을 umask 명령어를 사용해 설정할 수 있으며, 옵션 없이 실행하면 현재 초기 파일 접근 권한이 출력된다
-s 옵션을 활용하면 비트로 출력되는 접근 권한 값을 r, w, x와 같은 문자로 출력 가능하다
초기 파일 접근 권한을 변경하려면 umask <마스크 값="">을 입력하면 된다마스크>
umask의 비트 계산 방법은 파일의 최대 권한 (666), 디렉터리 최대 권한 (777)에서 마스크 값을 빼는 것으로, 그 결과에 따른 비트 값이 기본 파일 접근 권한이 된다

-
현재 umask 정보를 확인하였고 0002인 것을 확인완료
-
touch 명령어를 사용해 umasktest.txt 파일을 생성완료
-
마스크 정보를 002에서 222로 변경
-
변경된 마스크 상태에서 umasktest2.txt라는 신규 파일 생성
-
umasktest로 된 파일 출력
댓글남기기