728x90

특정 디렉토리 읽기쓰기 권한 부여 ACL


ACL(Access Control List)은 디렉토리 및 파일에 특정 사용자, 그룹에 특정 권한을 넣어 줄 수 있는 기능이다.


share 라는 노무팀 디렉토리가 있는데, 이 디렉토리는 노무팀원들만 읽고 쓸 수 있다.
여기에 프로젝트팀원 중 한 명에게 share 디렉토리를 읽을 수 있는 권한을 주어야 하는데,
프로젝트팀원을 노무팀 그룹에 넣을 수는 없는 일이다.
타 팀원을 노무팀 그룹에 넣을 경우, share 디렉토리 말고도 노무팀의 다른 소유 디렉토리를 읽을 수 있는 위험이 있고, 여러 가지 혼선이 있을 수 있기 때문이다.

이럴 때 ACL을 사용하면 문제는 해결된다.


setfacl -m <rules> <target directory>
- u:<uid>:<perms>
  사용자에 대한 access ACL을 설정. 사용자명이나 UID를 지정 가능. 사용자는 시스템 상 어느 사용자라도 가능
  허가 (<perms>)는 읽기, 쓰기와 실행을 가리키는 r, w, x 문자를 조합하여 설정
- g:<gid>:<perms>
  그룹에 대한 access ACL을 설정. 그룹명이나 GID를 지정 가능. 그룹은 시스템 상 어느 그룹이라도 가능
  허가 (<perms>)는 읽기, 쓰기와 실행을 가리키는 r, w, x 문자를 조합하여 설정
- o:<perms>
  파일의 그룹에 속한 사용자가 아닌 다른 사용자에 대한 access ACL을 설정
  허가 (<perms>)는 읽기, 쓰기와 실행을 가리키는 r, w, x 문자를 조합하여 설정


디렉토리를 생성하고 난 이후 디렉토리에 부여된 권한이 어떻게 되는지 확인



특정 사용자 jsk005 에게 읽기와 쓰기 권한 부여 하고 난 다음에 권한 확인


setfacl 은 ACL 설정 명령,

getfacl 은 설정된 ACL 확인 명령이다.
ACL은 ACL옵션이 적용된 파티션에만 쓸 수 있다.
mv로 이동하면 ACL설정은 유지되나 cp로 복사하면 ACL설정은 사라진다. cp에 -p 옵션을 붙이면 ACL설정은 유지된다.

setfacl -x <rules> <target directory>
  사용자, 그룹이나 기타 그룹에 대한 모든 권한을 삭제하려면 -x 옵션을 사용


특정 사용자 jsk005 에게 권한 삭제하고 난 다음에 권한 확인


적용된 ACL 명령어를 제거

setfacl -b <target directory>



맨 처음 디렉토리를 만들고 나서 getfacl 로 권한을 확인한 것과 동일한지 확인해보면 알 수 있다.

하위디렉토리까지 설정된 권한을 제거하려면 setfacl -R -b /home/share 로 명령하면 된다.


참고 : http://www.digistory.co.kr/?p=152

참고 : http://blog.pages.kr/277



블로그 이미지

Link2Me

,
728x90

CentOS 6.X 방화벽 설정


방화벽은 서버와 클라이언트(User)간에 통신하는 포트를 제한하는 관문이다.

서비스마다 사용하는 포트가 다르다. 해당 포트를 막으면 통신을 할 수가 없다. 꼭 필요한 포트만 열어서 보안을 철저하게 해야 한다.

아래 설정은 CentOS 6.5 에서 설정해본 사항이다. 아직도 모르는게 많아서 구글링을 하면서 배우는 중이다.


// 열린 포트 확인
service iptables status

// iptables 설치 확인
rpm -qa | grep iptables


INPUT - 호스트 컴퓨터를 향한 모든 패킷

OUTPUT -  호스트 컴퓨터에서 발생하는 모든 패킷
FORWARD - 호스트 컴퓨터가 목적지가 아닌 모든 패킷, 즉 라우터로 사용되는 호스트 컴퓨터를 통과하는 패킷


포트 80,3306 추가

80 포트는 인터넷 브라우저에서 접속하는 포트이며,

3306 포트는 MySQL 접속 포트이다. 보안을 위해서 다른 포트로 변경하여 사용할 수도 있다.


//방화벽 설정

# vi /etc/sysconfig/iptables


FTP 통신을 위한 포트를 추가하고 싶다면 20번, 21번 두개의 포트를 추가해야 한다.:

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT


네임서버

-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT


POP3

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT


IMAP

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT


Secure IMAP

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT


웹서버에 SSL 인증서가 설치되어 https 주소로 서비스하는 경우 TCP 443 추가
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT


# service iptables restart

또는

# /etc/init.d/iptables restart

방화벽 설정 내용을 변경했다면 restart 를 해준다.




방화벽 변경한 정보를 저장하려면 반드시 수정한 방화벽 세팅을 restart 하고 나서

# service iptables save

해줘야 된다.


# service iptables stop

또는

# /etc/init.d/iptables stop

방화벽 끄기


방화벽 설정 파일은 파일접속권한이 0600 이다.

설정파일을 PC에서 수정해서 SFTP 등으로 올렸다면 모드가 어떤 상태인지 확인을 해야 한다.




이것저것 고민하기  싫다면 아래와 같이 해주면 된다.

1. CentOS 6.6을 설치하면 기본적으로 22번 포트만 open 되어 있다.

2. vi /etc/sysconfig/iptables

기본설정정보를 모두 지우고 아래 내용을 복사하여 붙여넣기하고 저장한다.
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:INPUT - [0:0]
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT


3. # /etc/init.d/iptables restart (방화벽 재시작)

4. # service iptables save (변경한 정보 저장)

5. 이걸로 방화벽 세팅 설정 끝.

    22번 포트, Web 포트 80, https 443 포트 이것만 오픈하고 해킹공격 관련된 코드를 추가한 것이라고 보면 된다.


블로그 이미지

Link2Me

,
728x90

그룹 사용자 추가/삭제/변경


그룹환경파일은 /etc/group, /etc/gshadow 이다.

groupadd 그룹생성

groupdel 그룹삭제

groupmod 그룹정보 변경


사용자 계정을 생성하고 나서 사용자의 그룹을 지정하려면

먼저 그룹을 생성해야 한다.

# groupadd sshgroup

# groupadd -g 20 sshgroup       // GID 20 인 sshgroup 그룹 생성, 특정 GID를 할당하여 그룹을 생성

# gpaswd -A jsk005 sshgroup    // jsk005 계정사용자에게 sshgroup 관리자 권한 부여

# groups {username}               // 사용자가 어떤 그룹에 속해있는지 확인


root(관리자)가 jsk005 계정사용자에게 sshgroup 그룹 관리자 권한을 부여한 경우 jsk005 로 로그인한 다음에

$ gpasswd sshgroup 패스워드    // 그룹 패스워드 지정

$ gpasswd -a user1 sshgroup     // user1 을 sshgroup 그룹에 추가


usermod : 사용자의 정보를 수정하는 명령어

usermod [옵션] 사용자명

- g : 기본 그룹을 변경한다.

- G : 추가 그룹을 변경한다.

- L : 사용자의 패스워드에 LOCK을 걸어 로그인을 막는다.

- U : 사용자의 패스워드에 걸린 LOCK을 푼다.

- d : 홈디렉토리를 변경한다.

# usermod –e 2014-12-05 user1   // user1 계정의 만기일을 2014-12-05 일로 설정


사용자계정을 그룹에 등록

# usermod -g tempgroup jsk005 // tempgroup 그룹에 jsk005  멤버 등록

# usermod -G sshgroup jsk005     // sshgroup 그룹에 jsk005 멤머 등록



jsk005로 로그인후 groups 를 치면 sshgroup 가 나옴

$ usermod -G sshgroup, groupb jsk005    // jsk005 사용자를 sshgroup 그룹, groupb 그룹에 동시 등록


특정 디렉토리 밑에 있는 모든 디렉토리에 그룹 쓰기 권한주기 

# chmod -R g+w


그룹 멤버를 완전히 새로 설정하는 예이다. 

즉, 기존 그룹멤버를 완전히 무시하고 새로운 그룹멤버들을 설정하는 방법이다.

# gpasswd -M baikju sshgroup


여러명의 user를 추가할 때 어떻게 하는지 보자


# grep jsk005 /etc/group      // jsk005 계정 사용자가 속한 그룹 검색



그룹이름 변경

# groupmod -n 변경할그룹이름 기존그룹이름


그룹 삭제

그룹에 사용자가 있다면 삭제가 불가능하다.


그룹에서 사용자계정 삭제

You can also remove a user from secondary group with:

# gpasswd -d username groupname

# gpasswd -d user2 sshgroup     // user2 를 sshgroup 그룹에서 삭제



유저정보 조회

id jsk005  ==> 사용자의 uid,gid, group를 보여준다.

-g : 기본 그룹의 gid를 출력한다.

-G : 사용자가 속한 모든 그룹의 gid를 출력한다.

-u : 사용자의 uid를 출력한다.

-n : 위의 옵션과 함께 사용하여 숫자 대신 이름을 출력한다.


블로그 이미지

Link2Me

,
728x90

리눅스 권한, 소유권자 하위 디렉토리 까지 바꾸기


chown 명령어를 쓰면 파일 또는 디렉토리의 소유자와 그룹 소유자를 변경하는데 사용한다.
# chown 소유자:소유그룹 파일또는디렉토리이름
# chown -R 소유자:소유그룹 파일또는디렉토리명  // 디렉토리와 디렉토리 하위 전체 파일을 모두 변경


# chgrp  [ 옵션 ]  그룹명  대상파일   //파일이나 디렉토리의 그룹 소유권을 바꾼다.
파일의 소유자나 슈퍼 유저만이 파일의 그룹 소유권을 바꿀 수 있다.

chown 명령어는 소유자와 소유그룹을 한꺼번에 변경할 수 있지만

chgrp로는 특정 파일이나 디렉토리의 소유 그룹만을 변경할 수가 있다.

옵션
-v : 명령의 결과를 자세히 출력한다.
-R : 디렉토리와 그 하위 파일들의 소유권을 모두 바꾼다.

# chmod -Rf 707 디렉토리명  //하위 디렉토리 및 파일들까지 권한 변경


서버작업을 하다보면 특정 디렉토리내의 모든 파일과 디렉토리들을 특정 소유주와 소유그룹으로 변경해야하는 경우가 흔히 발생한다.
웹에서 자료실등의 파일업로드 디렉토리의 소유주와 소유그룹을 nobody와 nobody로 해줘야 할 때가 종종 있을 것이다.
Apache에서 특정 디렉토리로 파일을 저장하려면 읽기, 쓰기 권한이 있어야하는데 디렉토리의 소유주와 소유그룹을 nobody로 설정해 버리면 간단히 해결할 수 있으므로 이런 작업이 필요하다.


이 경우 보안에 문제가 생길 수도 있으므로 ACL(Access Control List) 권한을 부여하여 특정사용자에게 특정 디렉토리에 읽기 쓰기 권한을 부여할 수 있다.


'리눅스' 카테고리의 다른 글

리눅스 CentOS 6.X 방화벽 설정  (0) 2014.12.26
그룹 사용자 추가/삭제/변경  (0) 2014.11.19
리눅스 su 와 su - 의 차이  (3) 2014.11.10
파일내용 확인 : cat, head, tail, less  (0) 2014.11.07
VI 에디터 사용법 ★★  (0) 2014.11.06
블로그 이미지

Link2Me

,
728x90

리눅스 su 와 su - 의 차이

su는 substitute user 의 약자이다.


특정유저로 접속하면 로긴 스크립트(.bashrc 와 .bash_profile, 그밖의 환경변수 설정들)들을 읽어서 그 유저의 환경변수를 세팅한다.

보안을 위해서는 root 계정으로 로그인하지 못하도록 설정해 두는게 좋다.

설정방법은 SSH 보안설정 방법 http://link2me.tistory.com/491 게시물을 참조하면 된다.


유닉스/리눅스는 윈도우와 달리 root 권한으로 잘못 명령을 내려 rm -rf * 를 하면 모든 데이터가 다 달라가고 복구가 불가능할 수 있다.


su - 하면 root 유저의 홈 디렉토리로 이동하고 root 유저의 환경변수를 완전히 읽어서 세팅해준다.

su - 는 사용자만 바꾸는것이 아니고 새로 로그인 하는 효과를 나타낸다.


하지만 su 를 하면 root 유저의 홈 디렉토리에 있는 /root/.bash_profile 과 /root/.bashrc 의 환경변수를 읽어들이지 않고, 현재 로그인된 유저의 환경설정 변수를 그대로 사용한다.


사용자를 추가해서 환경변수 파일을 한번 살펴보자.


앞에 . 이 붙어있는 것은 숨김파일을 의미한다.

따라서 그냥 아래 처럼 리스트를 조회하면 아무런 것이 나오지 않는다.



사용자 추가를 한 정보는 /etc/passwd 에서 확인할 수 있다.

파일 내용 확인은 # cat /etc/passwd 로 확인할 수 있는데, 여기서는 보안상

# tail -1 /etc/passwd 를 사용하여 확인해 본다.



su - jsk005

su jsk005

를 한 결과를 그림으로 살펴보자.


pwd (현재 디렉토리 경로)가 su 를 한 경우에는 /root 로 되어 있고, su - 를 한 경우에는 유저의 홈디렉토리로 변경된 것을 알 수 있다.

다른 유저로 변경하면서 그 사용자의 환경변수를 읽어들여서 로그인하는 것처럼 하고 싶다면 su - userid 을 해줘야 한다.



su - 를 하면

su - root 를 하는 것과 같은 의미이다.
따라서 root 유저의 환경변수를 온전히 사용하고 싶다면 su - 를 사용해야 한다.

블로그 이미지

Link2Me

,
728x90

파일내용 확인 : cat, head, tail, less


파일 정보 보기

cat         // 파일의 내용을 터미널에서 간단히 확인하고자 할 때

head       // 파일의 첫부분을 출력하며, 기본은 10줄을 출력

tail          // 파일의 끝부분을 출력하며, 기본은 10줄을 출력

more       // 파일의 내용을 화면 단위로 출력

less        // more 와 동일한데, 다른 점은 방향키를 통해서 스크롤이 가능

|(파이프라인)    // 데이터의 복잡한 연산을 수행할 때 종종 사용한다. 정상 메시지만 뒤에 있는 명령어로 전달

grep         // 파일내에서 "패턴"을 만났을 때, 그 패턴을 가지고 있는 라인을 출력한다.



# cat [ 옵션 ] [ 파일명]    // [ ] 대괄호는 생략가능 하다는 의미

옵션

-n : 각 행을 출력하면서 행 번호를 붙임

-b : 공백 라인을 제외한 모든 라인에 행 번호를 붙임


# cat /etc/fstab

# cat /etc/services

cat 은 문서의 크기가 작을 때는 유용하다. 하지만 grep 와 같이 사용하면 원하는 걸 뽑아낼 수 있다.


# cat -n /etc/services | less +100

그냥 cat -n /etc/services 를 실행하면 엄청나게 많은 행이 화면을 지나가고 만다.

따라서, 파이프라인(|)을 사용하고, less 를 사용해서 100번째 행부터 보겠다는 의미이다.

화살표 방향키를 누르면 한줄 위로 한줄 아래로 움직이는 걸 확인할 수가 있다.

# cat /etc/services | grep --color ftp     // /etc/services 파일에서 ftp 파일이 있는 행만 찾아라.

# cat /etc/services | grep --color ^ftp  // /etc/services 파일에서 행의 처음이 ftp 인 파일을 찾아라.

   ※ 정규식이 적용되어 있는 것임

# cat /etc/passwd | grep --color bash$   // /etc/passwd 파일에서 끝 문자가 bash 로 시작되는 글자를 찾아라.

# grep -i --color http.$ /etc/services     // /etc/services 파일에서 끝 문자가 http가 포함된 행을

                                                       대소문자 구분없이 결과를 보여달라.


# grep --color http.$ /etc/services

   ※ 옵션으로는 -i (대소문자 구별 무시), -v (지정한 패턴을 제외한 문자 출력), -r (하위 디렉토리 전부다)


# head /etc/passwd   '// 기본은 10줄을 보여주며, 처음부터 10줄을 보여달라는 의미

# head -15 /etc/passwd  '// 문서의 처음부터 15줄을 보여달라는 의미

# tail /etc/services   '// 문서의 끝에서 10줄을 보여달라

# tail -15 /etc/services  '// 문서의 끝에서 15줄을 보여달라

# tail -f /var/log/secure  '// 실시간으로 변하는 마지막 10줄을 보여달라


질문 : /etc/passwd 파일의 2번째 행부터 5번째 행까지 모니터 화면에 출력하라.

Answer1 : # head -5 /etc/passwd | tail -4

해설 : 먼저 head 명령어를 사용하여 앞에서부터 5줄을 뽑아내고 파이프(|)를 사용해서

         뽑아낸 것중에서 tail 명령어를 사용해서 하단에서부터 4개를 뽑아낸다.

         그러면, 원하는 2행부터 5행까지 뽑아낼 수가 있다.


Answer2 : # sed -n '2,5p' /etc/passwd


질문 : /etc/passwd 파일에서 ftp, ssh 가 들어있는 라인을 출력하라.

Answer : # grep -e ftp -e ssh /etc/passwd


이제 파일의 내용을 모니터 화면이 아니라 다른 파일로 출력하고 싶다면 어떻게 해야 할까?

리다이렉션 기능을 이용한다.


문법

명령어  > 파일명

명령어  >> 파일명


구 분

>

>>

파일 X

  파일 생성후 결과 저장   파일 생성후 결과 저장

파일 0

  덮어씀   기존 내용에 추가
 

# cp /etc/passwd /root/1.txt       // 파일을 복사

# cat /root/1.txt | tail -15 > /root/2.txt    // 1.txt 파일의 끝부분에서 15줄을 2.txt 파일에 저장하라.



블로그 이미지

Link2Me

,
728x90

VI 에디터 사용법


VI 에디터는 유닉스에서 공통으로 사용하는 에디터이다.

유닉스용 VI는 상용이라서 리눅스에서는 Free 버전으로 VIM 을 만들었다.

명령어를 vim 파일명 으로 입력해도 되고 vi 파일명으로 입력해도 된다.

alias 로 해서 vi 를 입력하면 vim 으로 자동 인식하도록 해두었기 때문이다.

vi improved 의 약자가 vim 이다.

vi명령어는 어떻게 구성되어 있을까?
vi명령어는 다음과 같이 입력 모드, 명령 모드, 콜론 모드(ex 모드) 크게 세가지로 분리된다.


모드

명령어

동 작

입력모드

i

    현재 커서가 위치한 왼쪽에 글자가 입력됨.( i : Insert)

a

    현재 커서가 위치한 뒤에 글자가 입력됨 ( a : Append)

o

    현재 커서가 있는 줄 아래에 빈줄 삽입 ( o : Open Line)

O

    현재 커서가 있는 줄 위에 빈줄 삽입

R

    덮어쓰기 모드로 전환

명령모드

/se nu

    행번호 보여주기

/se nonu

    행번호 보여주기 취소

/name

    name(찾고자하는 문자열) 찾기

n

    name 의 다음 찾기

N

    역방향으로 name 찾기

:s/변경할문자열/변경문자열

    현재 행의 '변경할 문자열'을 '변경문자열'로 대체

:%s/변경할문자열/변경문자열

    파일 전체 '변경할 문자열'을 '변경문자열'로 대체
    파일 내용의 글자를 변경할 때에는 윈도우 기반 텍스트 에디터를
    이용하는 편이 확인해가면서 작업하기 편할 수 있음

:42,44s/ftp/scp/g

    42 ~ 44행까지 ftp를 scp 로 변경하라. g(global)는 전부

40,50w 11.txt

    40 ~ 50행까지를 11.txt 파일에 저장하라

0(zero) 또는 ^

    현재 커서가 있는 줄의 처음으로 이동

$

    현재 커서가 있는 줄의 끝으로 이동

H

    화면 맨 위로 이동

M

    화면의 중간으로 이동

L

    화면의 맨 아래로 이동

w

    다음 단어의 처음으로 이동

b

    이전 단어의 처음으로 이동

100G

    100행으로 이동

G (shift + g)

    문서의 맨 끝으로 이동

gg

    문서의 맨 앞으로 이동

Shift + 아래방향화살표

    한 페이지 아래(뒤)로 이동

Shift + 윗방향화살표

    한 페이지 위(앞)로 이동

u

    방금 실행했던 삭제 작업을 취소.
    리눅스에서는 무한 undo 가 됨

Ctrl + r

    redo

x

    현재 커서가 있는 위치에서 한 문자 삭제

5x

    현재 커서가 있는 위치에서 5개이 문자를 삭제

dw

    한 단어 삭제

4dw

    현재 커서가 있는 위치에서 4개의 단어가 삭제됨

dd

    한줄 삭제

5dd

    커서가 있는 라인부터 5개의 라인 삭제

:1,5d

    1 ~ 5행 삭제

:10,20d

    10 ~ 20행 삭제

yy

    현재 커서가 있는 줄을 버퍼에 복사

3yy

    현재 커서가 있는 줄부터 3줄을 버퍼에 복사

p

    현재 커서가 있는 뒤에 버퍼에 있는 내용을 붙여넣기

yG

    현재 줄부터 그 파일의 끝까지 버퍼에 복사

y20G

    현재 줄부터 파일의 20번째 줄까지 버퍼에 복사

:! cal

    현재 VI 에디터에서 다른 명령어를 실행할 때 사용

:! cat 11.txt

    11.txt 파일 내용을 화면에 보여주기

:r foo.txt

    r(read), 현재 커서가 위치한 바로 앞에 foo.txt 파일을 삽입한다.

 

ESC키

    입력모드에서 명령모드로 변경됨

EX모드

:q

    저장하지 않고 종료. 파일이 수정되었으면 q 로는 빠져나올 수 없음

:q!

    저장하지 않고 강제 종료

:wq

    저장하고 종료

 

 


블로그 이미지

Link2Me

,
728x90

리눅스 기본 명령어


리눅스는 계층적인 디렉토리 구조로 파일을 구성한다.

파일의 최상위 디렉토리를 root 디렉토리라고 한다.

현재 작업 디렉토리에 있는 파일과 하위 디렉토리를 표시할 때는 ls 명령어를 사용한다.


디렉토리 구조
/           : 루트 디렉토리
/bin        : 시스템 부팅과 실행에필요한 바이너리(프로그램)들을 포함하고 있다
/boot       : 부트 관련파일
/etc        : 시스템 전반의 환경설정파일이 들어있다
/home       : 사용자 로그인 디렉토리. 각 사용자마다 /home 디렉토리를 갖게 된다.
/proc       : 메모리 내용을 보여주는 가상 디렉토리
/sbin       : 슈퍼 유저가 실행하는 명령
/usr        : 일반 사용자가 사용하는 모든 프로그램과 지원 파일들이 모두 들어있다.
/usr/bin    : 사용중인 리눅스 배포판이 설치된 실행파일
/usr/local  : 관리자 설치파일
/usr/sbin   : 시스템 관리 프로그램이 들어있다
/var/log    : 시스템의 활동을 기록하는 로그파일들이 들어있다.

/var        : 내용이 변경되는 작업파일
/tmp        : 임시파일
             -> 만드는건 누구든지 가능하지만 지울때는 만든 사람만 지울수 있다(stiky bit 설정되어 있다)


경로명
절대경로명 : 경로명의 시작이 / 로 시작되는 경로명
상대경로명 : 경로명의 시작이 / 로 시작되지 "않은" 경로명

    . : 현재 디렉토리

   .. : 상위 디렉토리



명령어 -옵션 명령인자

※ 명렁어만으로 실행되는 경우도 있고, 명령어 -옵션 명령인자 를 다 넣어야 실행되는 경우도 있다.


# pwd                : 작업을 할 때는 항상 현재 디렉토리가 어디인지 확인을 해줘야 한다.
                          이동한 경우에는 항상 pwd 로 현재 작업 디렉토리를 확인해야 한다.
                          잘못하면 엉뚱한 데이터를 몽땅 날릴 수도 있다.


# cd                  : 작업 디렉토리를 홈 디렉토리로 변경한다.

# cd -                : 작업 디렉토리를 이전 작업 디렉토리로 변경

# cd ~username  : username 의 홈 디렉토리로 작업 디렉토리로 변경



주로 많이 사용하는 ls 옵션

ls : 디렉토리 내용 나열하기

옵션 : 명령어 행동에 영향을 끼치는 요소(앞에 - 붙여줌, 결합가능)

 -a    : 모든 파일보기. 숨김파일까지도 표시

 -F    : 디렉토리명이면 끝에 / 를 표시해 줌

 -l     : 좀 더 자세한 정보를 출력

 -d    : l 과 같이 사용되며,

 -r     : 역순으로 표시

 -R    : 전부다 표시


# ls -l

# ls -aF

# ll -F


# cat /etc/passwd | grep ftp    // /passwd 파일을 전부 보여주고 그 중에서 ftp 라는 글자만 찾아서 보여줘라

# grep ftp /etc/passwd    // passwd 파일에서 ftp 라는 단어를 검색해서 보여줘라.








블로그 이미지

Link2Me

,
728x90

 

FTP 상위디렉토리 접근금지(FTP chroot) 설정

 

리눅스에서 사용하는 FTP서버용 솔루션으로는 proftpd vsftpd가 주로 사용된다.

 

vsftpd proftpd에 비해서 속도와 보안, 성능이 뛰어나며 무엇보다 안정성을 보장할수 있는 훌륭한 ftp서버용 소프트웨어라고 할수 있다. 그리고 vsftpd Linux뿐아니라 Solaris, FreeBSD, HP-UX, IRIX등 거의 모든 유닉스계열의 운영체제에서 사용이 가능하다.

 

FTP 는 기본적으로 root 접속을 못하게 막혀있다.

FTP 로 접속하는 경우에는 네트워크 상에서 ID, Password 정보가 plian text 보여서 네트워크 캡쳐툴에서 감지될 수 있다.

 

FTP 가 설치되어 있는지 여부를 확인하는 방법, 프로세스 기동상태 확인을 한다.

# rpm -qa | grep vsftpd  '// 패키지 설치 확인

# ps -ef | grep vsftpd    '// 프로세스 확인

# netstat -ntlp   '// 포트확인

 

 

FTP 접속시 홈디렉토리 경로 확인 방법은

# cat /etc/passwd

 

# FTP 접속 사용자 등록 및 기본 홈 디렉토리 지정
adduser -d /usr/local/apache/htdocs/abc user계정명

# FTP 접속 사용자의 기본홈 디렉토리 위치 변경
usermod -d /usr/local/apache/htdocs/abc user계정명

chroot 를 설정하고 ON 하면

useradd  명령어로 사용자를 추가하고

/etc/passwd 에 등록된 사용자의 접속경로만 변경해주면 사용자의 최상위 root 폴더는 자동으로 설정된다.

즉, 재부팅 이런거 안해도 된다.

 

환경설정 변경 및 확인

# vi /etc/vsftpd/vsftpd.conf

 

앞에 전부 # 처리가 되어 있다면 상위디렉토리 접근금지 상태 설정이 안된 것임

 

chroot_local_user=YES    '// Yes이면 chroot_list에 적힌계정은 deny가 됨

chroot_list_enable=YES
chroo_list_file=/etc/vsftpd/chroot_list

설명

특정 사용자들에 대해 자신의 홈 디렉터리를 루트 디렉터리로 인식하도록 하는 기능
chroot_list_enable=YES로 설정하고 
chroot_list_file=/etc/vsftpd/chroot_list 파일에 등록된 사용자들에 한해서 
chroot() 기능이 적용되어 자기 자신의 홈디렉터리 상위디렉터리 이동이 제한

 

 

chroot_local_user=YES  '// 전체 사용자를 대상으로 자기 자신 홈 디렉터리 상위 디렉터리로 이동하지 못하도록 하는 설정
chroot_local_user=YES와
chroot_list_enable=YES가 둘다 YES 이면, 
/etc/vsftpd/chroot_list 파일에 등록된 사용자는 상위 디렉토리 이동 제한 없고, 등록 리스트에 없는 사용자는 상위디렉터리 이동 제한됨

 



위 그림처럼 설정되어 있다면 접근을 막을 ID를 등록해준다.

 

# vi /etc/vsftpd/chroot_list

접근을 막을 ID를 써준다. (한줄에 하나씩)
chroot_list 파일이 없다면 새로 생성하면 된다.
 
# /etc/init.d/vsftpd restart    '// vsftp 데몬을 재시작
 

 


 

설정이 잘 되었는지 반드시 테스트를 해봐야 한다.
상위 디렉토리로 접근 불가능하게 설정한 ID 가 FTP를 통해서 접속할 경우 상위 디렉토리로 더이상 이동이 안되는가? SFTP 접속 프로그램으로는 접속이 가능한가?
상위 디렉토리로 접근을 못하게 막겠다고 했는데 22번 포트를 사용하는 SFTP, SCP 로 접속이 가능하다면 설정한 의미가 하나도 없게 된다.
이런 부분까지 감안해서 보안설정을 해줘야 한다.

 

# chkconfig vsftpd on    '// 부팅시 자동 실행
# chkconfig vsftpd off   '// 부팅시 자동 실행 중지

 

ftp chroot 접속 경로를 변경하려면 vi /etc/passwd 로 접속해서 해당 user id 의 기본 경로명을 변경하기만 하면 된다.

SSH 로도 root 접속을 못하게 하고 싶다면 http://link2me.tistory.com/449 게시물을 보고 설정을 하면 된다.

SSH 22번 포트 상위 디렉토리 이동 제한 설정방법은 https://link2me.tistory.com/1039 를 참조하거나 구글에서 SSH chroot 를 검색하면 해결할 수 있다.

'리눅스' 카테고리의 다른 글

VI 에디터 사용법 ★★  (0) 2014.11.06
리눅스 기본과 기본명령어  (0) 2014.11.05
리눅스 shell 접속프로그램 허용 불가  (0) 2014.10.22
phpMyAdmin 설치 방법  (0) 2014.10.21
Virtual Host 설정  (0) 2014.10.11
블로그 이미지

Link2Me

,
728x90

shell 접속프로그램 허용 불가



리눅스에서 파일을 직접 수정하려면 VI 에디터로 접속를 한다.

VI로 접속된 곳에서 I 를 누르면 Insert 모드로 변경된다.

화살표로 움직여서 원하는 곳에서 지우고자 하면 백스페이스화살표키를 누르면 글자가 한글자씩 지워진다.

원하는 글자가 다 지워졌으면 Esc 키를 누르면 Insert 모드에서 해제가 된다.

수정된 것을 저장하려면 :wq 를 누르면 저장완료하고 빠져나온다.


FTP 사용자 계정을 추가하고 vi /etc/passwd 로 접속해서 확인하면 추가된 ID와 접속경로를 확인할 수가 있다.


계정에서 /bin/noshell 은 vsFTP 접속은 허용하고 SSH 접속은 불허 하겠다는 의미



/bin/bash 는 vsFTP 접속과 SSH, SFTP 접속도 허용하겠다는 의미


/home 은 상위접속폴더를 home 디렉토리로 지정하여 보이도록 하겠다는 의미





'리눅스' 카테고리의 다른 글

리눅스 기본과 기본명령어  (0) 2014.11.05
FTP 상위디렉토리 접근금지 (vsFTPd) - ftp chroot  (2) 2014.10.23
phpMyAdmin 설치 방법  (0) 2014.10.21
Virtual Host 설정  (0) 2014.10.11
IP주소를 알아내는 nslookup 명령어  (0) 2014.10.05
블로그 이미지

Link2Me

,

phpMyAdmin 설치 방법

리눅스 2014. 10. 21. 01:00
728x90

phpMyAdmin 설치 방법


몇번의 삽질 끝에 아 이런거구나 하고 이제서야 조금 알게되었다.


phpMyAdmin 을 설치해서 이용하면 MySQL DB 다루는 것이 매우 편리하다.


1. 프로그램 다운로드 : http://www.phpmyadmin.net/ 에서 최신 버전을 다운로드


2. 프로그램 설치

   - 다운로드 받으면 zip 으로 압축된 파일

   - FTP 또는 SFTP 를 이용하여 리눅스 서버로 업로드

   - Unzip phpmyadmin 파일명 해서 압축 해제

   - 설치할 폴더와 다른 곳에서 압축을 풀었다면 원하는 곳으로 mv (이동) 시킴


3. phpMyAdmin 설치를 위한 기초지식

   - 보안을 위해서 폴더명을 다른 이름으로 변경하여 사용할 것을 권장

   - 하위 폴더에 setup 폴더가 있는데 이 폴더를 지정하여 실행하면

     설정한 파일 정보가 config 폴더 밑에 config.inc.php 로 저장됨

   - 따라서, 먼저 mkdir config 로 폴더를 생성시켜 줘야 함


4. phpMyAdmin 설치를 위한 방법 안내

   - phpMyAdmin 이 설치된 폴더에서

   - # mkdir config   '// config 폴더 생성

   - # chmod o+rw config   '// 권한 부여

   - # cp config.sample.inc.php ./config/config.inc.php

   - # chmod o+w config/config.inc.php

   - # cd examples   '// examples 폴더로 이동


이제 ls -al 을 입력해서 create_tables.sql 파일이 존재하는지 확인하고 나서

# mysql -u root -p < create_tables.sql

password :       '// MySQL root 패스워드 입력

하면 MySQL DB에 phpmyadmin 이라는 DB가 생성된다.



5. 이제 setup (환경설정)을 해준다.

  - http://사이트URL/phpMyAdmin/setup/ 이라고 입력

하면 환경설정하는 화면이 나온다.





저장(save) 하면 환경설정 정보가 /config/config.inc.php 파일에 저장된다.


이제 환경설정 파일을 phpMyAdmin 이 설치된 폴더로 이동시킨다.

# cd ..

# cp config/config.inc.php ./


6. 이제 보안설정을 위해서 해줘야 할 일은 setup 폴더 전체 삭제, config 폴더를 삭제해준다.

# rm -rf config/

# rm -rf setup/



7. 이제 환경설정 저장한 정보를 적용하기 위해서 아파치를 재기동한다.

   # service httpd restart


8. phpMyAdmin 로그인 화면


GO 하단에 이상한 글씨가 보인다면 이것은 config.sample.inc.php 파일을 삭제하지 않아서 생기는 현상이므로 이 파일을 삭제해주면 된다.


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

버전이 좀 낮은 것이 사용하는데 편해서 낮은 버전을 구해서 사용하고 있다.

윈도우에서 해당 폴더에 압축을 풀어서 사용할 경우에는

http://localhost/myadmin/

이라고 입력하면 phpMyAdmin 창이 나온다. 여기에서 myadmin 이란 건 설치한 폴더명을 의미한다.


첨부된 파일은 낮은 버전의 phpMyAdmin 인데 압축된 폴더명은 myadmin 으로 되어 있다.

일일이 입력하기 귀찮아서 폴더명을 변경했다.


myadmin.zip




블로그 이미지

Link2Me

,

Virtual Host 설정

리눅스 2014. 10. 11. 06:57
728x90

가상호스트(Virtual Host)란?

웹 서버에는 기본적으로 존재하는 호스트가 있는데  이를 주호스트(main host)라고 하나의 웹 서버에는 주호스트 외에 별도의 홈 디렉토리를 가진 여러 개의 호스트를 설정하여 운용할 수 있다. 주로 웹 호스팅 서비스에 사용되며 주호스트 외에 나머지 호스트들을 모두 가상호스트 (virtual host)라고 한다.

가상 호스트 종류

   ● 이름기반의 가상호스트(Name-based virtual host)

   ● 주소기반의 가상호스트(IP-based virtual host)

   ● 포트기반의 가상호스트(Port-based virtual host)

   ● 기본 가상호스트(Default virtual host)

위의 네가지 경우 모두 하나의 물리적인 서버에서 운용된다는 것과 다수개의 가상호스트를 운용한다는 것을 전제로 한다.

이름기반의 가상호스트는 하나의 IP Address에 여러개의 가상호스트를 운용하는 것이며, 주소기반의 가상호스트는 가상호스트 각각에 하나씩의 IP Address를 할당하여 운용하는 것이고 포트기반의 가상호스트는 하나의 동일한 호스트에 포트만 다르게 지정하여 운용하는 것이다.

그리고 마지막 기본 가상호스트는 설정되어있는 어떤 호스트도 해당사항이 없는 호스트의 로딩요구를 받았을때 기본으로 응답하게될 호스트를 지정하게 된다

name-based virtual hosting

  • 하나의 웹 서버에서 한 개의 IP주소를 가지고 여러 호스트에 대해서 웹 서비스 제공.
  • 현재 웹 호스팅 업체에서 주로 사용
  • 네임 서버에서 각각의 가상 호스트에 대해서 CNAME으로 반드시 지정해야 함



IP-based virtual hosting

  • 웹 서버에 여러 개의 IP주소가 할당되어야 가능
  • IP 주소의 고갈 문제가 대두되기 전의 초창기 웹 호스팅 업체에서 많이 사용되었다.
  • 한 대의 웹 서버와 하나의 이더넷 카드에 여러 개의 IP주소를 할당하는 IP alias을 사용하여 할당  
  • IP alias 방법
     ifconfig eth0:순번 xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx up
     … …



많은 IP 주소가 필요한 단점이 있지만, 이름기반의 가상호스트보다도 더 안정적이고, 더 효율적이며 관리하기도 편한 것이 주소기반의 가상 호스트이다.

Port-based virtual hosting

  • 하나의 웹 서버에서 기본포트 80번은 주호스트로 설정하고 여러 개의 다른 포트를 지정하여 원하는 만큼의 가상서버를 운용하는 방법
  • 즉 80번은 주호스트로 사용하고 8080번, 8081번 그리고 8082번 등등 포트를 지정하여 같은 가상 호스트로 사용하는 것이다.

블로그 이미지

Link2Me

,
728x90

IP주소를 알아내는 nslookup 명령어


도메인의 IP주소를 알아내고 싶을 때 사용하는 명령어

nslookup 을 치고 나면 ....

도메인 주소를 입력하면 결과로 IP address 주소 값을 알려준다.



도메인 주소 연결이 제대로 잘 되었는지 확인할 때 유용하다.

이 명령어는 리눅스가 아닌 윈도우 에서도 사용 가능하다.



'리눅스' 카테고리의 다른 글

phpMyAdmin 설치 방법  (0) 2014.10.21
Virtual Host 설정  (0) 2014.10.11
리눅스에서 디렉토리, 파일 용량 확인  (0) 2014.09.28
리눅스 관리자 비밀번호 변경  (0) 2014.09.27
리눅스에서 파일 찾기 (파일명 검색)  (0) 2014.09.07
블로그 이미지

Link2Me

,
728x90

리눅스에서 디렉토리, 파일 용량 확인


디렉토리 용량 확인하기
# du -hs 폴더이름



디렉토리 내 하위폴더별 용량확인하기
# du -hs 폴더이름/*



파일 용량 확인하기
# du -h 파일이름


폴더 경로 설정을 일일이 입력하지 않고 한두글자 입력하고 탭키만 누르면 해당 폴더가 있으면 알아서 자동완성시켜 주는 기능을 이용하면 폴더명 지정하는 것이 매우 편하다.

블로그 이미지

Link2Me

,
728x90

리눅스 관리자 비밀번호 변경


관리자 비밀번호 변경은 

#passwd

이다.

너무 패스워드가 짧으면 짧다고 다시 입력하라고 나오니 길게 입력하는게 좋다.




블로그 이미지

Link2Me

,
728x90

리눅스에서 파일 찾기 (파일명 검색)

현재 디렉토리에서, ini 확장자를 가진 모든 파일 찾기
find -name '*.ini'

(현재 디렉토리 밑의 하위 디렉토리까지 다 찾는다.)


서버전체(root)에서 ini 확장자를 가진 모든 파일 찾기
find / -name '*.ini'

사용예 : find / -name 'php.ini'

 

서버전체(root)에서 파일명이 php 로 시작하는 모든 파일 찾기
find / -name 'php*'

 

서버전체(root)에서 파일명이 .bash 로 시작하는 모든 파일 찾기
find / -name '.bash*'

 

전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
+ ls 명령 형식으로 출력
find / -name '.bash*' -ls

뒤에 -ls 라는 옵션을 붙이면 된다.

 

ctime 생성 시간

atime 접근 시간

-atime +n
access time 이 n일 이전인 파일을 찾는다.
-atime -n
access time이 n일 이내인 파일을 찾는다.

mtime 수정 시간
-mtime +n
n일 이전에 변경된 파일을 찾는다.
-mtime -n
n일 이내에 변경된 파일을 찾는다.

 

//2일전 이후로 변경된 파일 찾기 
find -mtime -2

// 만약 30일 이전부터 변경된 파일을 찾고자 한다면
cd /usr/local/apache/htdocs
find -mtime -30
을 하면 변경된 파일만 리스트가 보임.
즉 최근 한달 이내에 수정된 파일 리스트가 보이므로 원하는 파일을 찾기 쉬움

 

리눅스에서 텍스트 파일 안의 문자열 검색 방법 (grep)

명령어 : grep
사용법 : grep [옵션] “찾을문자열”
사용예 : grep -r magic_quotes_gpc

 

// 게시물 내용 검색
// 현재 디렉토리 이하 서브 디렉토리까지 php 파일 중에서 preg_match 라는 내용이 들어간 파일을 모두 찾아줌
find ./ -name "*.php" | xargs grep -l "preg_match"
find ./ -name "pattern_data.csv"

 

먼저 찾을 디렉토리로 이동한다.

grep -rn letterMasking




 

 

 

블로그 이미지

Link2Me

,
728x90

리눅스에서 Apache, PHP, MySQL 등 제거 방법


서버를 구동하다 보면 오류나 업그레이드 등으로 프로그램을 재설치 해야 하는 경우가 있다. 덮어씌어도 되기는 하지만 종종 설정이 꼬이거나 오류를 일으키기도 하므로 가능하면 삭제 후 재설치 하는 것이 좋다. 


소스로 설치가 되어 있을 경우에는 설치되어 있는 디렉토리를 제거하고 소스디렉토리에서 make clean 으로 이전 컴파일 한것을 정리한다.
# make clean


APM이 설치 되어 있는지 확인
# rpm -qa httpd php mysql



다시 한번 상세하게 설치여부를 확인해본다.

# rpm -qa | grep http
# rpm -qa | grep mysql
# rpm -qa | grep php



기존에 설치 되어 있는 Apache(httpd), php, mysql를 제거


# yum remove -y httpd php mysql



설치된 것이 제대로 제거 되었는지 확인해본다.

# rpm -qa httpd php mysql

# rpm -qa | grep http
# rpm -qa | grep mysql
# rpm -qa | grep php


메시지가 나오지 않으므로 전부 제대로 제거되었다.


만약 아래처럼 정보가 나온다면 RPM 기본정보 설치가 아닌 다른 정보도 포함되어 있다는 것이므로 완전히 제거를 한다.



먼저 위에 나온 것을 마우스로 선택한 다음 우클릭을 하여 복사를 한 다음에 EditPlus 와 같은 에디터에 복사한다.

그런 다음에 rpm -e --nodeps (의존성에 개의치 않고 삭제) 를 붙여준다.



전부 복사를 한 다음에 마우스 우클릭하여 붙여넣기를 한다.

그러면 전부 지워진다.

전부 지워졌는지 여부를 다시 확인해본다.



전부 지워진 상태에서 APM 소스 설치를 하는 것이 좋다.


블로그 이미지

Link2Me

,
728x90

리눅스 압축 명령어 tar



리눅스에서 여러 파일을 한 파일로 묶은 것을 아카이브(archive)라 하며 확장자는 .tar 이다.

보통 tar로 묶인 아카이브를 gunzip을 사용해서 .tar.gz 의 확장자를 가지는 압축 아카이브로 많이 사용한다.


여러 파일들을 하나로 묶어주는 명령어

사용방법 : tar [옵션]... [파일]...

리눅스 압축 하기 : #tar -cvzf  압축할파일명 압축할파일디렉토리명
리눅스 압축 풀기 : #tar -xvzf  압축파일명


옵션값

  • x : tar 아카이브에서 파일 추출(파일 풀 때 사용)
  • c : tar 아카이브 생성. 기존 아카이브 덮어 쓰기
  • v : 묶음/해제 과정을 화면에 표시
  • z : gzip 압축 옵션 적용
  • j : bzip2 압축 옵션 적용
  • f : 파일 이름을 지정
  • p : 권한(permission)을 원본과 동일하게 유지
  • e : 첫번째 에러 발생시 중지
  • w : 모든 진행 과정에 대해 확인 요청(interactive)
  • C : 대상 디렉토리 경로 지정. 예) tar xvzf aaa.tar.gz -C [path]



사용예 :

  tar -cf 압축파일.tar 압축할파일1 압축할파일2
      압축할파일1 과 압축할파일2 를 묶어서 압축파일.tar 로 만들어준다.
      주로 백업을 위해 사용된다.

  tar -tvf 압축파일.tar

      현재 디렉토리의 파일들을 묶어서 압축파일.tar 로 만들어준다.
      이때, 각 파일들이 묶이는 상황을 보여준다.

  tar -xf 압축파일.tar

      현재 디렉토리의 파일들을 묶어서 압축파일.tar 로 만들어준다.
      앞의 것과는 달리, 파일이 묶이는 상황은 보여주지 않는다.
      주로 -cf 옵션으로 압축한 경우에 사용된다.

  tar -xpf 압축파일.tar

      압축될 때의 퍼미션을 따라가게 되며, 압축된 파일들이 프로그램인 경우 유용하다.


cd /
tar -cvzf photo_backup.tar.gz /usr/local/apache/htdocs/photos/
cd /usr/local/apache/htdocs/photos/
rm -rf *
cd /
tar -xvzf photo_backup.tar.gz


tar로 압축한 경우 압축을 풀면 덮어쓰기가 된다.

/usr/local/apache/htdocs/photos/ 는 photos 하단에 있는 모든 파일을 전부 압축한다.


블로그 이미지

Link2Me

,
728x90

리눅스 사용자 계정삭제 userdel


계정을 삭제하는 방법은

userdel  계정명

// /etc/passwd에서는 삭제, home 계정은 삭제 안됨

userdel -r 계정명 

// -r 옵션을 사용하여 계정을 삭제하면 /etc/passwd에서는 물론 home/계정디렉토리 및 파일 모두가 삭제된다.


만약 사용자 계정을 생성하고 나서 /etc/passwd 에서 user 의 홈디렉토리를 변경한 경우라면

userdel -r 을 사용하면 원하지 않는 폴더가 전부 삭제될 수 있다.

개발을 목적으로 접속할 홈디렉토리를 지정한 경우라면 사용자 삭제시 신중을 기할 필요가 있다.




블로그 이미지

Link2Me

,
728x90

리눅스 사용자 계정 추가 useradd


계정을 추가하는 방법은 "adduser 계정명"

adduser jsk005

이렇게 추가된 계정은 /etc/passwd 파일안에 저장되며 /home/jsk005 디렉토리를 게 된다.

옵  션

기   능

-u uid

사용자의 ID에 대한 값으로 디폴트는 500

-s shell

사용자의 로그인 쉘을 지정

-e 유효기간

지정된 날짜에 사용자의 계정을 삭제

-f 비활성일수

패스워드가 만기된 후 계정이 영구히 말소될 때까지의 기간

-d 디렉토리

새 계정에 대한 디렉토리 위치를 지정

-c 설명

패스워드 파일안에 새로운 사용자 설명을 추가

-D -b 기본홈

사용자의 기본홈 디렉토리 위치 변경

-D -e 기본 만료일

사용자의 계정이 말소되는 만료일 변경

-D -f 기본 비 작동일

패스워드가 만료되고, 계정이 말소되기 전까지의 기간

-D -g 기본그룹

사용자의 그룹 변경

-D -s 기본 쉘

사용자의 로그인 쉘을 변경

예) useradd jsk005 -u 505 -d /home/jsk005


사용자 패스워드 변경 방법은

passwd 사용자계정명


[root@]# passwd jsk005
Changing password for user jsk005.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@]#

adduser -d [New 홈 디렉티리] [계정]   
# adduser -d /home/test test    //  test 계정의 홈디렉토리가 /home/test 디렉토리로 설정된다
# usermod -d /home/httpd/jsk005 jsk005     // 홈디렉토리의 경로명 변경

사용자 추가할때 그룹지정하기

# adduser [사용자] -g [그룹]

# adduser test -g tempgroup     // test 계정사용자의 그룹을 tempgroup 으로 지정

# adduser test -g sshgroup


# usermod -s /bin/false jsk005   // bin/false 는 shell 에 위치할 곳이 없음을 말함


옵션

-d : 홈디렉토리를 지정할 때 사용한다.

-g : 그룹을 지정할 때 사용한다. 지정할 그룹이 미리 생성되어 있어야 한다.

-G : 기본 그룹외에 추가로 지정 그룹에 속하게 될 경우 사용한다.

-c : 사용자 추가시 사용자에 대한 설명을 설정한다.

-s : 사용자 추가시 사용자가 사용할 쉘을 지정한다.

'리눅스' 카테고리의 다른 글

리눅스 tar (압축 명령어)  (0) 2014.08.19
리눅스 사용자 계정 삭제 userdel  (0) 2014.08.19
리눅스 파일 삭제 명령어 rm  (0) 2014.08.17
리눅스 복사 명령어 cp  (0) 2014.08.17
리눅스 기본명령어 find  (0) 2014.08.17
블로그 이미지

Link2Me

,