미류의 어쩌구 저쩌구
miryu17.egloos.com
Egloos | Log-in

잡담, 취미, 뻘짓
메뉴릿
포토로그
마이가든
카테고리
전체
Book
Music
지름놀이
Movie
잡담
프로그래밍
오픈소스
Tip!
Linux
미분류
최근 등록된 덧글
피파를 할려니까 뭐 클라..
by 박강희 at 01/12
저도 저제품을 사용해봤..
by 봄빛 at 12/10
감사합니다!!!
by 손주현 at 12/07
에... 마음껏 퍼가세요...
by 미류 at 09/10
최근 등록된 트랙백
라이프 로그
발트뷔네 콘서트 Vol. 2 박스세트 [dts]
발트뷔네 콘서트 Vol. 2 박스세트 [dts]

완역판 낭만동화집 1
완역판 낭만동화집 1

포토로그
메모장
이전 블로그
more...
이글루 링크
제목없음
雜想
제제
:: Separate★BLUE ::
태그
utf V470 페도라 samba 블루투스 파이어폭스 삼바 오픈소스 프로그래밍 마우스 ftp vi visual_studio_2005 sudo Tip euckr Vista MFC svn thread mobile Linux
전체보기
Powered by egloos
rss

skin by Nostalgia
POST: ^M 표시 삭제 하기
저 같은 경우 서버가 리눅스라 서버에 cpp파일이나 h파일을 올렸다가
다시 다운 받을경우 ^M이 문서에 추가되는 현상이 발생하게 됩니다.

이 파일을 그대로 visual studio에서 열게되면 개행이 잘못되었다고 바꾸라고 하거나
원래보다 몇줄씩 공백 줄이 삽입되게 됩니다.

이 파일을 gvim 이나 vi에서 열어보게 되면 ^M이 줄줄이 추가 되어있는 것을 확인할 수 있습니다.

gvim에서는 :%s/^M//g 하면 전부 없앨 수가 있습니다.
뭐 정확히는, :%s/ (ctrl+V+M)하면 됩니다.

또는 :1,$s/(ctrl+V+M) 해도 동일한 결과를 얻을 수 있습니다.



Tip
# by 미류 | 2009/02/13 16:33 | Tip! | 트랙백 | 덧글(0) | ▲ ▼
POST: sudo에 대해

sudo 설정을 할 때, 밑에 올렸던 포스트와 함께 참고했던 글입니다. sudo 에 관해서 전반적으로 충실히 소개 되어있습니다.


인터넷을 통한 서비스를 위하여 설치된 서버에는 반드시 OS설치시부터 관리자 계정(root 또는 administrator)이 만들어져 있다. 이 계정의 권한은 직원이라 하더라도 함부로 알려줘서는 안되며, 관리자 권한이 필요한 업무를 보는 사람에게, 제한적으로 권한을 수행할 수 있도록 허용하는 보안정책이 필요하다. 작업용 공용계정을 사용하는 경우도 마찬가지이다.(하지만 작업용 공용계정을 없애는것이 보안의 첫걸음이다.)

이 기능을 훌륭히 수행해주는 sudo의 사용법에 대하여 요약해 보았다.


sudo


  • 개발, 운영 등의 작업을 수행함에 있어, 로그인계정 외의 다른 계정의 권한이 요구될 때, 그 계정을 직접 사용하지 않고(혹은, 패스워드를 알아내지 않고), 본인의 로그인계정의 인증을 통해 해당 계정의 권한으로 작업을 수행할 수 있다.

  • 용법

 
사용자 삽입 이미지



  • 가장 간단한 방법은 sudo <command>이다. 이렇게 하면 <command>에 적은 쉘커맨드가 root권한으로 수행된다.

  • root 계정이 아닌 다른 계정의 권한이 필요한 경우엔, sudo -u username <command> 로 수행하면 username 계정의 권한으로 <command>를 수행한다.

    • sudo -u #uid <command> 와 같이 uid값을 사용할 수도 있다.
    • 이 유저를 Runas user라고 한다.

  • sudo로 su - (root계정의 로그인쉘 얻기)를 수행한 예



사용자 삽입 이미지


sudoers


  • sudo를 사용하여 권한을 부여할 구체적인 설정을 하는 파일이 ''sudoers'' 파일이다. 시스템에 따라 약간씩 위치는 다르나, 이 파일을 편집할 권한을 얻으면  시스템의 모든 권한을 얻을 수도 있기 때문에 매우 높은 보안 레벨로 보호되어야 한다.

  • sudo su - 또는 sudo visudo등의 커맨드를 허용하는 것은 매우 신중해야 한다.

  • 이 파일의 편집은 visudo 명령을 실행하여 편집한다. visudo의 기본 편집기(보통은 vi 또는 nano)가 sudoers파일을 열은채로 실행된다.

  • visudo가 사용할 기본 편집기 역시 sudoers파일에 설정할 수 있다.

  • 각 Alias 설정은 문자열 단위로 매치시키기 때문에 주의깊게 작성해야 한다.

  • sudo /usr/bin/su 는 가능하나, cd /usr/bin; sudo ./su는 불가능할 수 있다.

How to Write sudoers


  • Alias 정의 섹션, Default 정의 섹션, Privilege정의 섹션으로 나누어 볼 수 있다.

  • 라인당 하나의 정의

  • Aliases

    • Alias에는 User_Alias, Runas_Alias, Host_Alias, Cmnd_Alias의 4가지 Alias_Type이 있다.

    • 모든 Alias에 대해 ALL은 항상 매치되는 와일드카드로 미리 정의되어 있다(아래 예제 참조)

    • 각 Alias는 NAME = LIST의 형태로 만든다.

      • NAME은 알파벳 대문자로 시작하여야 하고, 두번째 글자부터는 알파벳 대소문자와 숫자, 언더스코어문자('_')를 쓸 수 있다.

      • LIST는 콤마(,)로 구분되고 공백은 무시된다.

      • LIST의 item앞에 '!'(negate operator)를 쓰면 리스트에서 해당 아이템만을 배제시킨다.

        예:[CODE]ALL, !/bin/su    # "/bin/su를 제외한 모두"라는 의미

        ALL, !!/bin/su    # "모두"의 의미, 짝수번 negate 의미 없다.[/CODE]

      • 같은 종류의 Alias는 콜론(:)으로 묶을 수 있다. 다른 라인에 새로운 정의로 포함시킬수도 있다.


    • Alias는 다음과 같은 형태가 된다.

      • Alias_Type NAME = item1, item2, item3, item4

      • Alias_Type NAME = item1, item2, item3 : Name = item4, item5


    • User_Alias

      • sudo 권한을 적용할 유저의 집합을 정의한다.

      • (sudoer 그룹명) = (List of login names)

      • 유저명 대신 %<group> 을 사용할 수도 있다.

        • 예: %admin # admin 그룹에 속하는 모든 유저

    • Runas_Alias

      • 어떤 유저 또는 그룹의 권한으로 명령을 수행할지를 지정할 수 있다.

      • 정의 방법은 User_Alias와 동일하나, #<uid> 의 형태도 사용할 수 있다.

      • 주의: root와 #0은 동일한 유저이지만, 문자열 매치를 하기 때문에 다른 것으로 간주된다. root, %0도 마찬가지.

    • Host_Alias

      • hostname, IP address, Network address, 다른 Host_Alias를 묶어 호스트 집합을 만들 수 있다.

    • Cmnd_Alias

      • 권한을 허용할 커맨드를 나열하여 집합으로 만든다.

      • 커맨드는 full path로 적는다. 디렉토리명을 커맨드로 지정할 수 있다. 디렉토리를 지정하면 그 디렉토리이하의 모든 커맨드에 대해 허용된다.

  • Defaults : 권한 부여의 기본 옵션을 지정한다.

    • 라인당 하나의 Default_Entry를 정의 한다.

    • Default_Entry는 Default_Type Parameter_List로 정의한다.

    • Default_Type는 다음의 4가지 정의 방법이 있다.

      • Defaults

      • Defaults@Host_Alias

      • Defaults:User_Alias

      • Defaults>runas_username

    • Parameter_List는 Parameter의 리스트를 적는다. Parameter는 다음과 같은 형태가 있다.

      • flag

      • !flag

      • flag=value

      • flag+=value

      • flag-=value

      • other Parameter_Lists

    • 여기서는 유용한 몇개 flag만 소개한다. 자세한 flags는 SUDOERS(5)를 참조한다 (이말을 쓰기 싫어서 작성한 문서에 쓸수 밖에 없다니;;;)

      • lecture: 앞절의 예제 이미지와 같이 타인의 권한으로 수행할때 기억해야 할 것에 대한 짧은 경고문.

        lecture=(never, once, always 중 하나)

      • lecture_file: lecture를 보여줄 때, 이 파일을 보여준다.

        lecture_file=(full path of lecture_file)

      • timestamp_timeout: sudo를 수행한 후 다시 수행할 때, 패스워드를 다시 물어볼지를 결정하는 타임아웃값. 0이면 항상 물어본다.

        timestamp_timeour=(분 단위 정수)

      • editor: visudo에서 사용할 기본 에디터

        editor=(/usr/bin/vim 등의 에디터 full path)

      • passwd_tries: 비밀번호를 틀렸을 경우 다시 물어보는 횟수.

        passwd_tries=(정수)

      • passwd_timeout: 비밀번호 입력대기시간 타임아웃값. 0이면 무한정 기다린다.

        passwd_timeout=(분 단위 정수)

      • fqdn: Host 이름에 Fully Qualified Domain Name을 사용할 것인지의 여부. 이 플래그를 사용하면, sudo수행시에 hostname을 DNS에 쿼리한다.

        fqdn (또는 !fqdn)

      • set_logname: runas user(타겟 유저라고도 함)의 LOGNAME과 USER 환경변수값을 가져오지 않고 현재 값을 유지한다.

        set_logname (또는 !set_logname)

  • User privilege specification

    • 앞서 정의한 Alias들의 조합으로 권한을 부여한다.

    • User_Alias (Host_Alias) = Cmnd_Alias의 형태로 정의한다.

    • Tag_Spec과 Runas_Spec을 사용하는 방법은 역시  SUDOERS(5)를 참조한다. (또.;; 그치만 많이 써본적은 없으므로 필요할때 읽어볼 것.)


sample


  • 가장 소극적인 보안책으로 사용할수 있는 sudoers 예제

    [CODE type=config]# 아무런 Alias를 정의하지 않고,

    # admin group에 속한 계정 전체에 대해서

    # 모든 커맨드를 root권한으로 수행할수 있도록 허용함

    # sudo를 사용하기 위해서 항상 패스워드를 물어본다.

    # Host alias specification

    # User alias specification

    #Cmnd alias specification

    # Defaults
    Defaults   lecture=always,tty_tickets,!fqdn,timestamp_timeout=0,editor=/usr/bin/vi

    # User privilege specification
    root    ALL=(ALL) ALL

    # Members of the admin group may gain root privileges
    %admin ALL=(ALL) ALL

    [/CODE]

  • 다양한 용법과 문법의 예

    [CODE type=config]# User alias specification

    # 3가지의 유저셋을 정의한다.

    User_Alias     FULLTIMERS = millert, mikef, dowdy

    User_Alias     PARTTIMERS = bostley, jwfox, crawl

    User_Alias     WEBMASTERS = will, wendy, wim

    # Runas alias specification

    # 2가지 Runas 유저셋을 정의한다.

    Runas_Alias    OP = root, operator

    Runas_Alias    DB = oracle, sybase

    # Host alias specification

    # 4가지 호스트셋을 정의한다.

    # IP/NETMASK 지정방법, 호스트명 지정방법의 예가 모두 나와있다.

    Host_Alias     CUNETS = 128.138.0.0/255.255.0.0

    Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0

    Host_Alias     SERVERS = master, mail, www, ns

    Host_Alias     CDROM = orion, perseus, hercules

    # Cmnd alias specification

    # 커맨드셋을 정의한다.

    Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\

                           /usr/sbin/restore, /usr/sbin/rrestore

    Cmnd_Alias     KILL = /usr/bin/kill

    Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown

    Cmnd_Alias     HALT = /usr/sbin/halt

    Cmnd_Alias     REBOOT = /usr/sbin/reboot

    Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \

                            /usr/local/bin/tcsh, /usr/bin/rsh, \

                            /usr/local/bin/zsh

    Cmnd_Alias     SU = /usr/bin/su

    # Override built-in defaults

    # 기본 옵션을 지정한다.

    # lecture를 항상 보여준다. fqdn 사용하지 않는다. 3분내에 다시 sudo하면 패스워드를 물어보지 않는다. visudo의 편집기로 /usr/bin/vi를 사용한다.

    Defaults   lecture=always,!fqdn,timestamp_timeout=3,editor=/usr/bin/vi

    # runas user가 root가 될때는 set_logname 하지 않는다.

    # 즉, root 의 환경을 가져오지 않는다

    Defaults>root          !set_logname

    # FULLTIMER에게는 lecture를 보여주지 않는다.

    Defaults:FULLTIMERS    !lecture

    # SERVERS에서는 패스워드 입력을 1분내로 해야 한다. sudo 로그 파일을 별도로 지정한다.

    Defaults@SERVERS       passwd_timeout=1, logfile=/var/log/sudo.log

    # User privileges

    # root도 sudo를 수행할 수 있다.

    root           ALL = (ALL) ALL

    # wheel그룹에 속한 모든 유저는 sudo를 통해 모든 명령을 수행할 수 있다.

    %wheel         ALL = (ALL) ALL

    # FULLTIMERS에게는 패스워드를 물어보지 않는다.

    FULLTIMERS     ALL = NOPASSWD: ALL

    # PARTTIMERS에게는 패스워드를 물어본다.

    PARTTIMERS     ALL = ALL

    # operator에게는 패스워드를 물어보고, 지정된 커맨드셋을 허용한다.

    operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\

                   sudoedit /etc/printcap, /usr/oper/bin/

    # joe는 operator가 될수 있다.

    joe            ALL = /usr/bin/su operator

    # fred는 DB 유저권한이 필요할때에만 패스워드를 물어보지 않고 모든 권한이 허용된다.

    fred           ALL = (DB) NOPASSWD: ALL

    # john은 SERVERS호스트셋에서 옵션없이 su를 수행할 수 있다. su에 옵션을 줄수 없고 root로의 su는 불허한다.

    john           SERVERS = /usr/bin/su [!-]*, !/usr/bin/su *root*

    # jen은 SERVERS호스트셋을 제외한 모든 호스트에서 모든 권한을 패스워드를 물어본후 얻을 수 있다.

    jen            ALL, !SERVERS = ALL

    [/CODE]



이 글은 스프링노트에서 작성되었습니다.

Linux, sudo
# by 미류 | 2008/11/22 20:09 | Linux | 트랙백 | 덧글(0) | ▲ ▼
POST: << sudo 세팅 및 사용법 >>


sudo 관련 해서, 특정한 그룹을 정하고 그 그룹의 인원들에게만 허용된 명령어를 만들기 위해 참고한 글입니다. 이 글에서 쓰인 예제를 참고해서 비교적 쉽게 sudo 설정을 할 수 있었습니다.



1. 세팅
wride:/> gunzip sudo-1.6.8p4-sol26-sparc-local.gz
wride:/> pkgadd -d sudo-1.6.8p4-sol26-sparc-local
===> 설치 완료.


2. 현재 권한 설정 :
아이디 wride 에 root 를 제외한 나머지 사용자에 대해 패스워드 변경 권한을 줌.

wride:/usr/local/sbin] visudo          // sudo 환경설정
----------------------------------------------------------------------------
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification
User_Alias ADMIN=wride                    // admin 권한을 wride에게 줌.

# Cmnd alias specification
Cmnd_Alias PWD=/usr/bin/passwd [A-Z0-9a-z]*, !/usr/bin/passwd root  // command 에 관련된 alias.

# Defaults specification
Defaults logfile=/var/adm/sudo.log        // sudo.log file.
Defaults:ADMIN !logfile

# Runas alias specification

# User privilege specification
root    ALL=(ALL) ALL                          // sudo 사용에 있어 root는 모든 권한을 가짐.

# Uncomment to allow people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

# Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now

ADMIN ALL=PWD   // user_alias 에 admin 권한을 가지는 wride 에게 PWD 명령어 권한을 줌.
----------------------------------------------------------------------------

3. 접속 방법 : id : wride , passwd : *** // 테스트 계정
- wride Server 접속
----------------------------------------------------------------------------
login: wride
Password: ***
Last login: Wed Jun  1 17:04:14 from *****.***.**.**
Sun Microsystems Inc.   SunOS 5.8       Generic Patch   October 2001
wride:/> sudo -l                                   // sudo 로 접근.
Password: ***                                      // 자기 계정 패스워드 입력.
User wride may run the following commands on this host:
    (root) /usr/bin/passwd [A-Z0-9a-z]*, !/usr/bin/passwd root
wride:/>
wride:/> sudo passwd wride                  // sudo 명령어로 사용자 패스워드 변경.
New Password:
Re-enter new Password:
passwd: password successfully changed for wride
wride:/>




Linux, sudo
# by 미류 | 2008/11/22 20:02 | Linux | 트랙백 | 덧글(0) | ▲ ▼
◀ 이전 페이지 위로 다음 페이지 ▶
이글루링크 추가하기
()을(를)
이글루링크로 추가하시겠습니까? 추가하시려면 그룹선택을 하세요.
(그룹선택 하지 않는 경우, 최상단 목록에 추가됩니다.)
그룹선택 :
닫기