리눅스

[리눅스/유닉스] 사용자와 그룹 및 파일 허가권

코딩하는 공부방 2022. 4. 24. 20:29

 

 

안녕하세요😀

오늘은 리눅스의 사용자 추가 및 삭제, 그룹 추가 및 삭제에

대해서 설명하고 예제를 보여주면서

설명을 해드리겠습니다.


사용자와 그룹

리눅스는 여러 사용자가 하나의 OS를 사용하는 다중 사용자 시스템(Multi-User System)이다.

주로 서버로 사용되는 리눅스는 여러 사용자가 동시에 접속하는 경우가 대부분이고, 다양한 사용자가 하나의 OS에 접근하게 된다. 따라서 리눅스에서는 사용자를 관리하고 사용자의 그룹을 관리하는 것이 매우 중요합니다.

 

리눅스의 모든 권한을 가진 super user가 있습니다. 일반적으로 root 이름의 유저가 super user입니다.

또한 모든 사용자는 하나 이상의 그룹에 소속이 되어있습니다.

사용자는 /etc/passwd 파일에 정의되어있습니다.

저는 ubuntu라는 사용자를 미리 정의를 해주었는데요. 왼쪽 그림에는 root인 super user가 있으며, 오른쪽에는 ubuntu 사용자가 그룹번호 1000번 사용자 번호 1000번으로 정의가 되어있습니다.

위에 보시면 암호가 x로 나와있는데 암호는 /etc/shadow에 암호화되어서 정의가 되었습니다.

추가 정보가 별로 신경을 쓸 필요가 없습니다.

새롭게 정의가 되어있는 user 같은 경우는 /home/사용자 이름으로 정의가 되어있습니다.

※사용자 이름: 암호: 사용자 ID:사용자가 소속된 그룹 ID:추가 정보: 홈 디렉터리: 기본 쉘

 

사용자 그룹

그룹은 /etc/group 파일에 정의가 되어있습니다.

각 행의 의미는 다음과 같습니다
그룹명:비밀번호:그룹 id 보조: 그룹 사용자

 

사용자 그룹 명령어

  • adduser - 새로운 사용자를 추가
    ex) #adduser newuser1
    사용자 생성 시 옵션
     --uid : ID 지정
     --gid : 그룹 지정
     --home : 홈 디렉터리 지정
     --shell : 쉘 지정
  • passwd - 사용자의 비밀번호를 저장하거나 변경
    ex) #passwd newusesr1
  • usermod - 사용자의 속성을 변경
    ex) #usermod  -groups ubuntu newuser1
  • userdel - 사용자를 삭제
    ex) #userdel newuser2
  • chage - 사용자의 암호를 주기적으로 변경하도록 설정
    ex) #chage -m 2 newuser1
  • groups - 현재 사용자가 속한 그룹을 보여줍니다.
    ex) #groups
  • groupadd - 새로운 그룹을 생성
    ex) #groupadd newgroup1
  • groupdel - 그룹을 삭제
    ex) #groupdel newgroup2

유저 생성

adduser 명령어 사용

 

adduser 명령어를 사용을 하여서 비밀번호를 1234로 user을 만들어주었습니다.

 

/etc/passwd and /etc/group 파일 보기

user1을 만들어 준 것을 /etc/passwd tail 명령어를 사용을 하여서 파일을 보았다. user1의 사용자 uid도 1001번 gid도 1001번인 것을 알 수가 있습니다. 그리고 오른쪽 그림을 보시면 user1의 그룹 아이디를 지정을 안 해주면 user1을 만들어줄 때 같이 그룹아이디 1001번인 그룹 user1을 같이 만들어줍니다.

 

하지만 완전하게 그룹을 만들기 위해서 먼저 그룹이 만들어진 상태에서 사용자에게 그룹을 정해주는 게 올바른 방법입니다.

 

 

userdel 명령어에 -r 명령어까지 추가해서 user1 사용자를 삭제를 시켜줍니다.

그러고 나서 groupadd 명령어를 이용해서 ubuntugroup을 만들어 주었습니다.

위에 그림을 보시면 ubuntugroup id번호는 1001번인 것을 알 수가 있습니다.

 

 

 

adduser에 --gid 명령어로 그룹아이디 1001번으로 지정을 해서 user1과 user2를 만들었습니다.

위에 사진을 보시면 user1user2의 그룹아이디가 1001번으로 지정이 된 것을 알 수가 있습니다.

 

 

user1과 user2의 비밀번호를 제가 일부러 1234로 똑같이 만들었습니다.

/etc/shadow 파일을 보시면 user1과 user2의 비밀번호가 다르다는 것을 알 수가 있습니다. 암호화를 해도 번호를 역으로 유추를 해서 암호를 맞출 수가 없습니다.

 

 

새로운 만든 사용자 같은 경우는 /home 디렉터리 밑에 사용자가 정의가 되어있는 것을 알 수가 있습니다.

실제 사용자의 파일을 자세히 보면 3개의 파일이 자동으로 정의되어있는 볼 수가 있는데 실제로 파일  /etc/skal 디렉터리 안에 복사가 되어서 유저가 만들어집니다.  앞으로 사용자를 만들면서 자동으로 배포할 파일이 있으면 /skal 폴더 안에다가 넣어서 만들어주시면 됩니다.

 

 

파일과 디렉터리의 소유와 허가권

파일 유형은 경우에는 디렉터리일 경우에는 d, 일반적인 파일일 경우에는 -가 표시가 됩니다.

다음은 파일의 허가권인데 

 

 

r은 read(읽기), w는 write(쓰기) , x는 excute(실행)의 약자입니다.

  1. 첫 번째 "rw-"는 소유자(User)의 파일 접근 권한
  2. 두 번째 "r--"는 그룹(Group)의 파일 접근 권한
  3. 세 번째 "r--"는 그 외의 사용자(Other)의 파일 접근 권한

숫자로도 표시가 가능합니다(8진수 사용)

 

chmod 명령어

-파일 허가권 명령어
ex) # chomod 777 sample.txt

파일 소유권(Ownership)

- 파일을 소유한 사용자와 그룹을 의미

chown/chgrp 명령

- 파일의 소유권을 바꾸는 명령어
ex) # chown ubuntu.ubuntu sample.txt 또는
     # chown ubuntu sample.txt 및 # chgrp ubuntu sample.txt

 

실습

 

nano 명령어를 이용해서 test.txt 파일을 만들어줍니다.

파일을 실행을 해주려고 하는데 허가 거부되었습니다. 왜냐하면 test.txt 파일의 권한이 실행이 권한이 없기 때문입니다.

그래서 chmod 명령어를 이용해서 실행 권한을 추가시켜주니까 명령어가 실행이 됩니다.

 

 

chown 명령어와 chgrp 명령어를 이용하여서 사용자와, 그룹의 권한을 ubuntu로 바꾸어 주었습니다.

su - ubuntu 명령어로  ubuntu 사용자로 바꿔 test.txt 파일을 보려고 하는데 

허가 거부라고 떴습니다. 왜냐하면 root 파일 같은 경우가 ubuntu 사용자에게 권한이 없기 때문입니다.

그래서 /home/ubuntu로 test.txt 파일의 위치를 옮겨주고 실행을 하면 됩니다.

 

※chown 경우에는 매우 중요한 명령어 야서 super user만 사용 가능하게 해났습니다. 이것이 되면 보안상으로 매우 큰 문제가 일어날 수 있습니다.