리눅스에서 네트워크 설정

 IT, 리눅스  Comments Off on 리눅스에서 네트워크 설정
Feb 172014
 

리눅스를 매뉴얼하게 설정하는 경우

http://dinggur.tistory.com/76

 

리눅스 네트워크 관련 설정파일

1) /etc/sysconfig/network-scripts/ifcfg-eth0   → 아이피,서브넷 마스크,(게이트웨이)
2) /etc/sysconfig/network   → 컴퓨터이름,(게이트웨이)
3) /etc/resolv.conf   → DNS 정보
4) /etc/hosts   → 네임서버 파일

 

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.150
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet

 

# vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=sg150
GATEWAY=192.168.0.1

 

# vi /etc/resolv.conf

nameserver 168.126.63.1

 

# vi /etc/hosts

# Do not remove the following line, or various programs
# that require network functionality will fail.
192.168.0.150           sg150 localhost.localdomain localhost

 

# service network restart

인터페이스 eth0 (을)를 종료함:                             [  확인  ]
loopback 인터페이스를 종료함:                              [  확인  ]
네트워크 매개 변수를 설정하고 있습니다:                    [  확인  ]
loopback 인터페이스 활성화중 입니다:                       [  확인  ]
eth0 인터페이스 활성화중 입니다:                           [  확인  ]

 

 Posted by at 7:08 PM

SELinux 관련 문제 해결방법

 IT, 리눅스, 정보보호  Comments Off on SELinux 관련 문제 해결방법
Nov 092012
 


http://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1731&sca=1 

http://mirr.springnote.com/pages/2092900

 

1. SELinux 기능 끄기와 켜기

1) 설정파일
/etc/sysconfig/selinux 파일에 설정이 있으며

SELINUX 지시어의 값을 변경하면 된다.
켜기 : # SELINUX=enforcing
끄기 : # SELINUX=disabled

# 참고

SELINUX 지시어는 enforcing,permissive,disabled 세가지가 있으며
enforcing : 보안정책을 적용시킨다는 뜻이다
permissive : enforcing시 발생하는 경고메세지를 출력하는 모드이다
disabled  : 보안정책을 사용하지 않는다는 뜻이다

SELINUXTYPE 지시어는 정책 적용방싱르 나타네며 targeted, strict 두가지가 있다
targeted : 네트웍 데몬에 대해서 보안정책을 적용하는 것
strict  : 시스템전체에대해 보안정책을 적용하는 것이다

2) 명령어
setenforce 라는 명령를 이용하여 SELinux를 켜고 끈다
setenforce의 경우 boolean 값을 갖는다.
켜기 : # setenforce 1
끄기 : # setenforce 0

3) 부팅옵션에 추가
grub.conf에 부팅옵셩을 줘서 설정할수 있다
켜기 : selinux=1
끄기 : selinux=0

2. SELinux관련 파일, 프로세서에 대한 태그확인 

SELinux의 경우 보안태그 또는 라벨링을 통해 해당 파일이나 디렉토리분아니라 자원에 대한 엑세스 허용 여부를 결정한다

파일 상의 보안태그 또는 라벨링확인 방법
# ls -Z
-rw——-  root root system_u:object_r:user_home_t:s0 anaconda-ks.cfg
drwxr-xr-x  root root system_u:object_r:user_home_t:s0 bin
drwxr-xr-x  root root system_u:object_r:user_home_dir_t:s0 conf
-rw-r–r–  root root root:object_r:user_home_t:s0    install.log
-rw-r–r–  root root root:object_r:user_home_t:s0    install.log.syslog

프로세서상의 보안태그 또는 라벨링
# ps axZ | grep squid
user_u:system_r:squid_t 3912 ? Ss 0:00 squid -D
user_u:system_r:squid_t 3915 ? S 9:10 (squid) -D
user_u:system_r:squid_t 3916 ? Ss 0:01 (unlinkd)

SELinux의 현제 상태를 확인하기 위해서는

적용이 안된상태  : # sestatus -v
SELinux status:                disabled

적용이 된 상태    : # sestatus -v
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 18
Policy from config file: targeted

Policy booleans:
allow_ypbind active
dhcpd_disable_trans inactive
httpd_disable_trans active
httpd_enable_cgi active
httpd_enable_homedirs active
httpd_ssi_exec active
httpd_tty_comm inactive
httpd_unified active
mysqld_disable_trans inactive
named_disable_trans active
named_write_master_zonesactive
nscd_disable_trans active
ntpd_disable_trans inactive
portmap_disable_trans inactive
postgresql_disable_transinactive
snmpd_disable_trans inactive
squid_disable_trans inactive
syslogd_disable_trans inactive
winbind_disable_trans inactive
ypbind_disable_trans inactive

Process contexts:
Current context: root:system_r:unconfined_t
Init context: user_u:system_r:unconfined_t
/sbin/mingetty user_u:system_r:unconfined_t
/usr/sbin/sshd user_u:system_r:unconfined_t

File contexts:
Controlling term: root:object_r:devpts_t
/etc/passwd root:object_r:etc_t
/etc/shadow system_u:object_r:shadow_t
/bin/bash system_u:object_r:shell_exec_t
/bin/login system_u:object_r:bin_t
/bin/sh system_u:object_r:bin_t -> system_u:object_r:shell_exec_t
/sbin/agetty system_u:object_r:sbin_t
/sbin/init system_u:object_r:init_exec_t
/sbin/mingetty system_u:object_r:sbin_t
/usr/sbin/sshd system_u:object_r:sbin_t
/lib/libc.so.6 system_u:object_r:lib_t -> system_u:object_r:shlib_t
/lib/ld-linux.so.2 system_u:object_r:lib_t -> system_u:object_r:ld_so_t

3. SELinux관련 트러블슈팅 

이부분은 실제 트러블 슈팅이라 하기에는 애매한 부분이 있다
정확하게 알고사용하면 문제된 부분이 없는데 모르기때문에 설정을 안하고 넘어가고
잘못하고 넘어가기에 발생하는 분제들이다 .

1) 심볼릭 링크상 관련 문제
dereference가 되면서 보안상의 문제가 발생하기에 읽어들 일 수 없는 경우가 발생한다 .
# chcon -h [filename]

2) 아파치의 403에러
보통 홈디렉토리를 옮기거나 기본경로가 아닐때
그리고 백업대이터를 이용하여 복구하였을때 많이 나타나는현상입니다
이경우 보안태그 또는 라벨링이 정상적으로 붙지않아 발생하는 경우이다

Context 설정을 설정파일상에 적용되어 있는 보안태그 또는 라벨링을 복원해주는 방법이다
# restorecon -rv /home

단 이경우에는 기존의 템플릿이나 설정파일에 설정이 되어있어야 가능하다 .

템플릿이나 설정파일을 직접 수정하기에 문제 있는 경우
# chcon -R -t httpd_sys_content_t /home/locli/public_html

# 참고
/etc/selinux/targeted/contexts/files/file_contexts
일반적인 파일에 대한 설정 (/etc , /lib , /var등과 같이 설정 ,실행 ,라이브러리, 로그파일등에 대한 설정)
/etc/selinux/targeted/contexts/files/file_contexts.homedir
홈디렉토리의 파일에 대한설정
/etc/selinux/targeted/contexts/files/homedir.templete
홈디렉토리의 파일에 대한설정의 템플릿 파일

3) php 및 cgi 등의 프로그램에서 외부파일을 불러오지 못하는 경우
이 경우는 SELinux에 의해 아파치에서 네트웍 자원을 엑세스하지못해 발생하는 문제이다 .
간단한 예를 들자면 php에서 원격 DB를 엑세스하지못하는경우
# setsebool -P httpd_can_network_connect_db on

# 참고
setsebool 명령어를 사용하여 할경우 -P옵선을 주게되면 설정파일에 반영되어 리부팅후에도 설정 값이 사라지지 않는다.

4) /etc/vsftpd/vsftp.conf를 수정했는데도 불구하고 500 에러가 나오면서 접속이 안될 경우
# setsebool -P ftp_home_dir=1

5) annot restore segment prot after reloc: Permission denied
rpm 으로 설치된 라이브러리에서 발생하는경우는 드물다  주로 소스 컴파일을하거나 사용자가 만들 rpm 파일에서 발생한다 .
간단하 예를 들자면 php의 모듈을 동적 컴파일로 올린경우 로드되지않을이다때
물론 컴파일등은 에러없이 ㅤㄱㅡㅌ이난경우이다.
# chcon -t texrel_shlib_t [so 라이브러리]

4. setsebool,chcon으로 설정가능한 항목 및 설정파일

1) FTP 관련 설정

기본경로 및 홈디렉토리 이외에 다른경로 또는 익명의 사용자가 ftp를 이용할경우
# chcon -R -t public_content_t /var/ftp

익명의 ftp사용자에게 쓰기 권한을 허용할 경우

특정경로에 보안태깅 및 라벨링을 하여 허옹
# chcon -t public_content_rw_t /var/ftp/incoming

불린값으로 허용
# setsebool -P allow_ftpd_anon_write=1

설정파일에 추가하여 허용
/etc/selinux/POLICYTYPE/contexts/files/file_contexts.local
/var/ftp(/.*)? system_u:object_r:public_content_t /var/ftp/incoming(/.*)?

system_u:object_r:public_content_rw_t

기본경로의 홈디렉토리가 아니거나 커스트마이징이 된 정책을 사용할경우
# setsebool -P ftp_home_dir 1

ftp만 SELinux 정책에서 제외해야할경우
# setsebool -P ftpd_is_daemon 1

데몬 실행중에 ftp만 SELinux 정책에서 제외해야할경우 :
# setsebool -P ftpd_disable_trans 1

2) HTTP 관련 설정

정의되어 있는 태깅 및 라벨링 명

httpd_sys_content_t  : 아파치의 모든 스크립트와 데몬에서 제공되는 모든 콘텐츠에 대한 설정
httpd_sys_script_exec_t  :  CGI실행을 허용 여부에 대한 설정
httpd_sys_script_ro_t  :    httpd_sys_script_exec_t 실행시 읽기 전용으로 사용 설정.
httpd_sys_script_rw_t  :    httpd_sys_script_exec_t 실행시 읽기/쓰기 전용으로 사용 설정.
httpd_sys_script_ra_t  :    httpd_sys_script_exec_t 실행시 읽기/append 전용으로 사용 설정
httpd_unconfined_script_exec_t : SELinux 보호 설정에 보호받지 않고 실행하기위한 설정

설정 예제)

멀티 도메인 하에 운영중인 서버에 정상적인 업로드를 지원하기위한 설정
# setsebool -P allow_httpd_anon_write=1
.. or ..
# setsebool -P allow_httpd_sys_script_anon_write=1

CGI 사용여부 결졍
# setsebool -P httpd_enable_cgi 1

기본경로의 홈디렉토리가 아니거나 커스트마이징이 된 정책을 사용할경
# setsebool -P httpd_enable_homedirs 1
.. OR ..
# chcon -R -t httpd_sys_content_t ~user/public_html

터미널을 엑세스 하기위한 설정
# setsebool -P httpd_tty_comm 1

# setsebool -P httpd_unified 0

php같이 모듈로 컴파일된 언어를 막기위한 설정
# setsebool -P httpd_builtin_scripting 0

네트웍 엑세스 허용 여부 설정
# setsebool -P httpd_can_network_connect 1

suexec 허용여부에 대한 설정
# setsebool -P httpd_suexec_disable_trans 1

httpd 데몬에 대해 SELinux 보호설정을 제외시킬때
# setsebool -P httpd_disable_trans 1
# service httpd restart

3) RSYNC 관련

특정 디렉토리의 rsync 허용방법
# chcon -t public_content_t /var/rsync

rsync 사용시 스기 허용
# setsebool -P allow_rsync_anon_write=1

rsync 데몬에 대해 SELinux 보호설정을 제외시킬때
# setsebool -P rsync_disable_trans 1
# service xinetd restar

4) named 관련

마스터의 zonefile을 업데이트하기위해
# setsebool -P named_write_master_zones 1

named 데몬에 대해 SELinux 보호설정을 제외시킬때
# setsebool -P named_disable_trans 1
# service named restart

5)  nfs 관련

읽기 전용 모드로 export 할 경우
# setsebool -P nfs_export_all_ro 1

일기/쓰기 모드로  export 할 경우
# setsebool -P nfs_export_all_rw 1

nfs로 원격서버의 스토리지를 마운트할경우
# setsebool -P use_nfs_home_dirs 1

6)  smb 관련

smb 를 이용할 데렉토리 설정
# chcon -t samba_share_t /data/share
.. or ..
vi /etc/selinux/POLICYTYPE/contexts/files/file_contexts.local
……
/data/share(/.*)? system_u:object_r:samba_share_t

공유 파일의 쓰기원한을 주기위한 설정
# setsebool – P allow_smbd_anon_write=1

smb mount를 혀용할 때
# setsebool -P samba_enable_home_dirs 1
# setsebool -P use_samba_home_dirs 1

smb 데몬에 대해 SELinux 보호설정을 제외시킬때
# setsebool -P smbd_disable_trans 1
# service smb restart

7) ypbind의 사용을 허용하기위한 설정
# setsebool -P allow_ypbind 1

8) kerberos 관련
kerberos 사용을 허용 할 경우
# setsebool -P allow_kerberos 1

kadmind or krb5kdc 데몬에 대해 SELinux 보호설정을 제외시킬때
# setsebool -P krb5kdc_disable_trans 1
# service krb5kdc restart
# setsebool -P kadmind_disable_trans 1
# service kadmind restart

5. 로그의 형식 

로그의 경우 messege, audit 로그에 남게된다
형식은 아래의 로그와 같다.
May 10 00:39:53 server kernel: audit(1178725193.534:53): avc:  denied  { name_connect } for  pid=4178 comm=”httpd” dest=3306 scontext=user_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket

audit(timestamp) 로그가 기록되는 시간을 나타낸다
avc — This message was from the SELinux access vector cache. Pretty much every message you are likely to see is from this cache.
denied | accepted 정첵에 의해 차단되었는지 허용되었는지를 나타낸다.
{ read | write | unlink | … } 타입을 나타댄다 . 파일인지  파일이면 읽기,쓰기 ….
for pid : 해당 프로세서의 pid를 나타낸다.
exe= — This is the path to the executable that started the process.
name= — This is the name of the target on which the action was attempted.
dev= — This is the device on which the target file is located.
ino= — This is the inode of the target of the action.
scontext= — This is the process’s security context. This contains user, role, and type.
tcontext= — This is the security context of the target of this action, for example, the file, directory, etc.
tclass= — This is the class of the target object, such as directory, file, device node, or something else.

6.  마무리

시스템 설치후 SELinux를 내리는 것이 제일먼저하는 일이었다
하지만 언제부터인가 SELinux를 사용하고 있는 업체들이 보여 내리자고만 할 수 가 없었다
물런 그런 업체들의 서버를 관리하는것은 아주짜증나는일이었다
성능저하만 시키고 설정하기 힘들게 되어있고  하지만 각 파일들에 대한 액세스 권한이
보다 세부적으로 나누어지고  서비스나 데몬의 크래킹이 전체 시스템에 영향을주는
것보다는 훨씬  안전하다는 것을 느낀 이후  SELinux에 대해 호감 아닌 호감을 가지게 되었고
그러다보니  모름에 대한거부감이 사라졌다

하지만 아직도 이부분에 대해서는 완전히 다알지는 못했다
그리고  4번 항목의 경우도 완전한 테스트가 이루어지지 않은부분이다 .

보다 많은 학습이 필요한 부분이기도 하다

 Posted by at 8:59 PM

계정생성시 유저계정폴더 권한설정 변경

 IT, 리눅스  Comments Off on 계정생성시 유저계정폴더 권한설정 변경
Sep 032012
 

보통 유저계정을 생성하면 700 디폴트로 계정폴더가 생성 됩니다

/etc/login.defs 를 편집기로 열어 umask 항목의 값을 077 에서 022 로 변경하면 권한이 755로 변경됩니다 ( 777 – 022 = 755 )

사용자 홈페이지를 사용할 수 있도록 설정하려면 umask 의 값을 066으로 변경하면 홈디렉토리의 권한이 711로 변경되어 웹브라우저를 통해 사용자 홈페이지에 접속할 수 있게 됩니다.

 Posted by at 3:53 PM

리눅스 유저 생성할 때 사용자 디렉토리 public_html를 자동 생성하는 방법

 IT, 리눅스  Comments Off on 리눅스 유저 생성할 때 사용자 디렉토리 public_html를 자동 생성하는 방법
Sep 032012
 

사용자 디렉토리 자동생성 방법

사용자를 추가할때 public_html 과 같은 사용자 디렉토리나 index.html 같은 기본 파일들을 자동으로 생성하도록 하기 위해서는?

/etc/skel이라는 디렉토리 밑에 public_html을 만들고 그 디렉토리 밑에 index.html 파일을 만들어주면 그때부터 사용자 추가시 자동으로 생성됩니다.

/etc/skel 디렉토리 속의 내용을 새로 생성되는 사용자의 홈디렉토리 속에 copy하는 것도 adduser 명령어가 하는 일 중의 하나입니다. adduser 명령으로 사용자를 생성 전 /etc/skel/public_html 을 만들어 놓으면 adduser 명령으로 사용자를 추가할 때마다 사용자의 홈디렉토리에 public_html 디렉토리가 자동 생성됩니다.

index 화일을 /etc/skel/public_html/ 속에 넣어두고 유저를 생성하면 index 화일이 사용자 홈디렉토리 public_html 에 생성됩니다.

 Posted by at 3:29 PM

리눅스 싱글부팅

 IT, 리눅스, 정보보호  Comments Off on 리눅스 싱글부팅
May 022012
 

리눅스 root 계정 비밀번호를 잊어버렸을때는?!!
싱글모드로 부팅하면 된다.
비밀번호 필요없이 root 권한으로 콘솔모드 부팅이 가능하다.

1. 컴퓨터를 켜고 부트로더가 실행되려 할때 e 를 누른다.
> 언제쯤인지 모르겠거든 열심히 e 를 누르고 있는다. -_-

2. 커널의 종류를 선택하는 메뉴가 나오면 부팅할 커널에 커서를 놓고 또 e 를 누른다.

3. 그 다음에 나온 2번째 메뉴에서 e 를 누른다.

4. 커서를 제일 뒤에 놓고 single 을 덧붙여 쓴뒤 엔터.

5. b 를 눌러 부팅 시킨다.

이렇게 하면 콘솔 모드로 부팅이 된다.
콘솔모드로 부팅이 된 후에는

]$ passwd

위와 같은 명령어로 비밀번호를 설정해 준다.

]$ reboot

싱글모드 설정은 부팅한 뒤 재부팅을 하면 사라진다.
(싱글모드 해제하려고 들어가 보니 설정한 부분이 사라지고 없더라;; )

부팅 후에 여유있게 바뀐 비밀번호로 로그인 하면 완료!!

 Posted by at 10:18 AM

SELinux 설정 방법

 리눅스  Comments Off on SELinux 설정 방법
Sep 152010
 

SELinux는 보안성이 향상된 새로운 방화벽 시스템으로 최근의 리눅스 시스템에 기본적으로 추가되어 있습니다. 이것을 변경하기 위해서는 페도라 메뉴의
시스템->관리->SELinux Management
를 실행하여 설정을 변경할 수 있습니다. 현재 어떤 문제가 발생하고 있는지는 setroubleshoot 리포트를 참고합니다.

다음은 http://www.fduser.org/blog/42 에서 퍼온 내용입니다.

1. SELinux 설치 및 미 설치 방법
설치 중 방화벽 설정 화면에서 선택한 사항에 기초하여 설치자(installer)가 처리.
– 설치(active) : 기본 가동 정책(default running policy)은 목표 정책이며,
기본으로(by default) 가동된다.
– 미설치(disabled) : disabled 상태로 변경하여 설치 진행한다.

2. 사용중인 정책을 교체하는 방법
– system-config-securitylevel
정책을 바꾸고 재명명(relabel)하도록 파일 시스템을 설정하는 것이다.

(1) /etc/selinux/config을 편집하고 SELINUXTYPE=policyname 으로 정책 유형을 바꾼다.

(2) 재 부팅 하여 돌아올 수 있는지 확인하기 위해, SELINUX=permissive 모드로 설정한다.
이렇게 하면, SELinux는 정확한 정책하에서 가동될 것이지만, 만일 부정확한 파일 문맥 명명(labeling)과 같은 문제가 있으면 로그인 하도록 할 것이다.

(3) sysadm_r 역할을 갖춘 root로 파일 시스템을 재명명 한다(relabel)

id -Z
root:sysadm_r:sysadm_t
fixfiles relabel

옵션 -l /path/to/logfile을 사용하여 표준 출력으로 로그를 볼 수 있고, 옵션 –o /path/to/file을 사용하여 검토(checked)되거나 재 명명(relabeled)된 모든 파일 리스트를 저장할 수 있다.

(4) 시스템을 재 부팅 한다. 새 정책하에서의 재 시작은 모든 시스템 프로세스가 적절한 문맥에서 시작되고 정책 변경으로 인한 모든 문제가 드러나게 한다.

(5) sestatus –v 명령으로 발효된 변경사항을 확인한다. Permissive 모드로 가 동된 새 시스템에서, avc: denied 메시지를 /var/log/messages에서 확인한 다. 이들은 새 정책하에 문제없이 시스템이 가동되도록 해결해야 할 문제들을 표시해 준다.

(6) 새 정책하에서 시스템이 만족스럽게 돌아갈 때, SELINUX=enforcing 으로 바꿔 실행 권한을 부여한다. 실시간에 enforcing을 활성화 시키기 위 해 재 부팅하거나 setenforce 1 을 실행한다.

3. 특정 데몬에 대하여 SELinux protection을 활성화/비활 성화 방법
– 특정 데몬의 부울 값을 제어하려면 system-config-securitylevel을 사용한다.
예를 들어, 만일 apache가 시스템상에서 올바르게 동작하도록 하기 위해서는 SELinux를 비활성화 시켜야 한다면, system-config-securitylevel으로 해당 값을 비활성화시키면 된다.
이는 apache.te에 정의된 정책으로 전이되는 것을 막고 httpd가 일반 리눅스 보안 하에 있도록 한다.

4. 부팅 중 SELinux를 비활성화시키는 방법
– 커널 명령 라인에 selinux=0를 추가

5. 부팅시 enforcing을 활성화/비활성화하는 방법
– /etc/sysconfig/selinux 설정 파일을 이용

====================================================

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – No SELinux policy is loaded.
SELINUX=enforcing

(1) SELINUX=enforcing : enforcing을 활성화하기 위해 커널을 부팅할 때 명령 라인에
enforcing =1을 추가하는 것과 같다.
(2) SELINUX=permissive : enforcing을 비활성화하기 위해 enforcing=0 를 추가하는 것과 같다.
(3) SELINUX=disabled : 커널 부트 인자 selinux=0을 사용 하는 것과 다르다.
커널에서 SELinux를 완전하게 비활성화시키는 것과 달 리 대신 disabled를 설정하는 것은 enforcing을 비활성화하고 정책 적재를 하지 않고 건너뛰는 것이다.

====================================================

6. 재부팅하지 않고 enforcing 모드를 임시로 비활성화/활성화 방법
– 실시간으로 enforcing모드를 비활성화시키기 위해서 sentenforce 0 명령을 실행.
작업이 끝나서 enforcing 모드로 돌아오기 위해서는 sentenforce 1을 실행.

7. SELinux 설치에 관한 상태 정보(status info)를 얻는 방법
– root 사용자 권한으로 /usr/sbin/setstatus –v 명령을 실행.

 Posted by at 5:31 PM

MySQL 사용자 추가 및 DB 권한 주기

 Mysql, 리눅스  Comments Off on MySQL 사용자 추가 및 DB 권한 주기
Sep 062010
 

ID, pass, DB 부분을 필요한 정보로 바꿔주면 됩니다.

1. root로 mysql에 로그인하여

USE mysql;

INSERT INTO user (host, user, password) VALUES (‘localhost’,’ID’,password(‘pass’));

INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv) VALUES (‘%’, ‘DB’, ‘ID’, ‘Y’, ‘Y’, ‘Y’, ‘Y’,’Y’,’Y’);

GRANT ALL on DB.* TO ID;

FLUSH PRIVILEGES;

2. ID로 mysql에 로그인하여 DB를 생성
create database DB;

 Posted by at 6:59 PM

리눅스 서버의 사용자 계정에서 홈페이지 서비스 가능하도록 설정하는 방법

 리눅스  Comments Off on 리눅스 서버의 사용자 계정에서 홈페이지 서비스 가능하도록 설정하는 방법
Sep 062010
 

리눅스 서버의 사용자 계정에서 홈페이지 서비스 가능하도록 설정하는 방법.
Fedora 9 기준.

root로 로그인하여
1. httpd.conf 설정
UserDir disable 을 코멘트 처리
UserDir public_html 을 언커멘트
2. httpd 서비스 재시작
service httpd restart
3. 사용자 계정 생성
useradd id
passwd id – 초기 패스워드 설정
4. 계정 접근권한 설정
chmod a+x ~id
5. SeLinux에서 엑세스 허용
restorecon -R -v /home/id

사용자 id로 로그인하여
1. 홈디렉토리에 public_html 디렉토리 생성
2. public_html 디렉토리에 index.html 작성
3. localhost/~id 로 접속하여 서비스 동작 확인

 Posted by at 3:12 PM

Mysql Initial message

 Mysql, 리눅스  Comments Off on Mysql Initial message
Sep 062010
 

MySQL 데이타베이스를 초기화하고 있습니다: Installing MySQL system tables…
OK
Filling help tables…
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password ‘new-password’
/usr/bin/mysqladmin -u root -h crisftp.joongbu.ac.kr password ‘new-password’

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
[ OK ]
MySQL (을)를 시작합니다: [ OK ]

 Posted by at 2:11 PM

MySQL의 기본 명령어 정리

 Mysql, 리눅스  Comments Off on MySQL의 기본 명령어 정리
Aug 312010
 

MySQL의 기본 명령어와 SQL문 정리. 내가 RDBMS에 완전 문외한이기 때문에 기본 SQL쿼리까지…
Redhat Linux 7.3, MySQL 3.23.58 에서 테스트함.
설치는 Redhat 기본 제공 RPM으로 했다.

데이터베이스 접속

$ mysql -u 사용자명 -p dbname

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

$ mysql -u root mysql

비밀번호 변경
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 이용

    SET PASSWORD FOR root=password(‘새비밀번호’);

일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.

사용자 추가/삭제

mysql> 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’;

위를 또한 번 실행한다. ‘%’에서 홑따옴표를 주의한다.
추가 : ‘%’를 호스트네임으로 지정해도 모든 호스트에서 접속할 수 없었다. 각 호스트별로 다 지정해야 했다.
아래 댓글에서 rukikuki님이 알려주셨습니다.
GRANT ALL PRIVILEGES ON testdb.* TO ‘username’@’%’ IDENTIFIED BY ‘password’ ;
처럼 ‘username’ 이런식으로 홑따옴표를 username 에도 붙여야 하더군요..

불필요한 사용자 삭제는

mysql> DLETE FROM user WHERE user=’username’;
mysql> FLUSH PRIVILEGES;

데이터베이스 생성/보기

  • 데이터베이스를 생성하고,

    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,
    column_name2 VARCHAR(15),
    column_name3 INT );

  • 현재 데이타베이스의 테이블 목록을 보고

    mysql> SHOW TABLES;

  • 테이블 구조를 살펴본다.

    mysql> EXPLAIN tablesname;
    혹은
    mysql> DESCRIBE tablename;

  • 이름을 잘못 지정했으면 이름을 변경할 수도 있다.

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

  • 필요 없으면 삭제한다.

    mysql> DROP TABLE [IF EXISTS] tablename;

현재 상태 보기

mysql> status

————–
mysql Ver 11.18 Distrib 3.23.58, for pc-linux (i686)

Connection id: 26
Current database: study
Current user: study@localhost
Current pager: stdout
Using outfile: ”
Server version: 3.23.58
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: euc_kr
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 hours 9 min 59 sec

Threads: 1 Questions: 160 Slow queries: 0 Opens: 28 Flush tables: 1
Open tables: 1 Queries per second avg: 0.021
————–

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 grade;

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

mysql> SELECT * FROM tablename ORDER BY col1 DESC;
mysql> SELECT col1, korean + math english AS ‘총점’ FROM tablename ORDER BY ‘총점’ ASC;

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

mysql> SELECT * FROM grade WHERE korean < 90;

조건줘서 SELECT.

mysql> SELECT * FROM grade LIMIT 10;

결과중 처음부터 10개만 가져오기

mysql> SELECT * FROM grade LIMIT 100, 10;

결과중 100번째부터 10개만 가져오기. 첫번째 레코드는 0번 부터 시작한다.

UPDATE

mysql> UPDATE tablename SET col1=새값 WEHER 조건

DELETE

mysql> DELETE FROM tablename WEHRE 조건

mysql에서 쿼리 결과 세로로 보기
-E 옵션을 줘서 실행한다.

$ mysql -E -u root -p mysql

mysql에서 발생한 오류나 경고 다시 보기

mysql> show errors;
mysql> show warnings;

 Posted by at 1:50 PM