[리눅스 일반] 파일 및 디렉토리 복사 실무

 1. cp 활용 개론

 – 사용형식 : cp [ 옵션 ] 원본파일 복사파일
                      cp [ 옵션 ] 원본파일( 디렉토리 ) 디렉토리

 – mv 와  cp 명령어의 차이점 : mv 명령어는 복사하고 난 후에 원본파일이 지워지게 된다.

 2. 디렉토리전체를 복사하는 방법

 – cp 명령어의 -r 옵션과 -R 옵션은 지정한 디렉토리내의 하위디렉토리들까지 모두 복사된다는 점에서 동일함. 하지만 -r 옵션이 파일복사에 사용되었을 경우에는 그냥 복사만 됨.

 – cp -r TestDir1 TestDir2

 3. 원본파일의 소유자, 그룹소유자, 권한, 시간정보등을 그대로 보존하면서 복사하기

 – cp 명령어는 실행한 사용자의 umask 값에 따라서 파일과 디렉토리의 퍼미션이 결정됨.

 – 특정 디렉토리를 원본 디렉토리와 그 안에 있는 파일들의 소유자, 그룹, 권한, 시간정보등을 원본과 동일하게 복사하려면 cp 명령어를 사용할 때에 -rp 옵션을 함께 사용해야 함.

 – cp -rp TestDir1 TestDir2

 4. 복사 명령어 cp 의 다양한 복사방법들

 – -a 옵션 : 복사대상 원본파일의 속성( attribution ) 과 링크정보등을 그대로 유지하면서 복사하는 옵션임. cp 명령어 사용시 -dpR 옵션을 함께 사용한 것과 같은 역할을 함.

 – -b 옵션 : 복사하고자 하는 파일이 동일한 이름으로 이미 그 위치에 존재하고 있을 경우, 덮어쓰기 또는 원본을 지우고 복사할 경우에 원본파일의 복사본을 만들어 둠.

 – -f 옵션 : 복사대상파일이 이미 그 위치에 존재한다면 파일을 지우고 복사함.

 – -i 옵션 : 복사대상파일이 이미 그 위치에 존재한다면 덮어쓸 것인가 또는 복사하지 않을 것인가를 사용자에게 확인하는 절차를 거침.

 –
-P 옵션 : 복사대상이 되는 원본파일이 디렉토리경로와 함께 지정되었을 경우에 지정된 디렉토리경로를 그대로 복사함. 이 경우
원본파일은 Dir1/SubDir1/SubDir2/FileName 등과 같이 디렉토리 경로와 함께 지정이 되어야 함.

 – -u 옵션 :
복사되는 원본파일의 이름과 동일한 파일이 대상위치에 존재할 경우에 원본파일과 변경날짜를 비교하여 최신파일일 경우에 복사하지 않는 옵션임.

 5. 관리자 전용 복사명령어 install 활용하기

 – cp 명령어와 유사한 명령이지만 cp 명령어에 비해 다양한 복사 옵션들이 있다는 점이 좀 특이함

 – 사용형식 : install [ 옵션 ] [ -s ] [ –strip ] 원본파일 복사파일
                      install [ 옵션 ] [ -s ] [ –strip ] 파일….. 디렉토리
                      install [ 옵션 ] [ -d, –디렉토리 ] 디렉토리…

 6.  사용가능한 옵션들

 – -c : 전통 유닉스 버전과 호환을 위한 옵션으로 별다른 의미는 없음.

 – -d, –diectory : 지정한 파일이 복사될 경로를 지정하는 옵션으로서 만약 지정한 경로명의 디렉토리가 존재하지 않는다면 직접 만들어서 복사를 함.

 – -g, –group group :  지정한 파일 복사시에 이 옵션으로 지정한 소유그룹을 복사되는 파일의 소유그룹으로 설정함.

 – -m, –mode mode : 지정한 파일 복사시에 이 옵션으로 지정한 퍼미션을 복사되는 파일의 퍼미션으로 설정함.

 – -o, –owner owner : 지정한 파일 복사시에 이 옵셔으로 지정한 소유자를 복사되는 파일의 소유자로 설정함.

 – -s, –strip : 지정한 파일복사시에 이 옵션이 사용되면 strip 명령을 수행함. 심볼릭테이블이 삭제되므로 파일의 크기가 줄어듬

[리눅스 일반] 파일퍼미션 설정하는 chmod 실무활용법

 1. 파일과 디렉토리의 퍼미션( permission ) 정복하기

 – chmod 명령어는 특정 파일 또는 디렉토리의 퍼미션( permission )을 변경하는 명령어임.

 –
퍼미션이란 특정 파일이나 디렉토리에 대하여 읽기, 기록하기, 삭제하기등의 권한을 설정해 놓은 것으로 다중사용자 운영체제(
Mult-User Operating System ) 에서 파일의 접근권한과 보호등을 위하여 반드시 필요한 것.

 – 퍼미션       일반적인 의미                  파일                                                    디렉토리
        r             읽기( read ) 권한           파일을 읽을 수 있음              디렉토리의 내용을 볼수 있음.
                                                                                               ( ls 로 파일리스트 확인 가능 )
       w             쓰기( write) 권한            파일에 저장, 삭제할          디렉토리에 파일저장, 디렉토리이름
                                                                수 있음                             변경, 삭제등 가능
       x              실행(execution)권한    파일을 실행할 수 있음         디렉토리에 접근할 수 있음
                                                                                         ( cd 로 접근가능, ls로 리스트는 불가)
       s               SetUID, SetGID           파일소유자( SetUID ), 그룹소유자( SetGID ) 의 권한으로 실행함
       t                Sticky Bit 권한                       공유디렉토리로 사용됨

 – 가능한 옵션들
-c : 올바르게 변경된 파일들만 -v 옵션을 적용하여 자세히 보여준다.
-f : 가능한 불필요한 메시지를 보여주지 않고 간략하게 보여준다.
-v : 실행과정을 자세하게 보여준다.
-R : 디렉토리와 그안에 존재하는 서브디렉토리들까지 모두 적용한다.

 – 퍼미션 진수법
2진수          8진수          표시되는 퍼미션            의미하는 내용
 000                0                        —                           아무런 권한이 없음
 001                1                        –x                           실행( execution ) 권한만 있음
 010                2                        -w-                          쓰기( write ) 권한만 있음
 011                3                        -wx                         쓰기와 실행 권한만 있음
 100                4                        r–                           읽기( Read ) 권한만 있음
 101                5                        r-x                           읽기과 실행권한만 있음
 110                6                        rw-                          읽기과 쓰기권한만 있음
 111                7                        rwx                         읽기, 쓰기, 실행 권한이 있음

 – 파일유현
– : 일반파일을 의미
b : 블럭구조의 특수파일(Block Special File ) 을 의미함.( 예 : /dev/sda )
c : 입출력에 사용되는 특수파일( Character Special File ) 을 의미함.( 예 : /dev/console )
d : 디렉토리( Directory ) 를 의미하며, 디렉토리도 하나의 특수파일로 취급됨.
l : 심볼릭링크파일( Link File ) 임을 의미함.
p : 파이프파일( Pipe ) 임을 의미함.
s : 소켓파일( Socket ) 임을 의미함.

 2. 8진수로 파일의 퍼미션 설저하기

 – chomd 755 testfile

 3. 특정 문자로 퍼미션 설정하기

 – chmod a+r testfile
  u : 소유자( user ) 를 의미함.
  g : 그룹( group ) 을 의미함.
  o : 다른사용자( others ) 들을 의미함.
  a : 모두( all ) 를 의미함( Default )
 이 문자와 함께 “+” 기호가 사용되면 “권한을 부여한다” 라는 의미이며, “-” 기호가 사용되면 “권한을 제거한다” 라는 의미가 됨.

 4. 여러개의 파일과 디렉토리의 퍼미션 동시에 설정하기

 – chmod 755 php*

 5. 모든파일과 디렉토리의 퍼미션 한번에 설정하기

 – chmod 755 *

 6. 특정디렉토리내의 모든파일과 서브디렉토리퍼미션 한번에 설정하기

 – chmod -R 755 TestDir

 – -R 옵션과 함께 사용하면 서브디렉토리퍼미션까지 한번에 설정이 된다.

[리눅스 일반] 파일의 소유자, 소유그룹 변경하기

 1. 파일과 디렉토리의 소유자 및 소유그룹 변경하는 chown 명령어 개론

 – chown 명령어는 CHange OWNer 의 약어로서 파일이나 디렉토리의 소유자와 소유그룹을 변경할 때에 사용하는 명령어임.

 –
사용형식 : chown [ -Rcfv ] [ –recursive ] [ –changes ] [ –help ] [
–version ] [ –silent ] [ –quiet ] [ –verbose ] [ user ] [ :. ] [
group ] 파일…

 2. 특정파일의 소유자 변경하기.

 – chown stkim testfile

 – 명령어가 허용이 되기 위해서는 파일에 대한 소유권이 있어야만 가능하며, 아무나 파일 또는 디렉토리의 소유자를 변경할 수 있는것이 아님.

 3. 특정파일의 소유자와 소유그룹을 동시에 변경하기

 – chown 명령어로는 파일의 소유자와 함께 소유그룹을 동시에 변경할 수 있음. 🙁 콜론) 으로 구분하여 “소유자:소유그룹” 을 지정하면 소유자와 소유그룹이 동시에 변경됨.

 – chown stkim:stkim testfile

 4. 특정 디렉토리의 소유자와 소유그룹 동시에 변경하기

 – 리눅스에서는 디렉토리도 하나의 특수파일로 인식하기 때문에 파일의 소유자와 소유그룹을 변경하는 방법과 디렉토리의 소유자와 소유그룹을 변경하는 방법이 동일함.

 – chown stkim:stkim testDir

 5. 특정 디렉토리내의 모든 파일( 디렉토리 )의 소유자( 소유그룹 )을 동시에 변경하기

 – chown 명령어의 -R 옵션을 사용하면 특정 디렉토리내에 있는 모든 파일과 서브디렉토리의 소유자와 소유그룹을 한꺼번에 변경할 수 있음.

 – chown -R stkim:stkim dir1

 6.  소유자 또는 소유그룹변경시에 변경메시지 확인하기

 – chown 명령어 사용시에 -c 옵션을 사용하면 소유자와 소유그룹의 변경내용에 대해서 자세한 메시지를 출력함.

 – chown -c stkim:stkim testFile

 7. 파일의 소유자와 소유그룹변경시에 UID 와 GID 로 지정하여 변경하기

 – 일반적으로 chown 명령어로 소유자와 소유그룹을 변경할 때에 계정명( ID )과  그룹명으로 지정함.

 – chown 에서 ID 와 그룹명대신 UID 와 GID 를 지정하여도 변경이 가능함.

 – chown 500:500 testFile

 8. UID 와 GID 를 지정하여 모든 파일과 디렉토리의 소유자와 소유그룹을 변경하기

 – chown -R 501:502 testDir

 – 소유자와 소유그룹을 변경할 때에 ID 를 사용해도 되지만 UID와 GID 를 사용해도 동일한 결과를 얻을 수 있음.

 – UID 와 GID 는 /etc/passwd 파일에 정의되어 있음. UID 와 GID 를 이용하여 소유자와 소유그룹을 변경 할 때에는 /etc/passwd 파일에서 UID 와 GID 를 확인해야 함.

 9. 특정 디렉토리내의 특정파일들에 대해서만 소유자와 소유그룹 변경하기

 – chown -R stkim:stkim TestDir –from=test:test

 – TestDir 라는 디렉토리내에 존재하는 파일들 가운데 소유자가 test 이고 소유그룹이 test 로 되어있는 파일들의 소유자를 stkim 으로 변경하고 소유그룹을 stkim 으로 변경하라는 명령문.

[리눅스 일반] 사용자 패스워드 입력 및 설정하기( passwd )

 1. 사용자 패스워드를 변경하는 passwd 개론

 – passwd 명령어는 사용자의 패스워드 입력 및 변경하는 명령어임. 패스워드는 리눅스서버의 일차적이고 기본적인 보안역할을 하는 것으로 필수관리 항목임.

 – 리눅스시스템에서 기본적인 패스워드는 8자로 제한되지만, MD5 를 사용하여 패스워드를 입력할 경우에는 256문자까지 패스워드 입력이 가능함. MD5 는 -S 옵션을 사용하여 설정해야 함.

 – 사용형식 : passwd [ -k ] [ -l ] [ -u [ -f ] ] [ -d ] [ -S ] [ 사용자ID ]

 2. 관리자에 의한 사용자생성 후 passwd 명령어로 패스워드 설정하기

 – 서버관리자는 새로운 계정하용자를 생성한 후에는 반드시 패스워드를 설정해야만 함.

 – 슈퍼유저( root )는 일반계정사용자의 패스워드를 마음대로 변경할 수 있음.
 참고로 일반사용자는 자기자신의 패스워드만 변경할 수 있음.

 3. 일반사용자의 자기자신 패스워드 변경하기

 – 일반사용자가 자기자신의 패스워드를 변경하고자 한다면 그냥 passwd 라고만 입력하면 됨. 그런 다음 현재 사용중인 패스워드를 입력하고 새로 사용할 패스워드를 동일하게 두번 입력해 주면 패스워드가 변경됨.

 – passwd

 4. passwd 명령어로 패스워드 설정시 MD5 로 암호화 하기

 – MD5 를 사용하고자 한다면 -S 옵션으로 설정할 수 있음.

 – MD5 로 암호화하는 대부분의 이유는 패스워드 사용문자를 길게 사용하여 보안을 강화하기 위한 것임. 하지만 최근 리눅스 배포판들은 모두 기본적으로 MD5 암호화방식을 사용하고 있으므로 굳이 -S 옵션을 사용할 필요는 없음.

 – passwd -S stkim

 5. passwd명령어로 일반계정사용자의 패스워드 락(lock)걸기

 –
수퍼유저( root )는 passwd 명령어의 -l 옵션을 사용하여 일반계정사용자의 암호에 lock 을 걸어서 접속을 제한할 수
있음. 일반사용자의 패스워드에 lock 을 거는 것은 일시적으로 접속을 제한해야하는 경우에 관리자에 의해 설정되는 것임.

 – paswd -l stkim

 – lock 을 걸어두게 되면 해당 사용자는 접속이 불가능하게 됨.

 6. 패스워드 락( lock )걸린 사용자의 패스워드 락( lock ) 해제하기

 – 패스워드 lock 을 풀어주려면 paswwd 명령어에 -u 옵션을 사용하여 해제함.

 – passwd -u stkim

 – 패스워드 lock 이 풀리게 되면 stkim 사용자는 이전에 사용했던 패스워드를 그대로 사용하여 접속이 가능해 짐.

 7. 계정사용자의 패스워드 삭제하기

 – 수퍼유저( root )는 일반계정사용자의 패스워드를 삭제할 수 있음.

 – 계정사용자의 패스워드를 삭제하게 되면 아무 패스워드나 사용하여 로그인할 수 있음. 특별한 경우가 아니면 패스워드삭제는 하지 않는것이 좋음.

 – 계정사용자의 패스워드 삭제시 passwd 명령어에 -d 옵션을 사용하면 됨.

 – passwd -d stkim

[리눅스 일반] 원격서버의 사용자 계정정보 확인하기( finger )

 1. 로컬 또는 원격시스템의 사용자 계정정보 확인하는 finger 개론

 – finger 는 로컬사용자 또는 원격서버사용자의 계정정보를 확인하는 명령어

 – finger 는 지정된 계정사용자의 정보를 /etc/passwd 파일에서 읽어서 보여줌.

 – 사용형식 : finger [ -lmsp ] [ 계정… ] [ 계정@호스트… ]

 – 또한 finger는 로컬서버의 사용자 뿐아니라 원격지서버의 사용자 계정정보도 확인이 가능함.

 –
서버보안을 위하여 /etc/xinetd.d/finger 파일을 삭제하고 /etc/services 파일 내에 finger 행을
삭제하여 finger 서비스를 죽이는 것이 서버계정사용자 정보를 보호하고 서버보안을 한층 강화시키는 현명한 방법임.

 – finger 명령어에 -s 옵션을 사용하면 계정 정보를 간단히 정리하여 보여줌.

 – finger -s

 2. finger 명령어로 원격서버의 사용자 계정정보 확인하기

 – finger 명령어는 원격서버에 존재하는 사용자의 계정정보도 확인이 가능함.

 – 특정 호스트내의 사용자로그인 정보라든지 또는 원격서버의 계정사용자 계정정보등을 로그인하지 않고서도 원격지에서 확인이 가능함.

 – finger @host3.pchero21.com
 원격서버( host3.pchero21.com )에 접속해있는 계정사용자 모두를 확인하는 명령어
 각각의 사용자들이 어디에서 접속하였으며, 사용하고 있는 터미널 정보등을 확인할 수 있음.

 2. finger 명령어로 원격서버의 특정 사용자 계정정보 확인하기

 – finger stkim@host3.pchero21.com
 원격서버( host3.pchero21.com )의 특정 사용자의 계정정보( stkim )에 대해서 확인하는 finger 명령

 3. finger 로 계정정보 확인이 가능하도록 설정하는 방법 그리고 보안

 – finger 명령어를 이용하여 서버사용자의 계정정보를 확인하려면 확인대상 원격지서버( host3.pchero21.com )에 finger 서비스가 허용되어있어야 함.

 – finger 허용을 위한 host3.pchero21.com 의 /etc/xinetd.d/finger 파일에 대한 설정예
 /etc/xinetd.d/finger 파일
 service finger
 {
       disable                = no
       socket_type        = stream
       wait                      = no
       user                     = nobody
       server                  = /usr/sbin/in.fingerd
 }

 – tcpwrapper 에서도 허용이 되어 있어야 함. 하지만 허용되지 않은 시스템에서 finger 를 사용하는 것은 일종의 불법 scan 이므로 법적인 책임을 질 수도 있음.

 – 대부분의 서버관리자들은 finger 서비스를 허용하지 않고 있음.

 – finger 서비스가 꼭 필요한 경우가 아니라면 밑의 2가지 작업을 해두고 서버보안을 강화하느것이 현명함.
 첫째 : /etc/xinetd.d/finger 파일의 삭제
 둘째 : /etc/services 파일내에서 finger 행의 삭제 또는 주석( # ) 처리.