[리눅스 일반] 파일퍼미션 설정하는 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 행의 삭제 또는 주석( # ) 처리.

[리눅스 일반] 원격 접속을 위한 telnet 활용

1. 원격서버 로그인하는 대표적인 도구 telnet 개론

– 리눅스의 Shell 에서 그냥 telnet 이라고 하면 telnet 모드로 들어간다.

– telnet 모드로 들어가게 되면 telnet 모드임을 나타내는 telnet> 프롬프트가 나타남. 여기서 telnet 모드의 여러가지 명령어들을 사용할 수 있음.

– close : 현재 연결을 종료함.

– logout : 원격접속된 사용자를 강제 로그아웃하고 연결을 종료함.

– display : 텔넷 환경인수(parameter)들을 출력함.

– mode : 문장 또는 문자모드를 받아들이도록 함.

– open : 원격서버로 연결을 시도함.

– quit : 텔넷을 종료하고 쉘로 빠져나옴.

– send : 특수문자를 전송함.

– set : 텔넷 환경 인수(parameter)들을 설정한다.

– unset : 텔넷 환경인수(parameter)들의 설정을 해제한다.

– status : 현재 상황정보를 출력한다.

– toggle : 텔넷 환경파라미터의 값을 토글(on/off)시킨다.

– slc : 특수문자들의 상태를 변경한다.

– z : 텔넷을 잠시 중단한다.

– ! : 서브쉘을 불러들여 실행한다.

– environ : 환경변수를 변경한다.

– ? : 텔넷모드에서 도움말을 출력한다.

2. 텔넷모드에서 특정 사이트로의 원격접속하기

– telnet IP주소 : ex) telnet 192.168.0.100

– telnet 도메인 : ex) telnet study.superuser.co.kr

– telnet 호스트명 : ex) telnet study

– 호스트명으로 원격 로그인을 하려면 로컬서버의 /etc/hosts 파일에 접속대상 호스트명이 설정되어 있어야 함.

3. telnet으로 원격로그인시에 사용자이름 지정하여 원격 접속하기

– 원격서버의 특정 계정명으로 telnet 접속을 하고자 한다면 -l 옵션 다음에 계정명을 지정하면 됨.

– telnet -l 계정명 IP주소 : ex) telnet -l stkim 192.168.0.100

– telnet -l 계정명 도메인명 : ex) telnet -l stkim study.superuser.co.kr

– telnet -l 계정명 호스트명 : ex) telnet -l stkim study

– 이와 같이 접속을 하게 되면 192.168.0.100 (원격서버) 의 /var/log/messages 파일에 접속로그기록이 남게된다.
jan   4  13:28:00  stkim  login(pam_unix)[1894]: session opened for user stkim by (uid=0)
jan   4  13:28:00  stkim    — stkim[1894]: LOGIN ON pts/0 BY stkim FROM 192.168.0.10

– /var/log/secure 파일에서도 확인할 수 있으며, /var/log/messages, /var/log/secure 파일을 확인하여 불법적인 침입이 있었는가를 확인해야 함.

4. 원격로그인시에 현재 사용자와 동일한 계정으로 telnet 원격 접속하기

– 현재 사용중인 계정명과 동일한 계정명으로 원격로그인 하고자 한다면 -a 옵션을 사용하면 된다.

– telnet -a IP주소 : ex) telnet -a 192.168.0.100

– telnet -a 도메인명 : ex) telnet -a study.superuser.co.kr

– telnet -a 호스트명 : ex) telnet -a study