1.  데이터베이스 접속

msyql    -u   사용자명   -p   dbname

 설치 직후에는  root 사용자에 비밀번호가 없으므로  다음과 같이 접속하여 Mysql을 관리할 수 있다.

msyql    -u   사용자명   dbname


2. 비밀번호  변경
MySQL을 설치한 직후에는 root 계정의 암호가 지정되어 있지 않다. 다음 세가지 방법으로 비밀번호를 변경 할 수 있다.

* mysqladmin  이용
mysqladmin   -u  root  password   새비밀번호
* update  이용
mysql   -u   root   mysql
-----
mysql>  UPDATE   user  SET  password=password('새비밀번호')  WHERE  user='root';
mysql>  FLUSH PRIVILEGES;
* set  password  이용
mysql> SET PASSWORD FOR  root=password('새비밀번호');

일단 root 비밀번호가 설정된 상태에서는 mysql이나 msyqladmin 명령을 실행할때 -p 욥션을 붙여주고  비밀번호를 입력해야 접속이 가능하다.

3. 데이터베이스  생성/보기

* 데이터베이스를 생성하고,
mysql> CREATE   DATABASE   dbname;

* 현재 존재하는 데이터베이스 목록을 보여준다.
mysql> SHOW DATABASES;

* 특정 데이타베이스를  선택(사용)한다.
mysql>  USE   dbname;

* 필요 없는 데이타베이스를  삭제한다.
mysql>  DROP  DATABASE  [IF EXISTS]  dbname; 

[IF EXISTS] 옵션은  데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.

테이블 생성/보기

mysql> CREATE TABLE  tablename (
             column_name1  INT  PRIMARY  KEY  AUTO_INCREMENT,
             column_name2  VARCHAR(15)  NOT  NULL,
             column3  INT
          )  ENGINE=INNODB;

테이블 구조를 살펴본다.

mysql> EXPLAIN    tablesname;
또는
mysql> DESCRIBE  tablesname;

테이블이름  변경.

mysqll> RENAME  TABLE  tablename1 TO tablename2[, tablename3  TO tablename4];

테이블  삭제.

mysql> DROP TABLE [IF EXISTS] tablename;


4. 사용자 추가/삭제

GRANT   ALL   PRIVILEGES   ON   dbname.*   TO   'username'@'localhost'    IDENTIFIED   BY   'password';

username 이라는  사용자를 password라는 비밀번호를 갖도록 추가한다.
username은 dbname이라는 데이타베이스에 대해 모든 권한을 가지고 있다.
username 사용자는 로칼호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면, 

GRANT   ALL   PRIVILEGES   ON   dbname.*   TO   'username'@'%'    IDENTIFIED   BY   'password';

위와 같이  한번 더 실행한다.  '%'에서 따옴표를 주의한다.
 (* MYSQL 에서 '%'는 localhost를 제외한 모든 호스트를 뜻한다. 즉 localhost에 대해서는 명시적으로 따로 권한을 지정해야 한다.)
 
특정 권한만 주려면, ALL 대신  아래와 같은 형태로 권한을 줄수 있다.

GRANT   INSERT,UPDATE,SELECT   ON   dbname.*   TO   'username'@'%'    IDENTIFIED   BY   'password';

불필요한 사용자  삭제는

mysql> DELETE   FROM   USER   WHERE   USER='username';
mysql> FLUSH  PRIVILEGES;


5. 활용 ( INSERT,  SELECT,  UPDATE,  DELETE,  errors/warnings/processlist, 기타  )

현재 상태 보기

MariaDB [mysql]> STATUS 
-------------- 
mysql  Ver 15.1 Distrib 10.1.22-MariaDB, for Linux (x86_64) using readline 5.1 

Connection id: 96 
Current database: mysql 
Current user: root@localhost 
SSL: Not in use 
Current pager: stdout 
Using outfile: '' 
Using delimiter: ; 
Server: MariaDB 
Server version: 10.1.22-MariaDB MariaDB Server 
Protocol version: 10 
Connection: Localhost via UNIX socket 
Server characterset: latin1 
Db     characterset: latin1 
Client characterset: utf8 
Conn.  characterset: utf8 
UNIX socket: /var/lib/mysql/mysql.sock 
Uptime: 4 hours 28 min 44 sec 

Threads: 2  Questions: 1392  Slow queries: 0  Opens: 40  Flush tables: 1  Open tables: 34  Queries per second avg: 0.086 
--------------

INSERT

mysql>  INSERT  INTO  tablename  VALUES(값1, 값2, ...);
또는
mysql>  INSERT  INTO  tablename (col1, col2, ...)   VALUES(값1, 값2, ...);

SELECT 

mysql>  SELECT col1, col2,  ...   FROM   tablename;

컬럼명을  *로 하면 모든 컬럼 의미.

mysql>  SELECT col1 as '번호', col2 as '성명',  ...   FROM   tablename;

컬럼의 이름을 바꿔서 출력한다.

mysql>  SELECT   *   FROM   tablename  ORDER BY col1 DESC;
mysql>  SELECT  col1, korea +  math  english AS '총점'   FROM   tablename  ORDER BY '총점'  ASC;

DESC는 내림차순  ASC는 오름차순.

mysql>  SELECT   *   FROM   tablename  LIMIT  100, 10;

결과중  100번째부터   10개만  가져오기,

UPDATE

mysql> UPDATE    tablename  SET   col1=새값    WHERE 조건;

DELETE

mysql>  DELETE   FROM  tablename    where  조건;

오류나 경고  다시 보기

mysql>  SHOW  errors;
mysql>  SHOW  warnings;

MySQL  버전 알아보기

MariaDB [mysql]> show variables  like  '%version%'; 
+-------------------------+---------------------------------+ 
| Variable_name           | Value                           | 
+-------------------------+---------------------------------+ 
| innodb_version          | 5.6.35-80.0                     | 
| protocol_version        | 10                              | 
| slave_type_conversions  |                                 | 
| version                 | 10.1.22-MariaDB                 | 
| version_comment         | MariaDB Server                  | 
| version_compile_machine | x86_64                          | 
| version_compile_os      | Linux                           | 
| version_malloc_library  | system                          | 
| version_ssl_library     | OpenSSL 1.0.1e-fips 11 Feb 2013 | 
| wsrep_patch_version     | wsrep_25.16                     | 
+-------------------------+---------------------------------+ 
10 rows in set (0.00 sec)

테이블/컬럼   정보보기

-- 전체 테이블 정보를 주석까지 포함해 보여준다. 
SHOW TABLE STATUS;

SHOW TABLE STATUS like 'member%'; -- 테이블 이름 매칭 조건 

-- 테이블의 컬럼 정보를 주석까지 포함해 보여준다. 
SHOW FULL COLUMNS FROM [테이블이름];


MySQL & MariaDB 기본 명령어

2017. 5. 11. 15:48
URL 복사통계

1.  데이터베이스 접속

msyql    -u   사용자명   -p   dbname

 설치 직후에는  root 사용자에 비밀번호가 없으므로  다음과 같이 접속하여 Mysql을 관리할 수 있다.

msyql    -u   사용자명   dbname


2. 비밀번호  변경
MySQL을 설치한 직후에는 root 계정의 암호가 지정되어 있지 않다. 다음 세가지 방법으로 비밀번호를 변경 할 수 있다.

* mysqladmin  이용
mysqladmin   -u  root  password   새비밀번호
* update  이용
mysql   -u   root   mysql
-----
mysql>  UPDATE   user  SET  password=password('새비밀번호')  WHERE  user='root';
mysql>  FLUSH PRIVILEGES;
* set  password  이용
mysql> SET PASSWORD FOR  root=password('새비밀번호');

일단 root 비밀번호가 설정된 상태에서는 mysql이나 msyqladmin 명령을 실행할때 -p 욥션을 붙여주고  비밀번호를 입력해야 접속이 가능하다.

3. 데이터베이스  생성/보기

* 데이터베이스를 생성하고,
mysql> CREATE   DATABASE   dbname;

* 현재 존재하는 데이터베이스 목록을 보여준다.
mysql> SHOW DATABASES;

* 특정 데이타베이스를  선택(사용)한다.
mysql>  USE   dbname;

* 필요 없는 데이타베이스를  삭제한다.
mysql>  DROP  DATABASE  [IF EXISTS]  dbname; 

[IF EXISTS] 옵션은  데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.

테이블 생성/보기

mysql> CREATE TABLE  tablename (
             column_name1  INT  PRIMARY  KEY  AUTO_INCREMENT,
             column_name2  VARCHAR(15)  NOT  NULL,
             column3  INT
          )  ENGINE=INNODB;

테이블 구조를 살펴본다.

mysql> EXPLAIN    tablesname;
또는
mysql> DESCRIBE  tablesname;

테이블이름  변경.

mysqll> RENAME  TABLE  tablename1 TO tablename2[, tablename3  TO tablename4];

테이블  삭제.

mysql> DROP TABLE [IF EXISTS] tablename;


4. 사용자 추가/삭제

GRANT   ALL   PRIVILEGES   ON   dbname.*   TO   'username'@'localhost'    IDENTIFIED   BY   'password';

username 이라는  사용자를 password라는 비밀번호를 갖도록 추가한다.
username은 dbname이라는 데이타베이스에 대해 모든 권한을 가지고 있다.
username 사용자는 로칼호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면, 

GRANT   ALL   PRIVILEGES   ON   dbname.*   TO   'username'@'%'    IDENTIFIED   BY   'password';

위와 같이  한번 더 실행한다.  '%'에서 따옴표를 주의한다.
 (* MYSQL 에서 '%'는 localhost를 제외한 모든 호스트를 뜻한다. 즉 localhost에 대해서는 명시적으로 따로 권한을 지정해야 한다.)
 
특정 권한만 주려면, ALL 대신  아래와 같은 형태로 권한을 줄수 있다.

GRANT   INSERT,UPDATE,SELECT   ON   dbname.*   TO   'username'@'%'    IDENTIFIED   BY   'password';

불필요한 사용자  삭제는

mysql> DELETE   FROM   USER   WHERE   USER='username';
mysql> FLUSH  PRIVILEGES;


5. 활용 ( INSERT,  SELECT,  UPDATE,  DELETE,
              errors/warnings/processlist, 기타  )


현재 상태 보기

MariaDB [mysql]> STATUS 
-------------- 
mysql  Ver 15.1 Distrib 10.1.22-MariaDB, for Linux (x86_64) using readline 5.1 

Connection id: 96 
Current database: mysql 
Current user: root@localhost 
SSL: Not in use 
Current pager: stdout 
Using outfile: '' 
Using delimiter: ; 
Server: MariaDB 
Server version: 10.1.22-MariaDB MariaDB Server 
Protocol version: 10 
Connection: Localhost via UNIX socket 
Server characterset: latin1 
Db     characterset: latin1 
Client characterset: utf8 
Conn.  characterset: utf8 
UNIX socket: /var/lib/mysql/mysql.sock 
Uptime: 4 hours 28 min 44 sec 

Threads: 2  Questions: 1392  Slow queries: 0  Opens: 40  Flush tables: 1  Open tables: 34  Queries per second avg: 0.086 
--------------

INSERT

mysql>  INSERT  INTO  tablename  VALUES(값1, 값2, ...);
또는
mysql>  INSERT  INTO  tablename (col1, col2, ...)   VALUES(값1, 값2, ...);

SELECT 

mysql>  SELECT col1, col2,  ...   FROM   tablename;

컬럼명을  *로 하면 모든 컬럼 의미.

mysql>  SELECT col1 as '번호', col2 as '성명',  ...   FROM   tablename;

컬럼의 이름을 바꿔서 출력한다.

mysql>  SELECT   *   FROM   tablename  ORDER BY col1 DESC;
mysql>  SELECT  col1, korea +  math  english AS '총점'   FROM   tablename  ORDER BY '총점'  ASC;

DESC는 내림차순  ASC는 오름차순.

mysql>  SELECT   *   FROM   tablename  LIMIT  100, 10;

결과중  100번째부터   10개만  가져오기,

UPDATE

mysql> UPDATE    tablename  SET   col1=새값    WHERE 조건;

DELETE

mysql>  DELETE   FROM  tablename    where  조건;

오류나 경고  다시 보기

mysql>  SHOW  errors;
mysql>  SHOW  warnings;

MySQL  버전 알아보기

MariaDB [mysql]> show variables  like  '%version%'; 
+-------------------------+---------------------------------+ 
| Variable_name           | Value                           | 
+-------------------------+---------------------------------+ 
| innodb_version          | 5.6.35-80.0                     | 
| protocol_version        | 10                              | 
| slave_type_conversions  |                                 | 
| version                 | 10.1.22-MariaDB                 | 
| version_comment         | MariaDB Server                  | 
| version_compile_machine | x86_64                          | 
| version_compile_os      | Linux                           | 
| version_malloc_library  | system                          | 
| version_ssl_library     | OpenSSL 1.0.1e-fips 11 Feb 2013 | 
| wsrep_patch_version     | wsrep_25.16                     | 
+-------------------------+---------------------------------+ 
10 rows in set (0.00 sec)

테이블/컬럼   정보보기

-- 전체 테이블 정보를 주석까지 포함해 보여준다. 
SHOW TABLE STATUS;

SHOW TABLE STATUS like 'member%'; -- 테이블 이름 매칭 조건 

-- 테이블의 컬럼 정보를 주석까지 포함해 보여준다. 
SHOW FULL COLUMNS FROM [테이블이름];

MySQL 사용자 계정 암호변경 방법을 정리.
 (여기서는 root 암호를 변경하고 있는데 다른 계정도 동일하다.)










DB 사용자 비번 변경하기

mysql> update   user   set   password=password('asdf1234')    where   user='user001';



'배워서 남주자 > Data Base' 카테고리의 다른 글

[oracle] Listener 관련  (0) 2018.03.28
[Postgresql] 접속 제어  (0) 2018.03.23
[Postgresql] 백업 / 복구  (0) 2018.03.23
[postgresql] 초간단 명령어 설명.  (0) 2018.03.23
[PostgreSQL] 소유권 및 패스워드 변경  (0) 2018.03.23

.bash_history 작업 날짜 확인하기(세팅)



/etc/profile 파일에 아래 내용을 추가하여  "날짜/시간" 에 대한 기록을 추가해 준다.

# Add timestamp to .bash_history 
HISTTIMEFORMAT="%Y-%m-%d_%d_%H:%M:%S   " 
export HISTTIMEFORMAT 



[root@localhost /]#  history  
  993  2017-05-30_09:40:54  vi /etc/profile 
  994  2017-05-30_09:40:54  history 
  995  2017-05-30_09:40:54  exit 
  996  2017-05-30_09:40:08  ls 
  997  2017-05-30_09:40:12  hostory 
  998  2017-05-30_09:40:14  history 
  999  2017-05-30_09:40:34  vim /etc/profile 
 1000  2017-05-30_09:40:50  exit 
 1001  2017-05-30_09:40:56  history 
 1002  2017-05-30_09:42:58  cd /var 
 1003  2017-05-30_09:42:59  ls 
 1004  2017-05-30_09:43:00  cd / 
 1005  2017-05-30_09:43:01  ls 
 1006  2017-05-30_09:43:16  find ./ -type d -name 'buffered' 
 1007  2017-05-30_09:43:25  find ./ -type d -name 'buffere' 
 1008  2017-05-30_09:43:37  find ./ -type d -name 'cache' 
 1009  2017-05-30_09:45:19  more /etc/profile 
 1010  2017-05-30_09:45:41   history



리눅스 개인서명(사설) SSL 인증서 생성


1. 개요
개인 인증서를 만들고 인증서를 발급 받아 사용해본다. 브라우저에서  신뢰할 수 없는 사이트로 표시되지만, SSL 보안 기능을 사용할 수 있다.


2. 확인
리눅스 서버에 Openssl 패키지를 설치한다.
[root@localhost ~]# rpm -qa | grep openssl 
openssl-libs-1.0.1e-60.el7_3.1.x86_64 
openssl-1.0.1e-60.el7_3.1.x86_64 
openssl098e-0.9.8e-29.el7.centos.3.x86_64 
openssl-devel-1.0.1e-60.el7_3.1.x86_64 



3. 개인키 생성
[root@localhost ~]# openssl genrsa -des3 -out server.key 2048 
Generating RSA private key, 2048 bit long modulus 
.....+++ 
.......................................................................................................................+++ 
e is 65537 (0x10001) 
Enter pass phrase for server.key: 
Verifying - Enter pass phrase for server.key: 
[root@localhost ~]#


4. 인증요청서 생성
[root@localhost ~]# openssl req -new -key server.key -out server.csr 
Enter pass phrase for server.key:                  ---->  서버 개인키  패스워드 입력
You are about to be asked to enter information that will be incorporated 
into your certificate request. 
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter '.', the field will be left blank. 
----- 
Country Name (2 letter code) [XX]:kr 
State or Province Name (full name) []:daejeon 
Locality Name (eg, city) [Default City]:seogu    
Organization Name (eg, company) [Default Company Ltd]:colt357 
Organizational Unit Name (eg, section) []:colt357 
Common Name (eg, your name or your server's hostname) []:web1.com 
Email Address []:admin@web1.com 
  --------->   적당히  자신의 경우게 맞게 입력

Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []:
An optional company name []:

---------->  그냥 Enter, Enter

서버 인증요청서인 server.csr 파일이 생성되었다.


5. (Optional) 개인키에서 패스워드 제거
- 키에 패스워드가 들어 있으면 아파치 구동시마다 물어본다. 패스워드를 제거하더라도 SSL 암호화 통신 에는 문제가 없으므로 제거하자.

[root@localhost ~]# cp server.key  server.key.origin 
[root@localhost ~]# ls 
anaconda-ks.cfg  server.csr  server.key  server.key.origin 
[root@localhost ~]# openssl rsa -in server.key.origin -out server.key 
Enter pass phrase for server.key.origin:             ---->   개인키 패스워드를 입력
writing RSA key                   -----> 패스워드가 제거된 개인키  파일 server.key 가 생성된다.
[root@localhost ~]# 

 
패스워드가 제거된 파일(server.key)은 원래 파일(server.key.origin)에 비해 용량이 조금 줄었다.


6.  인증서 생성
- 개인키와 인증요청서를 가지고 인증서를 생성해 보자.

[root@localhost ~]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 
Signature ok 
subject=/C=kr/ST=daejeon/L=seogu/O=colt357/OU=colt357/CN=web1.com/emailAddress=admin@web1.com 
Getting Private key 
[root@localhost ~]#
 


7. 확인
- 개인키
[root@localhost ~]# head -3 server.key 
-----BEGIN RSA PRIVATE KEY----- 
MIIEowIBAAKCAQEAyyIIj70AxbZmWKeL7vTg0cDouD8U+Fxt5046YFYh6bUXbev0 
tILTBRZBeGJzeL1GJ2NB1nkPQ4uaIPGCghhD/4ttvKFbH09quPLWFZ44Pth0kCwN 


- 사설인증서
[root@localhost ~]# head -3 server.crt 
-----BEGIN CERTIFICATE----- 
MIIDiDCCAnACCQDyRS6tuMObrDANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMC 
a3IxEDAOBgNVBAgMB2RhZWplb24xDjAMBgNVBAcMBXNlb2d1MRAwDgYDVQQKDAdj 
[root@localhost ~]# 



samba는 이기종간의 파일,  CD-ROM, 프린터 등을 공유하기 위해 만들어진 프로그램이다.
samba는 마이크로소프트사와 인텔이 다른 시스템의 디스크나 프린터와 같은 자원을 공유하기 위해 개발한 프로토콜이다. SMB는 tcp/ip 기반의 NetBIOS 프로토콜을 사용한다.

samba는 서버는 크게 2개(smbd, nmbd)의 프로세스로 구성 되어 있다.
대부분의 처리는 smbd에서 한다. 포트 또한 tcp:445 만 열려 있으면 작동한다.  다만, 윈도우즈 사용자의  컴퓨터이름으로 접속할 수 있게 하기 위해서는 nmbd를 사용해야 한다. nmbd는 3개의 포트를 사용한다.  (tcp:139, udp:137,138) 

SAMBA를 사용하는 경우 tcp : 139, 445번과  udp : 137, 138번 포트가 열려있어야 한며, 방화벽설정에도 적용되어야 한다.

1. SAMBA 서버 설치

~]#  yum  -y  install  samba  samba-common  samba-client

2. SAMBA 시작 및 종료
samba server는 항상 실행하고 있는 서버 프로그램이다, smb는 systemd로 관리하며 systemctl로 제어할 수 있다.  smb,  nmb 가  있으며,   smb 만으로도 서비스 가능하다.

~]# systemctl  enable  smb  nmb
~]# systemctl  start  smb  nmb

3. SAMBA  사용자 계정 설정
samba 사용자는 시스템 사용자를 이용하며,  smbpasswd -a 명령으로  samba 접속 계정으로 설정할 수 있다.

~]#  useradd  ID
~]#  passwd   ID     ----->   리눅스 사용자 생성
~]#  smbpasswd  -a   ID    ----->   samba 계정 적용
New SMB password:
Retype new SMB password:
Added user ID.

4. SAMBA 설정
samba 설정 파일의 위치는 /etc/samba/smb.conf 이다.

[root@localhost samba]# more smb.conf 
# See smb.conf.example for a more detailed config file or 
# read the smb.conf manpage. 
# Run 'testparm' to verify the config is correct after 
# you modified it. 

[global]     
  //  전역 설정 부분, 여기 아래에 옵션을 넣게 되면 모든 Samba 정보에 설정된다.

workgroup = SAMBA 
  //  윈도우의 workgroup과 일치 시키거나 NT 도메인 이름으로 설정한다. 

server string = Samba Server Version %v 
  //  윈도우 컴퓨터 설명과 유사, 공유시 폴더명 옆에 설명.
  //   %h 호스트명, %L NetBIOS 이름, %v Samba Version 표시


interfaces = lo eth0 192.168.1.2/24  192.168.2.2/24 
  // 두개의 네트워크에 Samba 가 물려있는 경우로 양쪽 네트워크에 대행 브라우징 및 서비스가 가능하다.

hosts allow = 127.   192.168.1.   192.168.2.  // 접근을 허가할 호스트 네임 혹은 ip 주소를 지정
   
log file = /var/log/samba/log.%m   // 서버에 접속한 호스트마다 개별적인 호그 파일을 생성하도록 설정  
max log size = 50

security = user 
  //   서버의 사용자 계정만 사용할 수 있도록 한다.
  //   user = Samba Server에서 계정 및 패스워드를 통한 인증을 거친 사용자에 한하여 공유를 허가
  //   share = 모든 공유 영역에 권한 없이 접근이 가능하도록 설정
  //   server =  공유 영역에 대한 사용 권한은 다른 호스트(NT 패스워드 서버)의 인증 과정을 거친 사용자에 한하여 허가  

passdb backend = tdbsam 
  //  패스워드에 해한 인증 방식.
  //   tdbsam = samba 내장 TDB SAM 형식
  //  ldapsam = LDAP 사용 ( LDAP 라이브러리 필요)
  //  sbmpasswd = smbpasswd 텍스트 파일 인증 형식 

printing = cups 
printcap name = cups 
load printers = yes 
  //  Samba에서 별도의 프린터 설정을 하지 않고, printcap name 에서 설정한 프린트 설정을 불러온다.
cups options = raw 





[homes]      //   사용자  계정을 통해서 자기 홈 경로를 접근 할 수 있다.
comment = Home Directories       //   폴더에 대한 설명
valid users = %S, %D%w%S       //     
browseable = No    //  이 폴더의  표출여부 설정, yes로 하면 접속 권한이 없어도 네트웍의 모든 PC에서 확인 가능.   
read only = No     //  버전 따라 writable 로 표시되기도 한다. 읽고, 쓰기 권한 설정.
inherit acls = Yes 
create mask = 0664   //  생성되는 파일 권한  
directory mask = 0755    //  생성되는 폴더 권한


[printers] 
comment = All Printers 
path = /var/tmp 
printable = Yes 
create mask = 0600 
browseable = No 

[print$] 
comment = Printer Drivers 
path = /var/lib/samba/drivers 
write list = root 
create mask = 0664 
directory mask = 0775


# 여러 사용자가 함께 사용할 수 있는 공유 폴더 설정하기
# "[ ]"  안에 접속할 경로를 설정한다,  만일 "[share]"로  세팅했을 경우, 윈도우에서의 접속은
# "\\server\share" 로 접속할 수 있다. 

[share]
comment = shared Files
path = /data/samba/share   //  실제 파일이 저장될 공간으로 , 설정이 끝나고 폴더를 생성해 주어야 한다.
browseable = yes  //  공유 내역을 브라우징 리스트에 나타나게 할 것인지에 대한 옵션
read only = no
create mask = 0664
diretory mask = 0755
guest ok = yes  //  Anonymous로 접속 간으하게 하려면 아래 주석을 풀어준다. 이때는 read only을 추천한다.




# 옵션 설명
# vlid users   -->  공유 영역에 접근 가능한 사용자 혹은 그룹 지정사용자를 여러명 지정할 경우 공백으로 구분하여 지정
#                          그룹명일 경우 @ 그룹명 으로  그룹임을 명시한다.
#  write list  -->  공유 영역에 대한 쓰기 가능한  사용자 혹은 그룹 지정사용자를 여러 명 지정할 경우 공백으로 구분.
#                          그룹명일 경우 @ 그룹명 으로 그룹임을 명시한다.


5. 방화벽 설정
Samba는   tcp 139, 445 포트를 사용한다.

(참고)  삼바서버 포트 번호
netbios-ns         137/udp                       # NETBIOS Name Service 
netbios-dgm     138/udp                       # NETBIOS Datagram Service 
netbios-ssn       139/tcp                         # NETBIOS session service 
microsoft-ds     445/tcp 


6. 삼바 서버  접속 클라이언트
위도우즈에서 다음과 같은 방법으로 접속할 수 있다.

   1) 윈도우즈에서 접속하기

시작 → 실행   ,  \\IP(또는 호스트명)           ,     아이디/비번으로 접속할 수 있다.

   2)  리눅스에서 접속하기

GUI 환경의  리눅스에서는  "파일브라우저" 를  실행하여  "네트워크 찾아보기" 에서  
smb://컴퓨터명/공유이름   
형식으로  접근 할수 있다.

   3) MC(Midnight  Commander)를  이용하여 접속하기  

명령어 창에서 mc를  입력하여 작동한 후 f9 키를 눌러 메뉴에서 "smb 연결"을 선택하여 접근할 수 있다.

  4)  smbclient 를 이용한 smb 서버 접속
samba에서 제공하는 smbclient 명령어를 이용하여  SMB에 접속할 수 있다.
접속한 후  ftp 처럼 동작하며, help 명령어로 사용할 수 있는 명령어를 확인할 수 있다.
 get, put 등의 명령어로 파일을 다운로드 업로드 할 수 있다.

~]# smbclient   //컴퓨터이름/공유명  -U  사용자명
Enter user_id's  password :  패스워드
smb: \> ls 

   5)  linux   SMB   마우트 하기.

~]# mount   -t   cifs    //아이피/공유명     /smb_dir    -o  user=사용자,password=패스워드


RPM 기반 시스템용  패키지  "설치/삭제/업데이트"  도구

기능
명령어
패키지 설치
yum  install  패키지명
패키지 삭제
yum remove  패키지명
패키지 업데이트
yum update   패키지명
패키지 정보확인
yum info  패키지명
패키지 검색
yum  search  패키지명
 패키지 목록보기
(설치된 항목 +  설치가능 항목)
yum  list
설치된 패키지 목록 보기
yum  list  installed

1. 패키지  설치 확인

방법 1.   rpm 

rpm  -q  패키지명
rpm  -qa  | grep  패키지명

방법 2.   yum

yum  list   installed   패키지명
yum  list   installed   |  grep  패키지명

2. YUM  저장소 - repository

base 설정이 있어 바꿀 필요는 없으나, 전송속도 또는  특별한 패키지를 설치하기위해 변경, 추가 할 수 있다.

[root@localhost log]# yum repolist 
Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * base: centos.mirror.cdnetworks.com 
 * epel: mirror.premi.st 
 * extras: centos.mirror.cdnetworks.com 
 * ius: mirrors.kernel.org 
 * updates: centos.mirror.cdnetworks.com 
repo id                                    repo name                                                                                   status 
!base/7/x86_64                     CentOS-7 - Base                                                                           9,363 
!epel/x86_64                         Extra Packages for Enterprise Linux 7 - x86_64                       11,904 
!extras/7/x86_64                  CentOS-7 - Extras                                                                            447 
!ius/x86_64                            IUS Community Packages for Enterprise Linux 7 - x86_64          380 
!mariadb                                MariaDB                                                                                            16 
!nginx/x86_64                       nginx repo                                                                                        78 
!updates/7/x86_64               CentOS-7 - Updates                                                                    2,090 
repolist: 24,278

3. yum   epel   저장소 추가

yum  epel (Extra  Packages  Enterprise Linux ) 저장소 추가
엔터프라이즈 리눅스를 위한 추가 패키지

[확인]
 [root@localhost log]# yum repolist
  ~~  repo id 리스트 중   epel  정보 유무 확인.

[설치]
[root@localhost log]# yum install epel-release
~~
Updated: 
  epel-release.noarch 0:7-10                                                                                           

Complete!


/etc/fstab

UUID=6b0513a6-e094-42d4-a327-3ae7d73cf37f       /                     ext4        defaults                    1 1 
UUID=71e8b455-201c-4f3c-a39b-7e5ec6bb3118      /home              ext4        defaults                    1 2 
UUID=ccb8a9af-0685-4486-bc94-f48b0bbce3de       /var                 ext4        defaults                    1 2 
UUID=57f1587d-624a-450d-86ef-d8ce30919ec0       swap               swap       defaults                     0 0 
tmpfs                                                             /dev/shm          tmpfs      defaults                     0 0 
devpts                                                            /dev/pts           devpts     gid=5,mode=620         0 0 
sysfs                                                               /sys                sysfs        defaults                      0 0 
proc                                                               /proc               proc        defaults                      0 0

○ 디바이스명(레이블명) -->  디바이스명 연결 권장. ( 레이블의 경우 usb 장비 연결 후 리부팅시 꼬임)
○ 마운트 포인트  --> 장비와 연결하여 사용할 위치, 디렉토리명
○ 파일시스템 타입 --> file system Type
○ 파일시스템 속성 --> 속성 적용, quota 설정 적용 등...
○ dump 속성 설정 --> 0 또는 1  (0 : dump 명령으로 덤프되자 않는 파일시스템,  1: dump 가능)
○ fsck 속성 설정 -->  0, 1, 2  (0: 부팅 시 fsck 실행 안됨, 1: 루트 파일시스템,  2: 루트 이외의 시스템)


대용량(2Tbyte 이상) 디스크 사용하기....  기존의  fdisk 로는  2T 이상의 디스크를 사용할 수 없다.
디스크 label를  GPT 타입으로 변환하여 사용한다.

1. parted   /dev/sda 
2. mklabel 
3. gpt
4.
 mkpart
5. Enter
6.  xfs(File system)
7. Start) '0'
8. End) '-1'          -->  -1 또는 100% --> 
 (parted) 'p' 입력시 결과물 출력 

9. quit
10. 
 mkfs.xfs /dev/sda1 
11. 
 mount /dev/sda1 [Mount Point] 
12 
 blkid => UUID 확인  
13. 
vi /etc/fstab => UUID   값을 참고하여  마운트 설정. (또는 /dev/sdb1 형태의 디바이스로 설정)





[root@smtp home]# parted /dev/sda

GNU Parted 3.1

Using /dev/sda

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mklabel                                                          

New disk label type? gpt                                                  

(parted) mkpart                                                           

Partition name?  []?                                                  

File system type?  [ext2]? xfs                                            

Start? 0                                                                  

End? 100%                                                                 

Warning: The resulting partition is not properly aligned for best performance.

Ignore/Cancel?                                                         

(parted) p                                                                

Model: ATA ST4000NM0035-1V4 (scsi)

Disk /dev/sda: 4001GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags: 


Number  Start   End     Size    File system  Name  Flags

 1      17.4kB  4001GB  4001GB               xfs


(parted) quit                                                             

Information: You may need to update /etc/fstab.


[root@smtp home]# mkfs.xfs /dev/sda1

meta-data=/dev/sda1              isize=512    agcount=4, agsize=244188660 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=0, sparse=0

data     =                       bsize=4096   blocks=976754637, imaxpct=5

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

log      =internal log           bsize=4096   blocks=476930, version=2

         =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0







*  [ RAID 구성의 경우 ]
    - 신규로 추가한 디스크가 RAID 어레이 상태인경우 해당 디스크는 parted 후  포맷을 어레이된 장치명으로 사용되기 때문에  포맷 시 대상명을 확인하여 지니행한다.

  fdisk -l 로 확인하거나.... /proc/mdstat 의 내용으로  물리 장치가 레이드로 구성된 정보를 확인할 수 있다.
 해당 내용으로  format 및  mount 한다.





리눅스 명령어 lastb는 접속 실패 기록을 보여주는 명령어다. last 명령어가 로그인 기록과 재부팅 기록을 보기 위해 /var/log/wtmp 파일을 열람한다면, lastb는 /var/log/btmp 파일을 열람하여 실패 목록을 보여준다. lastb는 접속 실패를 기록하는 파일인 btmp 파일을 열람한다는 것을 제외하고는 last 명령어와 같다.


last : 로그인과 재부팅 로그 확인하기
lastlog :  접속 로그 보기
lastb :  접속 실패 로그 보기


Centos-7 NFS (네트워크 파일 시스템)

NFS 를 사용하여 원격지에 있는 자원(Disk, DVD-ROM등)을 마치 로컬에 있는 자원처럼 마운트하여 사용할 수 있다. 리눅스나 유닉스에서 사용하는 소류자, 권한 등을 완벽하게 사용할 수 있어 스토리지 공유등의 다양한 분야에 사용된다. 
NFS는 지속적인 발전을 거듭하여 왔다. 현재 NFS v4.1까지 있으며 CentOS7은 v3, v4, v4.1 을 지원한다. v3에서 여러 가지 기능을 제공해 왔으며, v4는 복잡한 인터넷 환경을 고려하여 가변포트를 사용하지 않고 , 보안요소가 많이 고려되었다. v3까지는 UDP 포트를 사용하여 데이터를 전송하였다. 이는 신뢰성이 뛰어난 네트워크에서는 효율적이지만, 인터넷 환경에는 적합하지 않다. v4는 tcp 만 사용하므로 보다 신뢰성 있는 전송이 가능하다. v4.1은 pNFS를 제공한다. 이는 클라우드 컴퓨팅 환경을 고려하여 대량의 데이터를 분산 저장하기 위해 메타서버, 데이터서버를 분리하여 제공하는 방식이다. CentOS7은 다양한 버전의 NFS를 사용할 수 있다. NFS는 Pnfs-utils-1.3.0-0.48.el7_4.x86_RPC(Remote  Procedure Calls)를 사용한다. RPC를 이용하여 mount, read 등의 명령을 전달한다. NFS 클라이언트는 NFS서버로부터 파일핸들을 받아 이 핸들을 사용하여 파일에 접근한다.

[주요 서비스 설명]

서비스
설명
nfs
NFS 메인 서빗, RPC 콜이 있으면 작동
nfslock
NFS 클라이언트가 서버의 파일을 잠글 때 필요한 데몬
rpcbind
RPC요청에 의해 포트를 결정하기 위한 데몬.(예전 portmap 역할)

[관련 프로그램]

프로그램
설명
NFS v4
rpc.mountd
NFS 클라이언트로부터 마운트 요청을 받았아 검증 및 마운트 진행
불필요
rpc.nfsd
NFS 프로그램
필요
rpc.lockd
클라이언트 요청으로 파일을 잠그는 기능 NLM(Network Lock Manager)구현
불필요
rpc.statd
NFS 상태를 전달. NSM(Network  Status  Monitor)의 구현
불필요
rpc.rquotad
사용자 쿼타 정보를 제공하는 데몬
필요
rpc.idmapd
NFSv4의 이름을 제공하는 데몬
필요
NFS 동작 구조



NFS 서버는 RPC(Remote Procedure Calls)를 사용하여 동작한다. 먼저 NFS 클라이언트가  NFS 서버의 특정 디렉토리를 마운트 하기 위해서는 다음 과정을 거치게 된다.

1. NFS서버의 rpcbind에  접속하여 get_port 라는 RPC 요청을 하고 NFS서버는 마운트포트번호를
    NFS클라이언트에게 전달한다.

2. NFS클라이언트는 마운트 포트번호를 통하여 prc.mountd에 접속하고 RPC마운트 요청한다.
    NFS서버는 클라이언트를 확인하고, /etc/exports 파일을 참조하여 파일시스템의 파일핸들을 
    NFS클라이언트에게 전달한다. NFS클라이언트는 이 파일핸들을 마운트한다.

위와 같은 과정으로 마운트를 하였다면, 파일을 읽을 때는 마운트 된 최상위 디렉토리부터 속성을 읽어 오고, 하위 디렉토리를 찾고, 속성을 읽어오고, 피일을 팢아 읽는 과정을 거치게 된다. 모든 과정에서는 RPC를 사용하게 된다. 위 과정에서 rpc.nfsd 와 접속하게 된다.

NFS 상태, 쿼타정보를 알기 위해서는 rpc.stated와 rpc.rquotad 등을 사용한다.

NOTE.
 NFS를 사용하기 위해서는 NFS 클라이언트 IP에 대해서 UDP, TCP 모든 포트를 오픈 하여야 원활하게 NFS를 사용할 수 있다.

NFSv4 동작 구조

NFSv4는 이전 버전과 다르게 , PORT는 TCP 2049포트만 사용한다. rpcbind의 도움을 받지도 않으며, nfslockd 및 nfsstatd 등의 프로그램 또한 필요하지 않다. NFSv4를 사용한다면, 방화벽의 모든 포트를 오픈 할 필요 없이 2049 포트만을 오픈하면 된다.

NFS 서버 설치

본 가이드에서는  CentOS7을 기준으로 설명하겠다.

# yum  -y  install nfs-utils
NFS 서버 시작 및 종료
# systemctl  start  nfs-server
# systemctl  restart  nfs-server
# systemctl  stop  nfs-server

위와 같은 systemctl 명령를 사용하여 nfs-server 를 시작, 재시작, 종료한 결과이다. 위와 같은 방법으로 NFS 서버를 제어할 수 있다.

NOTE.
NFS는 여러 버전이 있으며 일반적으로 많이 사용한 NFSv3은 rpcbind를 사용한다. 그렇기 때문에 NFS를 사용하려면 위 nfs-server 서비스만 시작하는 것이 아닌, rpcbind 서비스도 함께 시작하여야 정상 작동한다.
NFS클라이언트에도 rpcbind 서비스를 시작해야 정상적으로 NFS마운트가 가능하다. NFSv4 의 경우는 서버에는 rpcbind이 필요 없으나, 클라이언트에는 rpcbind 서비스가 실행되어 있어야 정상적으로 작동한다.

# systemctl  enable  rpcbind
# systemctl  start  rpcbind
# systemctl  stop  rpcbind


NFS 서버 설정

NFS 서버를 사용하려면 다음과 같은 설정이 필요하다.
NFS 서버의 설절파일인  /etc/exports 파일에는 다음과 같이 작성한다. 처음 설정한다면 /etc/exports 파일이 없을 것이다.

# vim   /etc/exports

/home/vmail         192.168.0.11(rw,sync,no_root_squash)

위 설정은 "/home/vmail" 디렉토리를 공유하며, 192.168.0.11 NFS 클라이언트에서 접속이 가능하며, 옵션들은 다음과 같다.

*  rw  :  일기 / 쓰기를 허용
* sync :  요청시 쓰기 작업을 동기화
* no_root_squash : 원격 루트 사용자를 로컬 루트로 취급
NFS 클라이언트
1. NFS 마운트

NFS  클라이언트에서 NFS 서버에 접속한다. NFS 클라이언트에도 rpcbind 서비스가 가동중이여야 정상적으로 NFS  마운트가 된다. NFS  클라이언트는 다음과 같은 방법으로 마운트 한다.

( 클라이언트의 마운트 디렉토리는 기존에 존재하는 폴더를 지정하여야 한다.)

# mount  -t  nfs  NFS서버:대상DIR   마운트DIR

     


vi  편집 중 복/붙하는 경우  계단식으로  텍스트가 밀려나는 현상을 없애준다......


:set   paster


+ Recent posts