[RHEL6] 계정관리 명령어들 1탄(chfn, chgrp, chmod)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 계정관리 명령어들 1탄(chfn, chgrp, chmod)

by 찬찬이 아빠 2019. 12. 10.
반응형
  1.chfn(사용자 정보 변경)

 1) 경로 : /usr/bin/chfn

 2) 요약 : 패스워드 파일 등의 변경 없이 사용자 기본 정보를 변경

 3) 사용 방법 : chfn [옵션] [사용자계정]

  - 사용자 계정 : 정보를 변경하고 싶은 사용자 이름

                      공백일 경우 현재 계정의 정보를 변경

 4) 옵션

  -f, --full-name : 사용자 전체 이름을 변경(사용자 계정과 다름)

  -h, --home-phone : 사용자 집 전화번호를 변경

  -o, --office : 사용자의 직장명을 변경

  -p, --office-phone : 사용자의 직장 전화번호를 변경

  -u, --help : 사용법을 출력

  -v, --version : 버전 정보를 출력

 

 5) 추가 설명

  chfn 명령어는 등록된 사용자의 정보를 변경할 때 사용합니다.

  서버 관리자라면 모든 계정의 사용자 정보를 변경할 수 있습니다.

  chfn 명령은 /etc/passwd에 저장된 정보를 변경하므로 vim으로 이 파일을 열어 변경해도 됩니다.

 

 예) admin 계정의 사용자 정보 변경

# chfn admin

Changing finger information for admin.
Name [] : 찬찬이아빠
Office [] : chanchan
Office Phone [] : 123-123-1234
Home Phone [] : 123-123-1234

Finger Information changed.

 

 사용자 정보를 확인할 때는 finger 명령어를 사용합니다.

# finger admin

Login: admin                          Name : 찬찬이아빠
Directory: /home/admin                Shell: /bin.bash
Office : chanchan, 123-123-1234       Home Phone : 123-123-1234

 

 

 

  2.chgrp(그룹 변경)

 1) 경로 : /bin/chgrp

 2) 요약 : 파일이나 디렉터리의 그룹을 변경

             chmod와 함께 사용하여 파일 접근 권한을 설정

 3) 사용 방법 : chgrp [옵션] [그룹명] 파일명

  - 그룹명 : 변경될 그룹명 혹은 그룹 ID(GID)

  - 파일명 : 그룹을 변경하고 싶은 파일 또는 디렉터리 이름

 4) 옵션

  -c, --changes : 그룹이 변경되는 파일만 출력

  -f, --silent, --quiet : 그룹이 변경되지 않는 경우에도 에러를 출력하지 않음

  --help : 사용법을 출력

  -R, --recursive : 하위 디렉터리에 있는 모든 디렉터리와 파일의 그룹을 변경

  --reference=filename : 지정한 파일을 참조하여 그룹을 변경

  -v, --verbose : 명령어의 실행 결과를 상세하게 출력

  --version : 버전 정보를 출력

 

 5) 추가 설명

  chgrp는 파일이나 디렉터리의 그룹을 변경하는 명령어입니다.

  모든 파일이나 디렉터리에는 그룹 속성이 있고, 현재 사용자가 속한 그룹에 따라 파일 읽기, 쓰기 권한이 달라집니다.

  그룹에 대한 정보는 /etc/group에서 얻을 수 있습니다.

  그룹은 그룹 이름이나 그룹ID(GID)로 지정됩니다.

  그룹의 변경은 파일의 소유자나 시스템 관리자만이 할 수 있습니다.

 

  예) test 디렉터리와 하위 디렉터리와 파일을 모두 chan 그룹으로 변경

# chgrp -R chan test

 

※ 기본 그룹 : /etc/group 파일을 살펴보면 우리가 지정하지 않은 그룹이 많이 보일 것입니다.

   다음은 설치하는 중에 자동으로 생성되는 기본 그룹입니다.

그룹 GID 구성원
root 0 root
bin 1 root, bin, daemon
daemon 2 root, bin, daemon
sys 3 root, bin, adm
adm 4 root, adm, daemon
tty 5  
disk 6 root
lp 7 daemon, lp
mem 8  
kmem 9  
wheel 10 root
mail 12 mail
news 13 news
uucp 14 uucp
man 15  
games 20  
gopher 30  
dip 40  
tp 50 ftp
nobody 99  
users 100  

이와 같은 기본 그룹은 대개 시스템의 기본 사용자와 관련이 있는 것으로, 대부분은 특정 프로그램을 구동하기 위해서 사용됩니다. 이 내역은 어떤 프로그램을 설치하느냐에 따라 달라지지만 root와 daemon, sys, adm, disk, bin, wheel 등 root와 관련있는 대부분 그룹은 필수적으로 설치됩니다. 보안상 일반 사용자 계정을 위와 같은 기본 그룹에 포함시키면 안됩니다.

 

 

 

 

  3.chmod(권한 변경)

 1) 경로 : /bin/chmod

 2) 요약 : 파일의 접근 권한을 변경

 3) 사용 방법 : chmod [옵션][모드][파일명]

  - 모드 : 새로운 모드(접근 권한)

  - 파일명 : 모드를 변경하고 싶은 파일이나 디렉터리 이름

 4) 옵션

  -c, --changes : 변경된 파일 정보를 출력

  -f, --silent, --quiet : 대부분의 에러 메시지를 출력하지 않음

  --help : 사용법을 출력

  -R, --recursive : 하위 디렉터리에 있는 모든 파일 및 디렉터리를 변경

  --reference=filename : 지정한 파일을 참조하여 권한 변경

  -v, --verbose : 각 파일 정보를 상세히 출력

  --version : 버전 정보를 출력

 

 5) 추가 설명

 chmod 명령어는 파일 및 디렉터리의 접근 구너한을 변경하는 명령어입니다.

 파일의 소유자나 시스템 관리자만이 chmod를 사용할 수 있으며 지정한 파일이나 디렉터리에 대한 파일 소유자, 파일 그룹, 다른 사용자의 접근 권한을 각각 설정할 수 있습니다.

 파일이나 디렉터리는 모두 각각의 권한을 가지고 있습니다.

 파일이나 디렉터리의 권한은 ls -l 명령어로 볼 수 있습니다.

# ls -l

-rwx--xr--   1  apache  chan  4.0K Dec 10 17:15 test.txt

 

 

ls -l 명령은 모드(-rwx--xr--), 디렉터리 안의 파일 개수(1), 소유자(apache), 그룹(chan), 용량(4.0K), 마지막 파일 수정 시간(Dec 10 17:15), 파일명(test.txt) 순으로 정보를 출력합니다. test.txt 파일은 소유자인 apache에게 읽기, 쓰기, 실행 권한이 있고, chan 그룹 사용자에게는 실행 권한이 있으며 기타 사용자에게는 읽기 권한만 있습니다.

 

모드는 파일 접근 권한을 뜻합니다. 모드는 총 10개 칸으로 이루어져 있고, 파일인지 디렉터리인지를 구분하는 첫 칸을 제외하고 3칸씩 나누어 소유자/그룹/다른사용자에 대한 권한을 설정합니다.

 

모드 설명 8진수 표현
d--------- 파일 및 디렉터리 구분(파일 : -, 디렉터리 : d)  
-r-------- 파일 및 디렉터리 소유자에게 읽기 권한이 있음 400
--w------- 파일 및 디렉터리 소유자에게 쓰기 권한이 있음 200
---x------ 파일 및 디렉터리 소유자에게 실행 권한이 있음 100
----r----- 파일 및 디렉터리 그룹에게 읽기 권한이 있음 40
-----w---- 파일 및 디렉터리 그룹에게 쓰기 권한이 있음 20
------x--- 파일 및 디렉터리 그룹에게 실행 권한이 있음 10
-------r-- 다른 사용자에게 읽기 권한이 있음 4
--------w- 다른 사용자에게 쓰기 권한이 있음 2
---------x 다른 사용자에게 실행 권힌이 있음 1

 

 6) 기호(rwx)를 사용한 접근 권한 변경

 8진수 표현을 사용하는 것 보다 직관적으로 접근 권한을 변경할 수 있습니다. 파일의 소유자(User), 그룹(Group), 다른 사용자(Other)의 첫 글자를 약자로 사용하여 접근 권한을 설정합니다. 소유자, 그룹, 다른 사용자의 접근 권한 설정을 한번에 처리할 수 있습니다. 소유자와 그룹에 읽기/쓰기 권한을 주고, 다른 사용자에는 실행 권한을 제거합니다. 중복 설정 구분은 쉼표(,)를 사용합니다.

# chmod ug+rw, o-x test.txt

 

 ※ 웹 페이지 구성 파일은 기본적으로 644 상태입니다.

    웹 서버 데몬(nobody 등)은 other이기 때문입니다.

 

<사용자 기호>

u user 파일 및 디렉터리의 소유자
g group 파일 및 디렉터리의 그룹
o other 다른 사용자
a all 소유자, 그룹, 다른 사용자 모두(아무 표시 안할 경우 기본으로 설정됨)

 

<퍼미션 기호>

r read 파일 및 디렉터리에 읽기 권한을 줌
w write 파일 및 디렉터리에 쓰기 권한을 줌
x execute 파일 및 디렉터리에 실행 권한을 줌
s set user(group) ID 파일 실행 시 파일의 소유자 또는 그룹 권한으로 실행함
t sticky bit sticky 비트를 설정함
u user 현재 소유자의 권한 설정과 같은 내용으로 변경함
g group 현재 그룹의 권한 설정과 같은 내용으로 변경함
o other 현재 다른 사용자의 권한 설정과 같은 내용으로 변경함
l locking 강제로 파일을 잠금

 

<설정기호>

+ 권한 허가 지정한 권한을 허가함
- 권한 금지 지정한 권한을 금지시킴
= 권한 지정 지정한 권한만 허가하고, 나머지는 금지시킴

 

 7) 8진수를 이용한 권한 변경

 네 자리의 8진수를 이용하여 파일 및 디렉터리의 권한을 변경합니다. 기본 8진수 테이블에 있는 숫자를 더해서 사용합니다. 예로 test.txt 라는 파일에 소유자는 읽기/쓰기/실행 권한을, 그룹은 읽기 권한을, 다른 사용자는 읽기 권한을 준다면 파일 소유자 위치에 읽기(4), 쓰기(2), 실행(1)을 더하여 7을 넣습니다. 그룹과 다른 사용자는 읽기 권한만 주어 4를 넣어줍니다.

 

# chmod 744 test.txt

 

 8) 8진수 모드 변경

 8진수를 사용하여 모드를 변경할 수 있습니다.

 

<파일 및 디렉터리 소유자>

0400 : 파일 및 디렉터리의 소유자에게 읽기 권한을 줌

0200 : 파일 및 디렉터리의 소유자에게 쓰기 권한을 줌

0100 : 파일 및 디렉터리의 소유자에게 실행 권한을 줌

 

<파일 및 디렉터리 그룹>

0040 : 파일 및 디렉터리의 그룹에게 읽기 권한을 줌

0020 : 파일 및 디렉터리의 그룹에게 쓰기 권한을 줌

0010 : 파일 및 디렉터리의 그룹에게 실행 권한을 줌

 

<다른 사용자>

0004 : 다른 사용자에게 읽기 권한을 줌

0002 : 다른 사용자에게 쓰기 권한을 줌

0001 : 다른 사용자에게 실행 권한을 줌

 

<소유자 권한 실행 모드>

4000 : 파일 실행 시 파일의 소유자 또는 그룹 권한으로 실행됨

2000 : 파일 실행 시 파일의 소유자 또는 그룹 권한으로 실행됨

1000 : sticky 비트

 

 9) 사용 예

test.txt 파일의 접근 권한을 소유자는 읽기/쓰기/실행으로, 그룹은 쓰기로, 다른 사용자는 실행으로 변경해 봅니다.

 

기호를 사용하는 방법
# chmod u=rwx,g=w,o=x test.txt

8진수를 사용하는 방법
# chmod 721 test.txt

 

 10) SetUID와 SetGID

 파일이나 디렉터리의 파일 형식과 권한에 대한 내용은 해당 파일의 inode에 16비트로 저장되어 있습니다. 이 중 첫번째부터 12번째 비트는 파일의 실행 권한에 대한 것입니다.

파일 ID 비트 파일 실행 비트 소유자 권한 비트 그룹 권한 비트 다른 사용자 권한 비트
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

그 중 10 ~ 12 번째 비트는 실행 파일을 어떤 방식으로 실행 시킬지에 대한 내용을 정의합니다. 이 부분의 포맷은 앞서 말한 setuid(4000), guid(2000), sticky(1000) 비트입니다. 이 비트는 이 파일의 속성이 디렉터리일 경우 무시됩니다.

 - RUID, RGID : 실제 소유자와 그룹. 실제 사용자를 체크하며 이들의 값은 로그인 할 때 얻습니다.

 - EUID, EGID, SGID : 파일 접근 권한을 체크하는데 사용합니다. OS가 이 파일을 실행된 프로세스로 다른 파일에 접근할 때 사용하는 권한입니다. 보안과 관련이 있습니다.

 

 실행 파일이 실행되면 메모리에 적재되어 프로세스가 생성됩니다. 이 시행 파일을 소유주 외의 사람이 시행하다 저장해야 할 경우 처리하기 위해 프로세스와 파일 간에 권한을 체크할 수 있는 통로로 사용하는 것이 EUID/EGID입니다. 어떤 프로그램을 실행할 때 프로세스의 EUID/EGID는 대개 RUID/RGID입니다.

 

 그러나 프로그램에 따라서는 이 파일이 실행될 때 프로세스의 EUID가 파일 소유주가 되도록 설정하거나, EGID가 파일 그룹이 되도록 설정할 수도 있습니다. 예를 들어 passwd 같은 프로그램은 어떤 사람이 실행하더라도 프로세스는 관리자의 권한으로 동작합니다. 즉 이 프로세스가 실행되며 내리는 모든 명령과 권한은 관리자가 사용하는 것과 공일하다는 것입니다. 이때 프로그램의 내부에 쉘을 띄우는 코드가 있다면 이렇게 만들어지는 쉘은 관라자의 쉘이 됩니다. 때문에 함부로 이와 같은 권한을 사용하는 것은 위험한 일입니다.

반응형

댓글