반응형

리눅스 계열에서 콘솔 명령어로 간단히 계정을 추가 변경 삭제하는 방법입니다.

 

useradd 의 도움말 화면 입니다.
useradd
명령은 새로운 사용자 계정을 추가 하는 명령어 입니다.

형식 
# useradd
옵션 계정명

옵션
-d
홈디렉토리 : 홈디렉토리의 경로를 지정해줍니다. 홈디렉토리를 생성할려면 -m 옵션을 같이 사용합니다.
-u uid : uid
를 지정합니다.
-g gid : gid
그룹을 지정합니다.
-G groups :
보조그룹을 지정합니다.
-s shell :
쉘을 지정합니다.
-c
주석 : 계정에 설명을 붙여 줍니다.
-D : useradd
의 기본 설정값을 확인합니다. 기본설정은 /etc/default/useradd 에 있습니다.

계정생성시 홈디렉토리에 복사될 파일 모음
/etc/skel
계정을 새로 생성하면 위에 경로에 저장되어 있는 파일이 자동으로 홈디렉토리에 복사됩니다.

 

 

rootblog 라는 계정을 생성해봤습니다.
-d
옵션으로 홈디렉토리 경로를 지정해주었지만 해당경로는 없는 경로이므로 
-m
옵션으로 디렉토리 생성을 하였습니다.

계정 정보 확인방법
# cat /etc/passwd | grep
계정명

/etc/passwd 안에 사용자 계정정보가 들어 있습니다.
cat
명령으로 열어보고 | grep 계정명으로 특정 단어만 검색해서 확인을 하면 됩니다.
나오는 정보는
[ID :
패스워드 : UID : GID : 주석 : 홈디렉토리 : ]
순서로 정보가 표시 됩니다.
패스 워드 정보는 x or 1! or 암호화된 상태 로 표시되게 됩니다.


 

 

 

usermod 의 도움말 화면입니다.
usermod
는 계정에 설정을 변경 할때 사용하는 명령어 입니다.

형식
# usermod
옵션 계정명

옵션
-u uid :
새로운 UID 를 지정합니다. -o 옵션과 같이 사용하면 강제설정이 가능합니다.(root로 가능)
-g gid :
새로운 GID 를 지정합니다.
-G groups :
새로운 보조그룹을 지정합니다.
-d 
홈디렉토리 : 새로운 홈디렉토리를 지정합니다. -m 옵션과 같이 사용해서 새로 생성도 가능합니다.
-s
: 새로운 쉘 을 지정합니다.
-c
주석 : 새로운 주석을 지정합니다.
-l ID :
로그인 ID를 바꾸는 옵션 입니다. 새로운 계정명으로 변경합니다.


 

 

계정에 gid를 변경을 해봤습니다.
root
계정의 gid로 변경한게 아니기 때문에 -o 옵션은 안해줘도 상관이 없습니다.
501 -> 505
로 변경이 된걸 확인할수 있습니다.


 

 

userdel 의 도움말입니다.
userdel
은 계정을 지우는 명령어 입니다.

형식
# userdel
옵션 계정명

옵션
-r :
홈디렉토리도 삭제를 합니다.
-f :
삭제중에 나는 에러를 무시하고 강제로 삭제 합니다.

 

 

 

roottest 란 계정을 만든후 삭제를 해봤습니다.
-r
-f 옵션으로 삭제하면 계정과 파일이 모두 지워지니 주의 해서 실행해야 합니다.

 

 

 

passwd 의 도움말 입니다.
passwd
명령어는 계정에 비밀번호를 지정해 줄때 사용합니다.
useradd
로 새로운 계정을 만들면 계정에 비밀번호가 없는 상태로 생성이 됩니다.
가능한 useradd 후에 바로 passwd로 비밀번호를 지정해주는걸 권장합니다.

형식
# passwd
옵션 계정명

옵션
-S :
계정에 상태를 표시합니다. (PS : 정상 , NP : 패스워드가 없음 , LK : Lock 상태거나 NP 상태)
-d :
계정에 패스워드를 삭제 합니다.
-l :
계정을 lock 상태로 변경합니다.
-u :
계정에 lock 상태를 해제 합니다.

 

 

 

rootblog 계정에 패스워드를 지정하고 삭제를 해봤습니다.

 

 

 

반응형

'리눅스 시스템 운영 ' 카테고리의 다른 글

네트워크 정보 수집 - whois  (0) 2018.07.05
FIND - 파일시스템 검색  (0) 2018.06.18
공개소프트웨어 라이센스 유형  (0) 2018.01.23
리눅스의 교과서 - man  (0) 2017.11.14
vim 설정파일  (0) 2017.11.14
반응형

 

   공개소프트웨어의 라이센스는 GPL을 시작으로 하여 많은 종류들이 있다. GPL, BSD라이센스, MPL라이센스등 환경과 필요에 의해서 만들어진 라이센스들이 있으며 이들 가운데 현재 주로 사용되고 있는 라이센스들과 국내의 실정에 맞는 라이센스들 위주로 살펴보자.


ㅇ GPL

  GPL라이센스는 GNU프로젝트에 가장 먼저 적용된 라이센스이며 리눅스에 적용되어 있고 또한 가장 널리 적용되고 가장 대표적인 공개소프트웨어의 라이센스이다. GPL은 리차드스톨만(Richard Stallman)에 의해 만들어졌고 자유소프트웨어 재단(FSF : Free Software Foundation)의 철학을 반영하고 있다. GPL이 적용되어 있는 공개소프트웨어의 복제와 유통에는 제약이 없다. 하지만 GPL라이센스가 적용되어 있는 소프트웨어는 다음과 같은 조건을 따라야 한다. 즉, 자유소프트웨어는 다음과 같은 조건하에서 소프트웨어의 복제와 개작, 배포가 자유롭게 허용되며, 프로그램의 사용(프로그램을 실행시키는 행위)에 대해서는 아무런 제한 없이 자유롭게 사용할 수 있다.


  ① 사용자가 소스코드를 쉽게 사용할 수 있어야 한다.

  ② 배포되는 소프트웨어에는 GNU GPL이 포함되어 있어야 한다. 배포된 소프트웨어를 사용하는 사람은 GPL상의 사용허가를 그대로 유지하는 조건하에 소스코드를 자유롭게 복제, 배포할 수 있다.
  ③ 쌍방향(interactive)프로그램의 경우, 프로그램이 시작될 때 이를 게시하여야 한다.

  ④ 프로그램을 수정할 경우에는 언제, 누구에 의해 수정되는지를 명시해야한다.  
  ⑤ 파생품을 만들수 있으며 만들어진 파생품에는 GPL이 적용되어야 한다. 즉, 소프트웨어를 양도받은 자는 소프트웨어를 자유롭게 개작할 수 있고, 개작된 소프트웨어는 GPL을 그대로 유지하는 조건에서 배포할 수 있다.

  ⑥ GPL소프트웨어를 결합하여 만든 소프트웨어에는 반드시 GPL이 적용되어야 한다.

  ⑦ 소프트웨어가 오브젝트 파일(object code)이나 실행파일 형태로 배포될 경우 반드시 소스코드를 함께 제공하여야 한다.

  ⑧ GPL하에서 배포되는 소프트웨어는 무상으로 제공되는 것이므로 소프트웨어에 대한 어떠한 보증도 제공되지 않는다.

  위의 ⑥번째 조건으로 인하여 GPL은 바이러스적인 효과를 가지고 있다. 즉, 기업에서 GPL이 적용된 소프트웨어의 일부를 사용하여 다른 소프트웨어를 개발하였을 경우에 기업은 그들이 개발한 소프트웨어의 소스코드를 공개해야만 한다.

 

  결과적으로 소프트웨어를 제작 판매하는 기업에서는 GPL이 적용된 소프트웨어를 기피하게 되었다.  이것이 GPL의 아킬레스건이되어 버렸다.

  1984년 FSF를 설립한 이후 1989년에 FSF에 의해 GPL 1.0이 만들어 졌으며 1991년 FSF에 의해 GPL 2.0이 만들어지고 현재까지 사용하고 있다. GPL은  현실을 반영하면서 계속 진화하고 있으며 초기 1.0버전과 2.0 버전, 그리고  2007년도 쯤에 GPL3버전이 나올 예정이다. 

  GPL라이센스에 있어 가장 핵심이 되는 부분은 소프트웨어를 소스코드의 형태로 복제, 수정, 배포가 가능한 자유가 보장되며 또한 수정된 소프트웨어에 대해서도 동일한 자유와 조건이 계속해서 순차적으로 보장되도록 하는 것이다.

  GPL은 저작권을 전제로 하고 있지만 저작권의 본래의 취지를 반대로 이용하여 소프트웨어를 사적인 재산권의 대상으로 삼는 대신에 자유롭게 이용, 복제, 배포, 수정될 수 있는 수단으로 삼은 것이다.

  즉, 일반적으로 프로그램의 개발자들이 ‘저작권’을 이용하여 재산적 권리를 취득하는 것과 마찬가지로 자유소프트웨어의 개발자들은 ‘저작권’을 이용하여 프로그램의 공유화를 가능하게 한 것이다. 그래서‘저작권(copyright)’을 기반으로 하면서도 이를 역이용하여 프로그램의 공유를 보장하려는 이러한 움직임을 ‘카피레프트(copyleft)’라고 부르게 된 것이다.

  따라서 카피레프트의 조건에 따라 배포된 프로그램에 어떠한 수정이 이루어지거나, 여기에 다른 프로그램이 결합되더라도 그 결과물로서의 소프트웨어에는 카피레프트가 적용되는 것이다.


ㅇ LGPL

  GPL의 바이러스적인 속성으로 인하여 소프트웨어를 개발하여 판매하는 기업들로 부터 호응을 얻지 못하기 때문에 자유소프트웨어재단(FSF)에서는 GPL의 이런 속성을 완화하여 LGPL(Lesser General Public License)이라는 라이센스를 새롭게 만들었다. 결론적으로 FSF에서 LGPL을 만든 궁극적인 목적은 GNU 프로젝트에 의해 개발된 소프트웨어와 사적 소프트웨어를 포함한 다른 소프트웨어와의 통합을 허용하기 위함이다. LGPL라이센스를 적용하여 개발된 소프트웨어는 GPL에 오염되지 않는다. LGPL라이센스를 만들게된 궁극적인 목적은 자유소프트웨어하에서 개발되는 소프트웨어 제품들이 널리 많이 사용되어 표준이 되도록 하는 것과 독점소프트웨어 제품들과 경쟁을 할 수 있도록 하기 위함이였다. 이렇게 하여 LGPL이 적용된 최초의 소프트웨어가 GNU C라이브러리였다.


ㅇ MPL

  MPL은 넷스케이프(Netscape)사가 개발한 모질라(Mozilla) 브라우즈의 소스코드를 공개하는데 사용한 라이센스로서 "Mozilla Public License"의 약어이다. MPL라이센스는 소스코드와 실행파일을 불리하여 이 둘을 보완하여 만든 것이다. 먼저 소스코드 측면에서는 소스코드는 반드시 공개되어야 하며 소스코드를 수정하였을 경우에는 최초의 저작자에게 수정한 내용을 통지해야 한다.

  실행파일 측면에서는 실행파일 자체를 독점라이센스로 배포할 수 있다.  즉, 저작자의 이익을 보호할 뿐 아니라, 수정, 보완된 소프트웨어의 배포를 통한 상업적인 이익을 보호할 수 있으며 또한 적정한 가격을 요구할 수 있고, 불법복제에 대해 제재를 가할 수도 있다. 결국 이 소프트웨어를 더욱 보완, 발전시키려는 개발자들의 이익을 보호할 수 있게 된다. 즉, 기술적으로 개선을 할 경우, 코드를 보고 수정한 후, 컴파일하여 새로운 독창적인 버전으로 재배포할 수 있다.


ㅇ BSD License (MIT X License)

  BSD(Berkeley software distribution)라이센스는 소프트웨어 산업과 관련하여 가장 다양하게 사용될 수 있는 라이센스이다. BSD라이센스가 적용되는 소프트웨어를 수정, 보완한 소프트웨어는 독점 소프트웨어가 될 수도 있고, BSD라이센스로 배포될 수도 있다. 또한 GPL로 배포될 수도 있다. 즉, BSD 라이센스는 사용자들에게 거의 제한을 가하지 않는 것이 특징이며 BSD 라이센스가 적용되어 있는 대표적인 공개소프트웨어로는 아파치(APACHE)웹서버가 있다.

  또 BSD 라이센스에는 copyleft 조항도 없기 때문에 사적 소프트웨어 벤더들도 BSD 라이센스로 배포되는 OSS 컴포넌트를 그들의 제품에 무제한으로 사용할 수 있다. 예컨대 X 라이센스는 소프트웨어를 사용, 복제, 변경, 통합, 발행, 배포 및 판매할 권리를 부여한다. 다만 때때로 저작권 표기를 요구하거나, 코드 변경의 날짜 저자 및 변경 목적을 요구하기도 한다.

  또한 BSD 라이센스에는 copyleft 조항이 없기 때문에 공개소프트웨어 컴포넌트를 그들의 사적소프트웨어내에 무제한으로 사용할 수 있다. 예를들어 X라이센스는 소프트웨어를 사용, 복제, 변경, 통합, 발행, 배포 및 판매할 권리를 부여하고 있다.

이상과 같이 공개소프트웨어에 관련된 주요 라이센스들에 대해서 살펴보았다.

반응형
반응형

리눅스에서 작업을 하다보면  명령어 사용법을 몰라서 당황할 때가 있는데... 이때 사용하면 좋은 명령어가 바로 man 입니다.

 

man은 윈도우에서 보면 help(F1 key)와 같습니다. 모르는 명령어의 다양한 옵션과 사용예제가 나옵니다.

 

그렇지만, man을 보다 잘 사용하면 더 쉽게 많은 일을 할 수 있어서 사용법에 대한 설명을 드리도록 하겠습니다

 

man 명령어에는 Section이라는 개념이 존재합니다.

 

전통적으로 유닉스에서는 총 8권으로 구성되어 있으며  리눅스의 메뉴얼은 9권으로 구성되어 있습니다. 이에 따라 man의 Section으로 구성되었습니다.

 

  섹션번호

 섹션설명

 1

 실행 가능한 프로그램 또는 쉘 명령

 2

 시스템 호출 (System call)

 3

 라이브러리 호출 (프로그램에 포함된 함수들)

 4

 특별한 파일 (주로 /dev에 포함된 디바이스 파일들)

 5

 File Format 및 규칙 (/etc/passwd 같은 파일)

 6

 게임

 7

 기타 (매크로 패키지나 규약 같은 내용)

 8

 시스템 관리자를 위한 명령 (보통은 root 사용자를 위함)

 9

 커널 루틴 (표준 아님)

 

CUI(터미널)환경에서 유닉스 및 리눅스 환경에서 프로그램, 함수, API, 특수 파일 같이 운영체제의 전반적인 내용을 다 담고 있다. 인터넷이 지원되지 않더라도 API 함수의 사용법, 파라메터 같은 세세한 내용이 담겨 있기 때문에 유용하다.

그리고 혹시 버전별로 사용법이 다른 명령어가 있을 경우, 맨 페이지는 현재 시스템에 설치된 바로 그 버전의 문서를 제공하기 때문에 현재 설치된 버전에 맞는 옵션 조합을 찾아내고자 할 때는 맨 페이지가 유용하다.

일단 가장 쉬운 printf 등으로 시작하여, 점점 복잡한 함수들을 찾아 보는 형태로 접근하도록 하자. 당신의 프로그래밍 능력을 확실히 향상시켜 줄 것이다. 아 물론 프로그래밍을 이제 입문하는 사람은 맨 페이지보다는 책이 낫다.


단점


MSDN 생각하고 맨 페이지 열람하다간 멘탈이 나갈 수 있다.

검색이 자유롭지 않다. 또한 모든 게 고정폭 터미널 텍스트로 표기되고 색상도 단색이라 UI가 썩 좋지 않다. 그래서 요즘은 구글 검색으로 사용법을 찾아보는 게 더 편하다. 

그리고 모든 명령어가 맨 페이지를 제공하는 게 아니다. 서드 파티 명령어들은 아예 구글 검색으로만 매뉴얼을 열람할 수 있는 경우가 종종 있다.[4] info 명령이 이 경우에 도움이 될 수는 있지만 구글검색으로 찾아내는 정보에는 예제가 포함된 경우가 많기 때문에 명령어를 처음 사용하는 경우에는 맨 페이지는 썩 좋은 선택은 아니다. 대체적인 사용법은 아는데 몇몇 옵션이 기억나지 않을 때 빠르게 열람하는 용도가 가장 적절하다.

반응형
반응형

vim을 리눅스 환경에서 사용하게 되면 여러모로 불편한 점이 많습니다.

 

처음에는 이런환경에서 어떻게 작업을 해야 되나 막막하기도 한데 설정파일을 사용하면 보다 vim환경을 예쁘고 아름답게 사용할 수 있습니다.

 

실제로 많은 설정이 있고 사용하는 많은 방법이 있지만 저는 제가 주로 사용하는 설정값을 바탕으로 예시를 들었습니다. 설정파일의 위치는 "~/.vimrc" 입니다

 

set shiftwidth=2             ">>나 << 사용시 들여쓰기 간격을 지정합니다.
set visualbell               "사용자실수를 경고할때 비쥬얼 벨을 사용함                 
set nobackup                 "백업 파일을 생성하지 않음
set cindent                  "C스타일의 들여쓰기를
set ruler                    "커서의 위치를 표시함사용함
set autoindent               "자동들여쓰기를 사용
set smartindent              "지능적인 들여쓰기 사용
set incsearch                "키워드를 입력할때 마다 검색하는 점진 검색을 사용
set ruler                    "커서의 위치를 표시함
set showcmd                  "화면마지막 라인에 커맨드 표시
set backspace=2              "삽입모드에서 백스페이스를 계속 허용
set wrapscan                 "찾기에서 파일의 맨끝에 이르면 처음부터 다시 찾음
set title                    "타이틀 바에 현재 편집중인 파일을 표시
set number                   "줄번호표시
set ts=2                     "tab 키를 스패이스바 2개로 구분     
syntax on                    "구문강조기능 사용
filetype on                  "파일종류에 따라 구문을 강조
set background=dark          "배경색을 어두운 색으로
colorscheme evening          "색상테마를 evning으로
set history=1000             "편집기록을 1000개 등록
set hlsearch                 "검색어 기능 강조
set ignorecase               "검색시 대/소문자 구분 없음
set showmatch                "닫는 괄호를 입력할 때
set novisualbell             "화면깜박거리지 않기
set backspace=indent,eol,start  "줄의 끝, 시작, 들여쓰기에서 백스페이스를 사용하면 이전줄과 연결

"################### 단축키 설정 ####################"
"파일 버터간 이동 "
map ,1 :b!1<cr>
map ,2 :b!2<cr>
map ,3 :b!3<cr>
map ,4 :b!4<cr>
map ,5 :b!5<cr>
map ,6 :b!6<cr>
map ,7 :b!7<cr>
map ,8 :b!8<cr>
map ,9 :b!9<cr>
map ,0 :b!0<cr>
map ,w :bw <cr>

"F2 == 폴딩하기  "
map <F2>  z]}zf

"F3 == 저장 "
map <F3> : w! <CR>
map <F3> <ESC> <F3>

"F4 == 탭열기, Ctrl+h,l로 탭이동 "
map <F4> : tabnew<CR>
map <C-h> gT
map <C-l> gt

"F5 == 컴파일 후 결과보기 / 오류난 라인으로 이동
map <F5> : w<cr> :make<cr> :ccl<cr> :cw<cr>

"F6 == Taglist 열기
map <F6> : TlistToggle<CR>

"F7 == 태그리스트 넘어 다니기
map <F7> <c-w> <c-w>

"F8 == 디렉토리 목록 열기
map <F8> : NERDTree<CR>

"F12 == 저장후 종료
map <F12> : wq! <CR>
map <F12> <ESC> <F12>


"=============== ctags 설정 ================"
set tags=./tags,../tags,../../tags,/usr/src/linux/tags
"세부 코드 보여주기 "
if version >= 500
func! Sts()
 let st = expand("<cword>")
 exe "sts ".st
endfunc 
nmap ,st :call Sts() <CR>

func! Tj()
 let st = expand("<cword>")
 exe "tj ".st
nmap ,tj :call Tj() <CR>
endfunc
endif

"=============== cscope 설정 ================"
"set csprg=/usr/bin/cscope
"set csto=0
"set cst
"set nocsverb

if filereadable("./cscope.out")
 cs add cscope.out
else
 cs add /usr/src/linux/cscope.out
endif
set csverb

func! Css()
 let css = expand("<cword>")
 new
 exe "cs find s ".css
 if getline(1) = ""
   exe"q!"
 endif
endfunc
nmap ,css :call Css()<cr>

func! Csc()
 let css = expand("<cword>")
 new
 exe "cs find c ".csc
 if getline(1) = ""
   exe"q!"
 endif
endfunc
nmap ,csc :call Csc()<cr>

func! Csd()
 let csd = expand("<cword>")
 new
 exe "cs find d ".csd
 if getline(1) = ""
   exe"q!"
 endif
endfunc
nmap ,csd :call Csd()<cr>

func! Csg()
 let csg = expand("<cword>")
 new
 exe "cs find g ".csg
 if getline(1) = ""
   exe"q!"
 endif
endfunc
nmap ,csg :call Csg()<cr>

 

"============== Man page 설정 ==============="
func! Man()
 let sm = expand("<cword>")
 exe "!man -S 2:3:4:5:6:7:8:9:tcl:n:l:p:o ".sm
endfunc
nmap ,ma :call Man()<cr><cr>

 

"############### taglist ##########################"
let Tlist_Display_Tag_Scope = 1 "태그 범위를 표시합니다
let Tlist_Display_Prototype = 1 "함수의 원형을 표시합니다
let Tlist_Sort_Type="name"      "태그리스트를 이름 순서로 표시합니다. 

 

 

반응형
반응형

윈도우즈에서 작업한 파일을 리눅스에서 열 경우 라인 끝마다 ^M 문자가 들어간 것을 볼 수 있다.

이유는 리눅스와 윈도우에서 사용하는 개행문자가 다르기 때문에 이런 경우가 종종 발생한다.

 

특히, 쉘스크립트를 실행하게 되면

 

^M : bad interpreter : No such file or directory

메시지만 보이면서 제대로 실행이 되지 않는 경우가 있습니다.

 

이럴 경우에는 ^M 문자만 제거 해주면 간단하게 해결이 됩니다.

 ^M을 없애는 방법은 간단하다.

 

vi 에디터를 열고,


:%s/^M//g

(^M은 단순 텍스트 입력이 아닌 Ctrl + v + m으로 입력하여야 한다.)


이렇게 명령어를 날려주면 된다.



반응형

+ Recent posts