}

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate on the chrome↓↓↓===***===>

2019년 8월 20일 화요일

groupadd , gpasswd , id , groupmod 매우 자세히 설명!

안녕하세요 마무입니다~  오늘도 저의 블로그에 찾아 주셔서 정말 감사합니다!

오늘은 리눅스 그룹과 관련된 명령어 "리눅스 그룹이란", "groupadd", "gpasswd", "id" ,"groupmod"와 리눅스에서 그룹에 대한 정보가 적히는 "/etc/group 파일", 'wheel 그룹'에 대해서 포스트해보겠습니다.


-----목차-----

1. 리눅스 그룹이란

2. groupadd

3. gpasswd

4. id

i) wheel 그룹이란?

5. groupmod

--------------------


더 자세한 정보는 
에서 찾아보세요!



1. 리눅스 그룹이란









한번 파일을 여는 명령어 {tail, more, vim,}중 아무거나 하나를 이용해 '/etc/group'파일을 열어보면 
위 이미지처럼 ':(콜론)'으로 구별된 4개의 영역이 나옵니다.









앞에서부터 순서대로 그룹이름:패스워드(없는 것):GID:그룹에 속한 유저들 입니다.

그런데 사진을 보시면 "GID" 오른쪽은 분명 '그룹에 속한 유저들'이라 하였는데, 아무것도 안 써있죠?

왜냐면 그룹 이름과 똑같은 유저는 안 써있게 리눅스 시스템이 설계됐기 때문입니다. (물론 bob그룹에 bob유저를 뺐다가 다시 넣으면 오른쪽에 생깁니다)

자 그럼 가장 근본적인 질문이 나와야죠

'왜 리눅스에선 번거롭게 그룹이란 것을 사용하나요???'

음 일단 이 질문의 대답은 2가지로 할 수 있을 것 같습니다.

먼저 첫 번째, '그룹'이란 시스템은 리눅스만 사용하는 게 아니라 대부분의 운영체제에서 사용됩니다.

리눅스만 그런 것이 아니라, 우리가 대부분 개인 PC에 사용하는 Windows 운영체제도 '그룹'이란 시스템을 사용합니다.





자 이건 저의 '개인 노트'란 폴더에 마우스 우클릭 -> 속성을 들어가면 나오는 창인데요,
위에 보시면 'SYSTEM', 'Administrators' 그리고 제가 검은색으로 가린 '저'라는 유저가 나오는 걸 볼 수 있습니다.

위 사진에 제가 주황색으로 표시한 화살표를 보시면, '그룹 또는 사용자 이름'이라고 쓰여있죠? 이처럼 윈도우즈도 그룹이란 것을 사용한다는 것을 보여드리려고 한 겁니다.

보통 GUI인 윈도우즈에선 이렇게 마우스 오른쪽 -> 속성으로 파일에 대한 권한과 유저, 그룹, other를 변경할 수 있습니다.

잠시 TMI를 말하자면 리눅스에선 기본적으로 모든 권한을 가진 'ROOT'가 있듯이, 윈도우즈 운영체제는 최고의 권한을 가진 "SYSTEM"과 관리자 권한인 "Administrators"가 있습니다.

사실 저희는 리눅스에 대해서 공부 중이므로, 나중에 윈도우 운영체제에 대해 포스트를 할 일이 있으면 더 자세한 정보는 그때 쓰겠습니다.

어쨌든 리눅스든 윈도우즈든 대부분의 운영체제는 '그룹'이란 것을 사용한다는 것이죠.


두 번째, 그럼 왜 '그룹'을 사용하느냐?

당연히 관리적인 측면에서 그게 더 편하기 때문입니다만, 이렇게만 말하면 당연히 공감 안되쥬? 

윈도우즈와 달리 다수가 사용하는 서버용으로 개발된 리눅스이기 때문에, 서버를 사용하는 회사에서 사용하는 걸로 예시를 들어볼게요

'인사 팀'과 '개발 팀'이 있다고 해보죠, 인사 팀에서 개인의 회사 사원의 연봉 정보가 적힌 파일은 같은 인사 팀 내에서만 볼 수 있게 하려고 한다고 합시다.

그렇잖아요, 아무래도 각 개인의 연봉은 비밀로 하는 게 좋으니까요 

그리고 개발 팀에선 개발에 대해서 아무것도 모르는 다른 사원들이 개발에 사용되는 소스 코드를 건드리는 것을 방지하기 위해 개발 팀만 볼 수 있게 하려 한다고 합시다.
 
이럴 때 인사 팀만을 위한 그룹 'HRteam'을 만들고, 개발 팀을 위한 그룹 'DEVteam'을 만들고
인사 팀에 속한 유저들은 모두 메인 그룹을 'HRteam'으로, 개발 팀에 속한 유저들은 메인 그룹을 'DEVteam'으로 변경하는 것이죠. 

그러면 이후 인사 팀이 파일을 만들면, 자동으로 파일의 소유 그룹은 'HRteam'으로, 개발 팀은 소유 그룹이 'DEVteam'으로 됩니다.

그리고 그렇게 소유 그룹이 정해진 파일은 당연히 '소유 그룹'에 속한 유저들만 이용할 수 있는 것이죠.

뭔가 실제 사용 예시를 들어보니 '그룹'이란 시스템은 당연하죠?

자 그럼 한번 리눅스에서 '그룹'이란 것을 만들어보고, 그 그룹에 여러 유저들을 넣어보겠습니다.




2. groupadd







useradd때와 비슷하게 그룹을 만드는 명령어는
groupadd [옵션] [그룹이름] 
입니다

당연히 이 명령어도 '옵션'이 있지만, 옵션은 옵션(선택사항)일 뿐... 저는 만들 때 옵션 붙이는 건 별로 안 좋아하고 그룹을 만든 다음 편집하는 걸 선호합니다

윗 사진처럼  "groupadd bob_soul" 명령어를 쳐서 'bob_soul'이란 그룹을 만들어봅시다.

그리고 한번 그룹 정보가 적혀있는 '/etc/group' 파일을 맨 끝 10줄을 출력하는 'tail' 명령어로 확인해볼까요?

왜냐면, 최근에 추가된 내용은 당연히 파일의 끝 부분에 추가되기 때문에 끝 부분을 출력하는 'tail' 명령어를 사용한 것입니다.

당연히 tail 외에도 more, vi, vim, gedit 등등 파일을 여는 명령어면 아무거나 사용하셔도 됩니다.







맨 마지막 "bob_soul:x:1004:"가 보이시나요?
잘~ 만들어 졌네요

아 혹시 저희는 저번 포스트에서 유저를 만든 다음 바로 패스워드를 만들어 줬었는데, 기억하시나요?

"passwd [유저]" 이렇게 말이죠

마찬가지로 그룹도 비슷한 명령어로 패스워드를 만들어 줄 수 있습니다





3. gpasswd(group password)




gpasswd(group password) : 이름대로 그룹에 패스워드를 만드는

그런데 이 'gpasswd'란 명령어는 그룹 패스워드 지정 외에도, 그룹에 유저를 넣는 기능이 있습니다.

지난 수업에 배운 '/etc/passwd'적힌 정보는 모두 변경 가능한 "usermod"를 이용해 개인의 그룹을 바꾸면, 기존에 속해있던 그룹에서 나오게 되는 것에 비해

"gpasswd"를 이용하면 한 유저를 여러 그룹에 속하게 할 수 있습니다.

명령어 형식은 
gpasswd [옵션] [옵션 값] [그룹] 
입니다.
옵션 없이 그냥 "gpasswd 그룹" 이렇게 사용하면 그룹에 패스워드를 만들 수 있습니다.










위 사진처럼 말입니다. 

왜 그룹에 패스워드를 만드냐는 의문이 드실 수 있습니다.
유저와 다르게 로그인같은 과정도 없는데 말이죠

맞습니다... 거의 쓸모가 없어요...  열심히 구글링을 해도 거의 사용하는 경우가 없더라구요
그러므로 "gpasswd" 이 명령어는 그룹에 유저를 넣고 빼는 용도로만 사용한다 생각해주세요.


gpasswd 옵션 :

-a(add) [유저] [그룹]: 유저를 그룹에 넣습니다.






mamu가 lucifer그룹에 잘 들어간 걸 볼 수 있습니다.


-d(delete) [유저] [그룹] : 그룹에서 유저를 제명합니다.







lucifer 그룹에서 나온 mamu


그럼 그룹 만드는 법과 유저를 넣는 방법을 알았으니 이번엔 누가 어떤 그룹에 속했는지 알아야겠죠?

그 때 사용하는 명령어가 바로 "id" 입니다.






4. id



명령어 형식은 
id [유저]
입니다.

늘 그렇듯이 "id [유저]" 이렇게 유저를 지정하면, 지정한 유저의 uid, gid , groups를 보여주지만, "id" 이렇게 끝내면 현재 로그인한 유저의 정보를 보여줍니다.






네? "gid"랑 "groups" 차이가 뭐냐고요?
"GID"는 말 그대로 Group ID, 즉 그룹의 식별 번호이며 
"groups"다수를 의미하는 's'가 붙었으니 유저가 속한 모든 그룹들 의미하죠

이때  "gid"에 표시된 번호주 그룹(메인 그룹)이라고 생각하시면 됩니다.
"groups"에서도 맨 첫 번째 번호가 주 그룹입니다. 나머진 보조 그룹이라 하고요


주 그룹과 보조 그룹의 차이는 저희가 사용하는 모든 프로세스나 작업들은
"주 그룹"에 영향을 받고 줍니다. 저희가 당장 파일을 만들어도 그 파일의 소유 그룹은
주 그룹이죠. 그렇다면 보조 그룹은 뭘까요?

------------------------------------------------------------------------------------------
보조 그룹은 다른 그룹으로서 명령어를 실행하는 "sg(substitute group?)"
보조 그룹을 주 그룹으로 바꾸는 "newgrp"그룹 패스워드 없이 사용할 수 있게
해주는 기능
이 있습니다. 저희는 그룹 패스워드를 설정하지도 않았기에 솔직히 차이도
못 느낍니다. 솔직히 별로 쓸 일도 없구요
그러므로 이건 다른 포스트에서 자세히 다루겠습니다.
------------------------------------------------------------------------------------------


i) wheel 그룹이란? 



1000(mamu)는 원래 유저랑 같이 만들어 지는거라 알겠는데 10(wheel)은 무슨 그룹이냐고요? 원래 리눅스에서 gid가 999이하의 그룹들은 시스템에서 사용하는 원래 만들어져 있는
그룹인데요. 

나~중에 저희가 ssh(secure shell)방식의 원격접속을 할텐데, 이 "ssh"라는 방식은 보안을 위해서 바로 "root"로 접속이 안되게 해놓아서 일반 유저로 로그인 한 뒤 "su" 명령어로 root로 바꾸거든요.

그런데 이 "su"명령어도 모든 유저가 사용하면 보안이 취약하니까10(wheel)그룹에 속한 유저들만 ssh에서 "su"명령어를 쓸 수 있게 하는겁니다.

이 10(wheel)은 그때 사용하는 그룹입니다~ 말이 길어졌는데 이제 그룹을 수정하는 방법을 배워야겠죠?

저희가 전 포스팅에서 배운 "usermod"는 "/etc/passwd"에 있는 유저의 정보들을
수정하는 명령어였던 것 처럼 "/etc/group"에 있는 정보를 수정할 때 쓰이는 "groupmod"가 있습니다.





5. groupmod




groupmod : /etc/group에 있는 그룹정보를 수정하는 명령어입니다.

명령어 형식 
groupmod [옵션] [옵션 값] [그룹명] 
입니다.

옵션의 종류 :
-g(gid) [변경할 GID번호] : 그룹의 gid를 변경하는 옵션






아까 만든 그룹명 bob_soul은 GID가 1004였습니다(천사라...)
"-g"옵션을 이용해서 666으로 바꿔보겠습니다.





변경이 잘 됐습니다!


-n(new name) [변경할 이름] : 그룹의 이름을 변경하는 옵션

gid를 666으로 바꿔준겸 우리 bob_soul도 "-n"을 이용해서 이름을 바꿔줍시다






네, 아주 잘 변경이 됐군요 후후..


"gpasswd"와 "groupmod" 가 헷갈릴 수 있는 분들을 위해 정리를 하자면

"usermod" 와 "groupmod" 처럼 뒤에 "mod"로 끝나는 건 /etc/passwd나 /etc/group
과 같은 파일에 적힌 정보를 수정할 때 쓰는 명령어고

"passwd [옵션] [옵션 값]" 이나 "gpasswd [옵션] [옵션 값]" 같은 명령어는 /etc/passwd나 /etc/group과 같은 파일에 없는 정보들을 수정할 때 쓰는 명령어다라고 생각하시면 됩니닷


이제 Other에 대해서 다뤄야겠군요... 후후후...

자 오늘은 이렇게 포스팅을 마치도록 하겠습니다~

네? other에 대해서 왜 아무런 설명이 없냐고요? 에이 이사람아
"user"랑 "group"중, 어디에도 속하지 않은 사람이 other이지 안그려?

사실 other에 대한 구분은 다음 포스트 "권한"에 대해서 포스트할 때
왜 user, group, other 이렇게 구분했는지 감이 오게 되실겁니다!



오늘도 좀 힘들었네요... 제가 포스팅을 할 때 시간이 오래 걸리는 이유가
포스트를 하면서 저 스스로가 계속 의문이 생김(어? 이건 왜이러지? --> 구글링-->직접실험--> 아하, 어? 이건 또 왜이러지?-->....) 이런식 되기 때문입니다. 하하...

그래서 포스트도 엄청 TMI하게 작성하다가도 체력한계와 멘탈붕괴가 와서 너무 TMI부분은
따로 포스트하자 하면서 따로 저장해두곤 합니다.

쨋든.. 구글 블로그 팔로우 및 따뜻한 댓글은 저에게 엄청난 힘이 됩니다!!
앞으로 더 퀄리티 좋은 포스트로 찾아뵙겠습니다~ 언제나 늘 긴 글 봐주셔서 감사합니다~


리눅스 독학 페이지로 돌아가기https://mamu2830.blogspot.com/p/blog-page_13.html




댓글 4개:

  1. ㅋㅋ 저는 웹툰보다 이게 더 재밌어요 ! 매번 좋은 글 써주셔서 감사해요 ㅠㅠ

    답글삭제
    답글
    1. 어얽.... 재밌게 봐주셨다니 다행입니다!! 재밌었다니.. 허헣

      삭제
  2. 포스팅에 지식뿐만아니라 정성까지 느껴지는 글인것같습니다. 잘보고갑니다ㅎㅎ

    답글삭제
    답글
    1. 허엇! 저의 정성을 알아주셔서 감사합니다 ㅎㅎ 따뜻한 댓글 감사합니다!

      삭제

#1 여러분들이 소중한 시간을 투자해 달아주시는 따뜻한 댓글들은 저에게 정말 큰 힘이 됩니다!

#2 저의 각 포스트들은 엄청난 노력과 시간 투자를 통해 만들어진 포스트들로, 무단 복제나 모방하는 것을 금지합니다.

#3 저의 포스트에도 틀린 정보가 있을 수도 있습니다. 그럴 경우 친절한 말투로 근거와 함께 댓글로 달아주시면 정말 감사하겠습니다!

* 바쁜 개인 일정으로 댓글 답변이 많이 느립니다 *