Search Results for '프로그래밍/리눅스 & MY-SQL'
206 posts related to '프로그래밍/리눅스 & MY-SQL'
- 2010/06/07 www 자동으로 붙이기
- 2010/06/07 .htaccess를 이용한 특정 디렉토리 접근 관리하기
- 2010/06/07 계정을 이동할 때 끝김이 없게 하기
- 2010/06/07 vsftpd passive mode 사용
- 2010/06/07 vsftp port 변경
- 2010/06/07 mod_rewrite 별도 설치
- 2010/06/07 [VIM] 으로 간단히 소스코드 Packing 하는법
- 2010/06/07 리눅스 사용자 계정 생성
- 2010/06/07 ncftp - .bash_history
- 2010/06/07 ncftp 를 이용한 백업 스크립트
- 2010/06/07 ftp 업로드 자동
- 2010/06/07 리눅스 mysql auto backup방법
- 2010/06/07 리눅스 시간맞추기
- 2010/06/07 vsftp에서 500 OOPS: cannot change directory 오류가 나올 때
- 2010/06/07 [리눅스 Linux lpic]리눅스 설치시 유용한 10가지 팁
- 2010/06/07 리눅스 Vnc클라이언트에서 Alt-Tab 쓰기
- 2010/06/07 페도라 설치후 mysql이 원격으로 접속이 안될때
- 2010/06/07 cgi 세팅 - httpd.conf
- 2010/06/07 리눅스 실시간 트래픽 모니터링 하기
- 2010/06/07 ftp passive
- 2010/06/07 mysql 외부 접속 설정
- 2010/06/07 아파치 웹서버에서 한글 파일 사용하기
- 2010/06/07 [mysql] 계정 생성/ DB권한부여 / 패스워드 변경/ 삭제
- 2010/06/07 mysql 4.0.27 설치시 에러 발생
- 2010/06/07 아파치로그 로테이션
- 2010/06/03 리눅스 콘솔에서 파일 지우면 휴지통으로 들어가게 한후 복원까지
- 2010/06/01 메일만 사용하는 계정 만들기
- 2010/06/01 yum을 이용한 시스템 업데이트
- 2010/06/01 콘솔모드 또는 X윈도우로 부팅하기
- 2010/06/01 웹호스팅 사용자용 계정관리 스크립트
http://도메인.com
www 를 붙이지 않고 접속시 www붙일곳과 링크가 있을떄 로그인이 풀어지는 일도 발생하고 다른 여러가지 문제도 있습니다.
그럴 때는 세션공유같은 번거로운거보다 소스한줄로 www.도메인 으로 통합관리해보세요..!
php로 정규식을 이용해 하는 방법도 있지만 이것은 모든페이지에 전부 파일을 인클루드시켜줘야 하는 문제가 있네요..
.htaccess 를 이용하는건데요,
RewriteCond %{HTTP_HOST} !^www\.자신의도메인\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://www\.자신의도메인\.com/$1 [L,R]
이걸 응용하셔서 써먹으시면됩니다.
.htpasswd 파일을 만들어주고
디렉토리 안에
.htaccess 파일을 만들면 끝...
1. 먼저 인증할 user와 password를 설정합니다.
/usr/local/apache/bin/htpasswd -c /지정할경로/.htpasswd 등록할ID
-> 패스워드를 입력합니다.
그럼 해당 경로에 .htpasswd 파일이 생성됩니다.
일반적으로 사용하는 경로입니다.
/usr/local/apache/htdocs/.htpasswd
2번째 패스워드부터는 -c 를 빼고 합니다. (주의)
/usr/local/apache/bin/htpasswd /지정할경로/.htpasswd 등록할ID
이렇게 하면 패스워드가 계속 추가됩니다.
하지만, 조금 귀찮더라도
.htpasswd
.htaccess
이 2개의 파일을 각 계정 안에 있는 임의의 하나의 디렉토리 안에 만들고
개별 경로를 따로 지정해 주는 쪽이 보안에 유리합니다... ;;
참... 디렉토리 권한은 701로 파일 권한은 644로 해 주세요... ^^*
2. 그리고 vi나 기타 에디터를 이용하여 .htaccess 파일을 생성합니다.
--------------------------------------------------------------------
AuthUserFile /지정한 경로/.htpasswd
AuthName "인증시 나타날 제목"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
--------------------------------------------------------------------
여기서 부터 아래쪽은 트래픽 확인을 위한 관리를 위한 응용입니다.
아파치 설정파일 httpd.conf 파일
마지막 부분에 다음과 같이 입력합니다.
--------------------------------------------------------------------
# 사용자 트래픽 제한
<IfModule mod_throttle.c>
ThrottlePolicy None
<Location /throttle-status>
SetHandler throttle-status
# 여기서 부터 --
AuthName "인증시 나타날 제목"
AuthType Basic
AuthUserFile /지정한경로/.htpasswd
require valid-user
# 여기까지 ---
</Location>
<Location /throttle-me>
SetHandler throttle-me
</Location>
</IfModule>
--------------------------------------------------------------------
기존 계정의 public_html 디렉토리를 public_html_old로 변경한 후 (접속금지)
새로운 public_html 디렉토리를 만들어서 밑에 다음과 같이 index.php를 만든다
<?
header("Location: http://새로운서버의ip임시접속정보/~opencode/");
?>
pasv_enable=YES 추가
/etc/rc.d/init.d/vsftpd restart 실행
vi /etc/rc.d/rc.local 에
modprobe ip_conntrack_ftp 추가
reboot 실행
ftp를 이용한 해킹을 막기 위해서 해외 접속 ftp에 대한 ip를 모두 차단할 수도 있지만
(GeoIP라는 거를 쓰면 됨) 간단하게 ftp port만 바꿔버릴 수도 있습니다.
vsftp의 경우 /etc/vsftpd/vsftpd.conf 에서 아래 라인을 추가 합니다.
그리고 가끔씩 ftp port를 바꿔서 해킹을 헷갈리게 하는거죠.
이거는 공용서버에서는 할 수 없겠죠? ㅎㅎ
# vsftp access port
listen=YES
listen_port=15231
mod_rewrite 설치시 도움 될만한 글입니다...
이것은 처음 설치용이 아닌 사용중 추가하는 방법입니다.
cd 아파치설치디렉토리/src/modules/standard
/usr/local/apache/bin/apxs -c -I/usr/include/gdbm mod_rewrite.c
gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm
/usr/local/apache/bin/apxs -i mod_rewrite.so
vi /usr/local/apache/conf/httpd.conf
#------- 아래 부분 추가 -------
LoadModule rewrite_module libexec/mod_rewrite.so
Addmodule mod_rewrite.c
#------- 여기까지 ---------
/usr/local/apache/bin/apachectl configtest
/usr/local/apache/bin/apachectl restart
이렇게 하시면 에러 안나고 설치 잘 됩니다.
map <F12> :%s/\(\/\*[^\*\r\n]*\*\/\\|\/\/.*[^\r\n]\)//g<CR>1GVGJ:noh<CR>
자세한 내용은 링크에 있습니다.
사용자 계정 생성
* OS : CentOS5.1
1) 사용자 계정 생성
# adduser -d [홈디렉토리] [사용자명]
2) 홈디렉토리 권한 확인
# chmod 755 -R [홈디렉토리]
3) 패스워드 설정
# passwd popson
4) 사용자 삭제
# userdel -r [사용자명] : -r 은 디렉토리까지 삭제
들어 있습니다. ncftp가 편한 명령어지만 아이디와 패스워드가 모두 명령에 들어있어
그것이 history에 노출되는 것 입니다.
ncftp의 .bash_history 로그에는 아이디와 패스워드가 모두 노출 되어 있기 때문에,
해당 아이디와 패스워드를 이용해서 FTP에 접속 홈페이지의 data와 DB 정보를 모두
빼내어 갈수 있으므로, 시급히 대응해야 하는 취약점 입니다.
해당 파일들을 모두 삭제하여 주시기 바랍니다.
find / -name .bash_history
ncftp 를 이용한 백업 스크립트
ncftp를 이용한 백업 스크립트입니다.
스크립트에 원격삭제도 추가하면 더좋겠죠?
# vi /root/backup.sh
#!/bin/bash
#### 공통설정
export Today="`date '+%y-%m-%d'`"
backup_dir="/home/file/backup"
backup_day="1" # 보관일(1일)
#### 디비설정
DB_user="root";
DB_pass="비밀번호";
#### 원격설정
FTP_addr="접속아이피";
FTP_user="아이디";
FTP_pass="비밀번호";
########### 오래된 백업데이터 삭제
dirlists=`/bin/ls -t $backup_dir 2>/dev/null`
i=1
for dir in $dirlists ; do
if [ "$i" -ge $backup_day ] ; then
/bin/rm -rf "$backup_dir/$dir"
fi
i=$(($i+1))
done
####### 새로운 디렉토리 생성
if [ ! -d "${backup_dir}/${Today}" ]
then
/bin/mkdir -p ${backup_dir}/$Today
/bin/mkdir -p ${backup_dir}/$Today/homedir
/bin/mkdir -p ${backup_dir}/$Today/databass
/bin/mkdir -p ${backup_dir}/$Today/system
fi
####### databass를 사용자별로 백업을 한다.
for database in `mysqlshow -u ${DB_user} -p${DB_pass} | awk -F" " '{ print $2 }' | grep -v "^$" |grep -v "Databases"` ; do
mysqldump -u ${DB_user} -p${DB_pass} "${database}" ${table} > ${backup_dir}/${Today}/databass/${database}.sql
done
####### 시스템 디렉토리를 백업한다
tar cvfpz ${backup_dir}/$Today/system/usr.local.tar.gz /usr/local
tar cvfpz ${backup_dir}/$Today/system/etc.tar.gz /etc
tar cvfpz ${backup_dir}/$Today/system/var.named.tar.gz /var/named
####### home 디렉토리에 사용자별로 백업을 한다.
dirlists=`/bin/ls -t /home 2>/dev/null`
for dir in $dirlists ; do
tar cvfpz ${backup_dir}/$Today/homedir/$dir.tar.gz /home/$dir
done
####### 링크를 만들어 준다.
rm -rf ${backup_dir}/today
ln -s ${backup_dir}/$Today /${backup_dir}/today
####### 원격 데이타백업을 시작한다.
ncftp -u${FTP_user} -p${FTP_pass} ${FTP_addr} << ./backup
put -R ${backup_dir}/$Today
bye
* 파일 경로 주의하시고 이메일주소 변경해서 사용하세요.
# crontab -e
05 00 * * * '/usr/bin/rdate -s time.bora.net && /sbin/clock -w'
00 04 * * * su - root -c '/root/backup.sh | mail -s "시스템 백업 결과보고" test@abc.com';
ftp 업로드 자동
보통 crontab 에 스케줄을정리하여 자동으로 백업을 받던지 어떠한 작업등을 설정할 수 있는데..
이중 어떤 자료를 매월 혹은 매주 특정 서버로 보내야 할 필요가 있다면 어떻게 해야 할까?
ftp 명령을 사용하여 자동으로 다른 서버로 자료를 보내는방법을설명드리고자 합니다.
1. ftp 자동로그인 환경파일 작성
# vi .netrc
# mahine [hostname] login [loginid] password [login password]
machine ftpserver login ftpuser password pw1234
위와 같이 파일을 .netrc 파일을 작성합니다. machine 뒤에 오는 ftpserver 값은
/etc/hosts 파일에 아이피주소가 미리 등록되어 있어야 합니다.
# chmod 600 .netrc
.netrc 파일을 600 모드로 바꾸지 않으면 파일 모드가 맞지 않다고 에러가 납니다.
2. ftp 실행 테스트
# ftp ftpserver
Connected to ftpserver.
220 NMS FTP server (SunOS 5.8) ready.
331 Password required for root.
230 User root logged in.
ftp>
아이디와 암호를 묻는 과정없이 자동으로 로그인 됩니다.
3. 로그인뒤 실행되어야 될 명령어 설정
# vi .ftpcmd
bin # binary file일 경우
cd /export/home # 서버에 업로드 디렉토리 이동 할 경우
prompt # 다수의 파일을 업로드 해야될경우 interactive 모드 해제
mput *.tar # 특정파일 업로드
4. 실행 테스트
# ftp ftpserver < .ftpcmd
자동으로 실행되는지 확인합니다.
5. 크론탭등록할 스크립트 만들기
# vi ftpupload.script
cd /ftpuploaddir # 업로드할 파일이 있는 디렉토리 가기
ftp ftpserver < /.ftpcmd
# chmod 700 ftpupload.script
6. 크론탭 등록하기
crontab -e
0 6 1,16 * * /ftpupload.script # 크론탭 맨끝에 추가
# 매월 1일 16일 6시에 ftp 업로드 실행
리눅스 mysql auto backup방법
우선 리룩스 root롤 로긴후
[root@host root]# cd /etc/cron.daily 폴더로 이동하세요...
##################### crontab 파일설정 #######################
### cron.daily폴더는 crontab파일 에서 설정을 해야함
###
### HELL=/bin/bash
### ATH=/sbin:/bin:/usr/sbin:/usr/bin
### AILTO=root
### HOME=/
### # run-parts
### 01 * * * * root run-parts /etc/cron.hourly //매시간 마다 1분에 실행
### 02 4 * * * root run-parts /etc/cron.daily //매일 새볔 4시 2분에 실행
### 22 4 * * 0 root run-parts /etc/cron.weekly //지정 요일 4시 22분에 실행
### 42 4 1 * * root run-parts /etc/cron.monthly //매달 1일 4시 42분에 실행
##########################################################
vi편집기로 파일을 하나 생성합니다.
[root@host cron.daily]# vi mysql_auto_backup
#이건 쉘 스크립트 입니다.
#!/bin/bash
#위는 bin/bash밑에 있는 스크립트를 사용한다는 선언
mysql_autodb(){ #클래스 생성
mysql_path='/usr/local/mysql/bin/' #mysql 실행파일이 있는 경로 지정
month=$(date +%Y%m%d) #제목에 사용할 서버현제날짜를 구함
fileName="host_db1_${month}.sql" #저장할 파일이름 설정1
#파일 저장 경로 지정 대부분 홈디랙토리에 생성
savePath="/home/backup/backupfile"
if ${mysql_path}mysqldump -h 211.39.149.53 -unobody -pcareer www > /home/backup/${fileName} #dump받아 임시폴더에 저장
then
echo "careerdb1 mysql database=www dump complete..." #dump 성공메시지
/bin/rm -f ${savePath}/careerdb1_www_* #전날 dump file 삭제
mv /home/backup/${fileName} ${savePath} #설정폴더로 이동
else
echo "www database backup error!!!!!!" #에러시 에러메시지
exit 1 #else end
fi #if end
} #class end
mysql_autodb() #class 호출
저장 종료후 (esc -> :wq)
실행파일 만들기
[root@host cron.daily]# chmod 755 mysql_auto_backup
[root@host cron.daily]# ./mysql_auto_backup
이렇게 실행한 다음 제대로 저장이 됬나 확인
[root@host cron.daily]# cd /home/backup/backupfile
[root@host backupfile]# ls
host_db1_20040525.sql
리눅스 시간 맞추기
- 명령라인에서 설정
# rdate -s time.bora.net && hwclock -w
- 부팅시 설정
. /etc/rc.d/rc.local 에 아랫부분 추가.
rdate -s time.bora.net && hwclock -w
- cron에 등록해서 주기적으로 서버의 시간 설정
. /etc/crontab 에 아랫부분 추가.
0 0 * * 1 root rdate -s time.bora.net && hwclock -w
- 타임서버
time.bora.net
time.nuri.net
time-a.nist.gov
SELinux 때문이라고 합니다.
# setsebool -P ftp_home_dir=1
이렇게 하면, ftp directory에 대한 접근을 허가 하게된다.
"-P"는 Rebooting 될더라도 값을 저장하여,
정상적으로 동작 하도록 한다.
1. 파일 계층[리눅스/Linux]
각 드라이브 당 파일 트리를 하나씩 갖고 있는 여타 OS와는 달리 리눅스 파일 시스템은 하나의 거대한 트리 구조이다. 맨 꼭대기에 / (루트)가 있고 모든 폴더, 파일, 드라이브는 이 루트에서 가지가 뻗어나간다.[리눅스]예를 들어, 여러분이 하드 드라이브 2개(a와 b), 플로피 드라이브 1개, CD롬 1개가 있다고 하자. 첫 번째 하드 드라이브는 파티션이 둘로 나누어져 있다고 하자(a1과 a2). 윈도우에서는 다음과 같이 표시된다.:[리눅스]+ hard drive a, partition one (hda1): C Drive+ hda2: D Drive+ hdb1: E Drive+ floppy: A drive+ CD-ROM: F Drive리눅스에서는 하나의 파일 시스템으로 나타날 뿐 윈도우의 예처럼 5개가 아니다. 각 드라이브는 트리에 마운트(mount)되고 마치 폴더처럼 동작한다. 드라이브는 다음과 같이 위치시킬 수 있다.:[리눅스]+ hda1: / (our Root)+ hda2: /home+ hdb1: /home/user/music+ floppy: /mnt/floppy+ CD-ROM: /mnt/cdromD 드라이브와 E 드라이브는 C 드라이브 안에 붙어있으며 드라이브를 옮겨가기 위해 최상위까지 갈 필요는 없다. 그저 한 폴더에서 다른 폴더로 이동하는 걸로 간단하게 이동이 끝난다. 플로피와 시디롬도 마찬가지여서 하나의 파일 시스템의 일부분으로 /mnt 하에 붙어있다. 설치 프로그램이나 사용자가 컴퓨터에게 뭐가 어디에 붙어있고 어떻게 조작해야 하는지 알려주는 /etc/fstab 파일을 어떻게 설정하느냐에 따라 실제로 이 드라이브들은 리눅스 시스템 어디에든 붙일 수 있다. 그림 A를 보라.[리눅스]
2. 모듈식 시스템[리눅스/Linux]
윈도우 XP, 윈2k, 윈98, 윈95, 애플 OS X의 속이 어떤지 생각해 보라. 각기 내부에 서로 다른 컴포넌트를 지니고 있고 서로 다른 그래픽 환경을 갖고 있을 것이다. XP에서 동작하는 미디어 플레이어에, 98의 파일 관리자에, 윈2k의 안정성에, OS X의 외관을 한데 합치고 싶다면 어떻게 할 수 있을까? [리눅스]리눅스에서 시스템의 각 부분은 서로 독립적이어서 이것저것 섞어서 여러분의 OS를 흡사 프랑켄슈타인 OS로 만들 수도 있다. 방화벽으로 돌릴 프로그램은 이것, 미디어를 재생할 프로그램은 저것, 파일 관리자로 돌릴 건 또다른 어떤 것 등 다양한 프로그램 중에서 선택해서 쓸 수 있다.[리눅스]MS의 운영체제는 모든 것이 상호 연결돼 시스템의 각 부분이 서로 의존하고 있기 때문에 ‘탑’에 비유할 수 있는 것과는 달리, 리눅스 OS는 마치 시장처럼 여기저기 펼쳐져 있다. 시장에서는 모두들 공익을 위해 함께 움직이지만 시장 상인(리눅스의 독립적 부분)들은 시장에서 빠질 수 있고, 그래도 시장(운영체제)은 돌아갈 것이다. 미디어 플레이어나 파일 관리자를 원치 않는다고? 빼버려라! 여러분 OS는 금이 간 탑처럼 쓰러져 버리지 않을 것이다.[리눅스]이런 모듈화가 돼 있기 때문에 리눅스 배포판(distributions. 영어로 보통 distros라고 불린다)은 종류가 꽤 많다. 어떤 개인이든 회사든 자신들이 가장 유용하다고 생각되는 걸 찾아내서 모은 후에 거기다가 이름을 갖다 붙인다. 레드햇(RedHat), 잔드로스(Xandros), 심플리멤피스(SimplyMEPIS), 수세(Suse)가 그런 배포판의 예이다.일부 배포판은 대형 배포판을 흉내내서 만들어내곤 하지만 포함된 프로그램은 바뀐다. 이는 리눅스의 방식인 믹스앤매치(mix-and-match) 접근 방식으로서 결국에는 사용자들에게 더 많은 선택권을 부여해준다. 디스트로워치닷컴(DistroWatch.com)에서는 현재 리눅스에 350개가 넘는 배포판이 있는 것으로 집계하고 있다. 목록에 나와있는 많은 배포판들은 특정 사용자 집단을 위해 특화돼 있긴 있지만, 모든 배포판은 똑같은 프로그램을 돌리도록 수정될 수 있다.[리눅스]프로그램이 상호 교환될 수 있기 때문에 GUI(Graphical User Interface)도 예외는 아니다. GUI를 바꿀 수 있어 마우스, 프로그램 아이콘, 메뉴 등에서 현대적인 OS의 룩앤필(look and feel)을 가질 수 있다. 어떤 리눅스 시스템이라도(휴대폰에서 돌아가는 리눅스 말고 실제 컴퓨터에 돌아가는 리눅스) 여러 가지 서로 다른 GUI 중 하나를 택해 이용할 수 있고, 여러 웹 서버나 서로 다른 이메일 클라이언트 프로그램을 돌릴 수도 있다.[리눅스]시스템을 윈도우처럼 보이게 하고 싶은가? FVWM에서 XP 테마를 사용하면 된다. 속도가 좀 빨랐으면 좋겠나? IceWM을 써보라. 좀더 "기능이 풍부한" 걸 원하는가? GNOME이나 KDE를 써보기 바란다.[리눅스] 이런 GUI들 모두 장단점이 있지만, 모두다 마우스를 이용이 가능한 인터페이스를 제공한다. 이런 다양한 GUI들을 쓸 수 있기에 사람들이 사용하는 리눅스 화면이 서로 제각기 달라보일지 모르겠지만 모든 GUI의 이면에서는 똑같은 작업이 이뤄지고 있다. 직접 눈으로 확인해 보라. 어려운 일은 아니다.[리눅스]
3. 하드웨어, 소프트웨어, 그리고 그 중간에 위치한 것[리눅스/Linux]
리눅스는 짧은 기간동안 큰 발전을 했다. 리눅스는 MS 윈도우 나이의 절반도 안 되지만 레드몬드의 OS(MS 윈도우)가 비싸고 버그도 많은 반면 리눅스는 더 강력하고, 더 안정적이며, 리소스도 덜 잡아먹고, 그래픽 측면에서는 (리눅스가 더 우월하지 않다해도) 동등한 수준을 보인다.[리눅스]리눅스가 아직 MS 윈도우를 쫓아가지 못하는 건 벤더들의 지원이다. 예를 들어, 만약에 여러분이 인튜잇(Intuit)의 퀵북(QuickBooks)없인 못산다해도 리눅스에서 그대로 구동시킬 순 없다. 리눅스에서 윈도우 프로그램을 동작시키려는 프로젝트들이 있다. 크로스오버 오피스(CrossOver Office)와 와인(Wine)같은 것들이 있는데, 윈도우 프로그램이 뭐냐에 따라 돌릴 수 있을 수도 있고 없을 수도 있다. 소프트웨어 업체들이 리눅스로 프로그램을 이식하겠다고 결정할 때까지는 윈도우 프로그램을 리눅스 자체에서 있는 그대로 돌릴 수는 없을 것이다.[리눅스]그렇다 해도 몽땅 다 못하는 건 아니다. 오픈소스 소프트웨어 형태로 된 리눅스용 프로그램은 1만 5000개가 넘는다. 이런 프로그램들은 보통 무료로 쓸 수 있어서 품질도 천차만별이지만, 프로그램 대다수는 잘 만들어졌고 지속적으로 개선되고 있다. 이런 프로그램들은 전용 파일 형식이 아닌 것들을 가져오기(import!)하거나 내보내기(export)할 수 있다. GNUCash는 퀵북 파일을 제대로 읽어 들일 수 있고, 오픈오피스는 MS워드의 *.doc 파일을 읽어 들일 수 있다.[리눅스] GNUCash를 안 좋아한다면 낙심하지 말기 바란다. 무료로 제공되는 유사한 프로그램들이 더 있으며, 점점더 많은 소프트웨어 업체들이 자사의 소프트웨어를 리눅스 버전으로 출시하고 있다.[리눅스]동일한 현상이 하드웨어에도 적용된다. 컴퓨터 상점에서 구매한 보통 하드웨어가 애플 컴퓨터와 동작하는 걸 기대할 수 없는 것처럼, 동일한 문제가 리눅스 머신에서도 있다고 할 수 있다. 대부분의 표준 하드웨어는 완벽하게 동작한다. 하드 드라이브, 램, 플래시 드라이브, 마더보드, 네트워크 카드(NIC), 디지털 카메라는 보통 리눅스에서 거의 문제를 일으키지 않는다.[리눅스] 하지만 새로 나온 최신 하드웨어는 이야기가 좀 다르다. 하드웨어 벤더가 리눅스를 지원하기로 할 때까지는 리눅스 공동체에 참여하는 사람들이 여가 시간을 할애해서 무료 배포용으로 이런 하드웨어를 이용하기 위해 필요한 드라이버를 만들어줘야 한다.[리눅스]하드웨어 회사들은 호환성을 해결하고자 직접 MS와 함께 작업하는 일이 많지만, 리눅스 측에 대해서는 자발적 참여자들이 알아서 리눅스 하드웨어 지원을 해결하도록 내버려두는 경향이 있어 윈도우가 지원하는 것보다는 뒤처질 수밖에 없다. 랩톱은 비표준 하드웨어로 악명이 높다. 랩톱에서 사용하는 특수키를 매핑하는 것 때문에 리눅스에서 고역이 될 수 있다. 그래도 좋은 소식이 있다면, 더 많은 회사들이 리눅스에서 미래를 보고 있기 때문에 소프트웨어처럼 리눅스 하드웨어에 대한 벤더 지원도 더 나은 쪽으로 변화하고 있다는 것이다.[리눅스]리눅스 머신에서 하드웨어와 소프트웨어 사이에 있는 건 커널이다. 커널은 하드웨어와 소프트웨어를 연결해주는 역할을 하며, 업데이트된 커널은 매 몇 주마다 인터넷을 통해 얻을 수 있도록 만들어진다. 현재 가장 최신 버전은 2.6.14이다. 현재 지원되지 않는 하드웨어를 보유하고 있다면 좀더 새로운 커널에서는 구원을 받을 수도 있다. 하지만 커널을 직접 설치한다는 게 항상 쉬운 일은 아니다. 대신 그런 일을 해주는 패키지 관리자가 존재한다.[리눅스]
4. 패키지 관리자 - 프로그램 설치를 쉽게 해주는 소프트웨어[리눅스/Linux]
리눅스에서 프로그램을 설치하는 데에는 여러 가지 방법이 있지만 가장 쉬운 방법은 배포판의 패키지 관리자(PM; Package manager)를 이용하는 것이다. PM을 이용하면 어떤 빠진 파일이라도 의존성을 이용해 설치해주기 때문에 프로그램이 문제없이 동작하게 된다. 배포판 선택은 여러분이 어떤 PM을 좋아하느냐로 귀착되곤 하지만, 무엇이든 간에 대응되는 패키지만 찾아낼 수 있다면 다른 배포판에서도 어떤 리눅스 소프트웨어든 설치될 수 있다.[리눅스]보통 이런 PM들은 프로그램을 담아두는 온라인 저장소를 갖고 있다. 프로그램 저장소를 검색해서 설치를 클릭하는 것만 하면 될 정도로 애플리케이션 설치는 쉽다. 여러분의 패키지 관리자에서 IceWM이나 Mplayer를 찾을 수 없는가? 찾고 있는 패키지를 담고 있는 온라인 저장소를 새롭게 추가하는 방법을 쓸 수도 있다.[리눅스] 몇 가지 패키지 관리자의 예를 들어보면, 데비안(Debian)과 그 변종들에서 사용되는 dpkg 및 Apt에 기반한 시냅틱(Synaptic), 레드햇과 변종들에서 이용되는 윰(Yum), 수세와 변종들에서 사용되는 YaST2, 젠투(Gentoo)에서 이용하는 이머즈(Emerge)가 있다.[리눅스]
5. 권한[리눅스/Linux]
리눅스는 다중 사용자를 지원하도록 설계됐고, 사용자는 그룹으로 나눠진다. 모든 사용자들은 자신이 소유한 파일에 대해 읽기, 쓰기, 실행(R/W/X) 권한을 가지며 해당 권한을 변경할 권한도 갖는다. 리눅스는 다중 사용자용으로 설계됐기 때문에 사용자들은 각자 암호를 가지며 자기 소유 파일에 대한 접근을 제한할 수도 있다. 이를 사용자 권한(User Permission)이라 부른다.[리눅스]각 사용자는 하나 이상의 그룹에 소속되고, 사용자는 자신의 파일/폴더 권한을 설정할 수 있어 그룹 내 다른 사용자들이 파일을 읽을 수는 있지만 쓸 수는 없게 하거나 R/W/X를 서로 서로 조합해서 설정할 수도 있다. 이런 걸 그룹 권한이라고 한다. 예를 들어 조와 수잔은 회계 부서에 근무한다고 하자. 이들은 회계 부서(Accounting) 사람들이 서로 파일에 접근할 수 있도록 허가할 수 있지만, 영업 쪽 사람들의 접근은 제한할 수도 있다.[리눅스]이외의 사용자에 대한 권한으로서, 그룹에 속하지 않은 사람들에게 해당 파일에 대한 접근을 허용하거나 거부할 수 있다. 이 권한은 시스템 전반의 안전을 위한 것일뿐 아니라 각 사용자의 데이터의 안전을 위해서도 존재한다. 집에서 리눅스를 쓰는 대부분의 사용자들은 파일에 기본 권한을 써도 무방하다. (그림 B 참조)[리눅스]루트(root. 파일 시스템의 루트(/)와 혼동하지 말라) 사용자는 윈도우의 관리자 계정(Administrator)과 비교할 수 있고, 모든 파일에 대해 권한을 가지며 시스템 전체에 미치는 설정을 수정할 수 있는 유일한 사용자이다. 루트 사용자는 시스템 관리를 위해 사용되는 자체 암호를 갖는다. 이러한 차이점으로 일반 사용자들이 시스템에 유해한 스파이웨어를 설치하거나 중요 파일을 삭제할 수 없도록 한다.[리눅스]
6. 홈 디렉토리[리눅스/Linux]
윈도우에는 '내 문서(My documents)'라는 데가 있지만, 문서가 아닌 파일은 어디에 두겠는가? 보통은 윈도우 바탕 화면에 둔다! 리눅스에서도 데스크톱을 난잡하게 만들 수 있는 건 마찬가지지만, 사용자들은 각자 홈 디렉토리를 갖게 되며 보통 /home/user에 위치한다(user는 사용자 계정 이름). 이런 홈 디렉토리 내에서 문서를 놔둘 수도 있고(/home/user/documents), 프로그램 링크를 둘 수도 있으며, 음악(/home/user/Music) 등 원하는 건 뭐든지 놔둘 수 있다.[리눅스] 홈 디렉토리에는 파일과 폴더를 생성할 수 있고, 원하는 만큼 정리하고 다시 또 어질러놓을 수도 있다. 마치 우리가 집안에서 하는 것처럼 말이다. 권한이 어떻게 설정되었는지에 따라 홈 디렉토리에 있는 파일에 대해 다른 사용자가 접근할 수 있게 허락할 수도 혹은 금지할 수도 있다. (루트 사용자만은 예외다).[리눅스]
7. 기본 설치 차이점[리눅스/Linux]
리눅스 배포판 간에는 차이점이 약간씩 있어서, 파일들이 위치하는 곳이라든가 기본 프로그램들의 이름이 다른 경우가 있다. 레드햇과 수세는 파일 시스템이 약간 다르다는 걸 알아두고 시작하는 게 좋겠다. 대부분 사용자들은 그런 차이점이 뭔지 알 필요는 없지만, 내부 파일 시스템이 약간 다를 수 있다는 것 정도는 알아둬야 한다. 누군가에게 도움을 요청할 때 여러분이 사용하는 배포판이 뭔지 확실히 알려줄 수 있도록 해라. 시스템에 문제가 없거나 눈에 보이지 않는 복잡한 작업을 설정하는 것에 관심이 없다면 이에 대해 지나치게 신경쓰지 않아도 된다.[리눅스]
8. CLI[리눅스/Linux]
윈도우의 ‘시작(Start)/ 버튼과 유사한 리눅스 GUI 상의 버튼을 누르면 메뉴가 나타나는데, 이 메뉴에서 xterm 프로그램(보통 콘솔(Console)이라 부른다)을 실행시키면 터미널(Terminal)이라는 게 나타난다. 도스창과 약간 닮았지만 사실 도스보다 오래되었고 도스의 기능을 능가한다. 이는 명령줄 인터페이스(CLI; Command Line Interface)이며, 우리가 좋아하는 OS의 기원으로서 모든 리눅스 배포판에 존재한다. 책 한 권 쓸 정도의 분량이어서 자세히 들어가진 않겠지만, CLI는 컴퓨터의 문제점을 해결하곤 할 때 필요한 강력한 도구이다. 인터넷에서 누군가에게 도움을 요청했을 때 lspci를 실행시켜 보라고 했다면 xterm을 시작해서 lspci라고 입력하고 엔터키를 눌러야 한다. 그러면 화면에 뭔가 나타날 것이다.[리눅스]xterm을 시작하면 제한된 권한을 갖고 있는 일반 사용자 상태이다. xterm에서 루트 사용자 모드(앞서 이야기한 권한을 보라)로 가려면 su [엔터]를 입력하고, 그리고 나서 루트 암호 [엔터]를 입력한다. 그러면 막강한 권한을 가진 루트가 된다. 루트 사용자는 리눅스가 돌아가는 데 필요한 시스템 파일을 포함해서 어떤 사용자의 데이터도 파괴할 수 있다. xterm을 끝내거나 su 모드에서 떠나려면 exit [엔터]를 입력한다.[리눅스]
9. 컨트롤(ctrl)-알트(alt)-이스케이프(escape)[리눅스/Linux]
컨트롤-알트-이스케이프키를 함께 누르면 마우스가 해골과 두 개의 뼈를 교차시킨 불길한 형상을 한 X 모양으로 바뀐다. 이 모드에서 오동작하거나 먹통인 애플리케이션 위에 놓고 클릭하면 해당 프로그램을 종료시킬 수 있다. 윈도우 작업 관리자(Task Manager)에서 프로세스 종료(End Process)와 유사하지만 조심해서 쓰기 바란다. 만약 키를 누르긴 했는데 아무 것도 종료시키고 싶지 않다면, 되돌아가기 위해 Esc 키를 사용하기 바란다. 엉뚱한 프로그램에다가 클릭하면(데스크톱 GUI 포함) 꽤나 골치 아픈 일이 벌어질 수 있다.[리눅스]
기본개념은 Alt-tab을 지원하는 Vnc client인 x2vnc와
다른 vnc클라이언트들을 shared 옵션을 이용하여 동시에 사용하는 것입니다.
vncviewer와 krdc 모두 동작하는 것을 확인했습니다.
zirize@zirize ~ $ vncviewer -fullcolor remotehost:1 -shared -ViewOnly & zirize@zirize ~ $ x2vnc -north remotehost:1 -shared &
여기서 remotehost는 원격으로 접속할 호스트명입니다.
중요한 것은 양쪽다 -shared 옵션 붙여 주는 것입니다.
vncviewer를 ViewOnly로 동작시키는 이유는 헷갈리는 것을 피하기 위함입니다.
vncviewer와 x2vnc를 모두 접속했으면,
vncviewer창 위가 아니라 화면 위로 커서가 넘어가면,
vncviewer 내부의 커서가 움직이는 것을 볼 수 있습니다.
alt-tab을 지긋이 눌러 보면,
vncviewer 내부에서 alt-tab이 동작하는 것을 확인할 수 있습니다.
man x2vnc 를 참조하면,
-hotkey 옵션이 있습니다.
화면 밖으로 마우스를 이동하지 않고, 조작하는 원격/로컬 호스트를 단축키로 전환할 수 있습니다.
기본 키는 ctrl+F12 입니다. ctrl+F12를 누르면 원격과 로컬을 자유로이 전환할 수 있습니다.
리눅스용 x2vnc는 데스크탑환경에서 지원하는 거의 대부분의 단축키들이 무시되기 때문에
alt-tab이 아닌 다른 키(ex alt+ctrl+화살표)등도 모두 사용이 가능합니다.
하지만, ctrl+alt+backspace 같은 것은 안됩니다. -_-;;
아래와 같이 쉘스크립트로 묶어서 사용해도 좋을 듯 합니다.
zirize@zirize ~ $ cat bin/xvnc.sh #/bin/sh #ex) xvnc.sh remotehost [Vncviewer Options] /usr/bin/vncviewer -shared -ViewOnly "$@" & /usr/bin/x2vnc -north remotehost:1 -shared "$1" &
페도라 설치후 mysql이 원격으로 접속이 안될때
페도라(리눅스) 설치 후 mysql-front를 이용하여 접속하고자 할때 안되는 경우
설치시에 방화벽과 관련된 설정이 나오는 데 이때 HTTP,FTP,TELNET... 등 몇가지 포트를 열어놓겠다는 메뉴가 나옵니다. 이때 mysql과 관련된 항목은 없습니다. 따라서 설치가 끝난 후에 mysql이 사용하는 포트를 열어주어야 하는데 그 내용은 다음과 같습니다.
/etc/sysconfig/iptables의 내용을 살펴보면
# Firewall configuration written by redhat-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT <---------------추가
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
이러한 내용이 나오는데 이중에서 밑에서 세번째을 보시면 3306 포트에 대해서 외부의 접속을 허용한다는 내용이 있습니다. 이 부분을 추가하고 나서 mysql을 재시작 해야 합니다.
그 외에도 각 서비스에 사용하는 포트번호에 대하여 접속을 허용하는 문구를 볼 수 있습니다.
cgi 세팅 - httpd.conf
일단 httpd.conf 파일을 열어서
# AddHandler cgi-script .cgi
부분을 찾아 주석을 해제해줍니다.
그다음에
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
이부분을 찾아보세요.. 바로및에 위와같은 형식으로 cgi를 허용해주고 싶은
디렉토리를 설정해주면 됩니다. 예를들어 /home 디렉토리이하에 cgi를 허용해주고 싶으면
<Directory /home>
Options Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
이렇게 해주면 됩니다
그다음 서버를 재가동하고 해당 페이지를 보세요 정상적으로 작동할겁니다.
단 파일의 확장자는 .cgi 로 끝나야하고 퍼미션은 755 로 되어있어야합니다.
리눅스 서버를 운여하다 보면 서버내의 Traffic을 실시간으로 보고 싶을때가 있습니다. 이때 간단하게 ssh 에서 모니터링 할 수 있는 iftop을 소개합니다.
# 설치 OS
설치 OS는 SuperTuxs 5.0 혹 CentOS 5.0 에 기준하여 아래 내용을 참고 바랍니다. 다른 배포판의 경우 의존성등 기타 별도 설치가 필요 할 수 있습니다.
# 다운받기
ssh로 접속후에 첨부 파일을 /root 로 올립니다.
# 설치하기
- 아래처럼 실행하여 설치를 합니다.
[root@mbkang ~]# rpm -Uvh iftop-0.17-1.el5.rf.i386.rpm
warning: iftop-0.17-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing... ########################################### [100%]
1:iftop ########################################### [100%]
[root@mbkang ~]#
- 다음에 ssh 로 로그인하여 아래처럼 하여 모니터링 합니다.
[root@mbkang ~]# iftop -p -B -P
# 모티터링 화면 (예)
그러면 아래그림과 같은 내용이 보입니다. 실시간으로 보여줍니다.
└──────────────┴───────────────┴───────────────┴───────────────┴───────────────
mbkang.hostsmb.com:pop3 => 218.55.101.14:62131 0B 2.51KB 642B
<= 0B 100B 25B
mbkang.hostsmb.com:http => 218.55.101.14:62129 0B 2.03KB 520B
<= 0B 144B 36B
mbkang.hostsmb.com:http => 218.55.101.14:62124 0B 1.77KB 453B
<= 0B 138B 34B
mbkang.hostsmb.com:http => 218.55.101.14:62128 0B 72B 18B
<= 0B 427B 107B
mbkang.hostsmb.com:ssh => 218.55.101.14:62068 502B 347B 250B
<= 20B 20B 23B
mbkang.hostsm:filenet-tms => ns3.apnic.net:domain 0B 8B 2B
<= 0B 18B 5B
mbkang.hostsm:filenet-tms => ns6.cninet.co.kr:domain 0B 8B 4B
<= 0B 15B 7B
mbkang.hostsmb.com:domain => cns101.hananet.net:39581 0B 16B 4B
<= 0B 7B 2B
mbkang.hostsm:filenet-tms => ins1.hananet.net:domain 0B 8B 2B
<= 0B 15B 4B
mbkang.hostsm:filenet-tms => 218.38.181.90:domain 0B 8B 2B
<= 0B 13B 3B
mbkang.hostsmb.com:ftp => 211.239.136.1:2208 0B 8B 3B
<= 0B 9B 4B
210.109.103.25:netbios-ns => 210.109.103.18:netbios-ns 0B 0B 0B
<= 0B 8B 2B
───────────────────────────────────────────────────────────────────────────────
TX: cumm: 161KB peak: 23.3KB rates: 502B 6.77KB 3.60KB
RX: 97.3KB 38.0KB 20B 913B 2.19KB
TOTAL: 258KB 61.3KB 522B 7.66KB 5.79KB
ftp passive 설정법입니다
#모듈을 내리고
rmmod ip_conntrack_ftp
#설정값을 넣어서 다시 올림
/sbin/modprobe ip_conntrack_ftp ports=포트번호,포트번호...
#재부팅시 올라오게 brigefirewall에 수정
vi /etc/rc.d/init.d/bridgefirewall
/sbin/modprobe ip_conntrack_ftp ports=포트번호,포트번호... #라인 수정
포트 볼려면 /sys/modules/ip_conntrack_ftp/parametter/ports
보통 기본설치만 한 상태면 localhost로만 접속이 가능하도록 설정이 되어있는데, 외부에서 접속이 가능하도록 설정을 바꿔보자.
여기서는 root계정을 예로 들어 설명한다.
Query OK, 0 rows affected (0.00 sec)
여기까지 간단한 과정을 통해서 mysql외부접속이 가능해진다.
[root@soma]# /usr/local/apache/bin/httpd -l |
// 모든 DB 접속권한 부여 및 root 권한 부여, mk라는 유저는 localhost 에서만 접속가능 (내부접속)
mysql> flush privileges; //권한로드
: mk계정이 특정한 곳에서만 접속 가능하게 하려면 mk@localhost 부분을 mk@'ip주소' 로 바꿔주면 됨
: mk계정이 특정 DB에 접속을 하며(보이며) 해당 DB에'만' root 권한(모든 명령어) 을 줄때는 *.* 부분을 DB명.* 로바꿔주면 됨
: mk계정에 특정 명령어(권한)만 사용하게 할때는 ALL PRIVILEGES 부분을 바꿔주면 됨
ex) GRANT select, insert, delete, update ~~.... (select, insert, delete, update 만 실행 할 수 있음)
* GRANT 명령어가 아닌 mysql DB의 user테이블과 db 테이블을 이용하는 방법도 있지만 번거로우므로 패스..
2. 계정 패스워드 변경
mysql> show databases; //모든 db 목록 출력
mysql> use mysql; //mysql 이라는 db를 사용
mysql> show tables; // mysql DB의 모든 table 목록을 출력
mysql> show columns from user; // user 테이블의 구조를 살펴본다. desc user 로 해도 됨
mysql> UPDATE user SET password = password('변경패스워드') WHERE user = '계정';
// 매치된 row 가 있는지, 변경된게 몇개인지에 대한 결과가 나온다. 모든 결과가 0이라면 제대로 적용되지 않은것. 특정 계정만 바꾸려고 했으니 당연히 1이라는 결과값이 나와야 한다.
/* Result Example
Query OK, 1 row affected (0.02 sec)
일치하는 Rows : 1개 변경됨 : 1개 경고 : 0개
*/
mysql> flush privileges;
// mysql DB 선택후 바로 UPDATE 명령어를 내리면 된다. 여타 명령어는 DB를 확인하며 찾아가는 과정임..
3. 계정 삭제
mysql> use mysql;
mysql> drop user 계정명;
// 관련 DB 정보 삭제
checking "LinuxThreads"... "Not found"
configure: error: This is a linux system and Linuxthreads was not
found.On linux Linuxthreads should be used. Please install Linuxthreads
(or a new glibc) and try again. See the Installation chapter in the
echo '/* Linuxthreads */' >> /usr/include/pthread.h
로그가 많이 쌓이지 않을 때도 있을 수 있습니다.
logrotate 를 사용하세요.
logrotate 를 사용하면 지정한 용량보다 로그 화일의 크기가 커질 경우에만
새로운 로그 파일을 생성하고 지정한 용량까지 찬 화일은 따로 보관 합니다.
아래 내용을 /etc/logrotate.conf 에 넣어두면
/usr/local/apache/logs/access_log 이 100MB 가 넘을 때마다
access_log.0
access_log.1
순서로 로그 화일을 백업하도록 설정할 수 있습니다.
아래에 rotate 가 3으로 지정되어 있기 때문에
로그 파일이 3개가 넘으면 가장 오래된 파일은 새로운 로그 화일이 생성될 때마다 자동으로 지워집니다.
/usr/local/apache/logs/access_log {
rotate 3
size=100M
sharedscripts
postrotate
/bin/kill -hup `cat /usr/local/apache/logs/httpd.pid`
endscript
}
/etc/logrotate.conf 에 설정된 내용을 실행하는 명령은
/usr/sbin/logroate /etc/logrotate.conf 입니다.
위 내용은 /etc/cron.daily , /etc/cron.monthly 등등의 디렉토리 속에있는
logrotate 파일 속에 들어있습니다. 확인해 보세요.
위 /etc/cron.daily/logrotate 를 /etc/cron.hourly/ 에 넣어두면
한 시간 마다 /usr/local/apache/logs/access_log 가 100MB 가 넘었는지 체크해서 넘었을 경우에 로그화일을 rotate시킵니다.
conf 화일의 내용 중
/bin/kill -hup httpd프로세스아이디 부분은 로그 화일이 변경될 때 꼭 해 주어야 합니다.
만약 위 부분이 없을 경우 아파치 서버에 이상이 생길 수 있습니다.
특히나 꾸벅 꾸벅 졸면서 새벽작업할때.. 캄캄합니다. IDC까지 그새벽에 가야하고..
쉘스크립트 입니다.
cat newrm.sh
#!/bin/sh
# newrm - a replacement for the existing rm command that allows a
# rudimentary unremove capability through utilizing a newly created
# directory in the user's home directory. It can handle directories
# of content as well as individual files, and if the user specifies
# the -f flag, files are NOT archived, but removed.
# rewrm 에서 -f를 붙이면 휴지통으로 버리지않고 완전 제거한다는...
# Big Important Warning: you'll want a cron job or similar to keep the
# individual trash directories tamed, otherwise nothing will ever
# actually be deleted on the system and you'll run out of disk space!
mydir="$HOME/.deleted-files" # 지워진 파일이 저장되는 곳
realrm="/bin/rm " # rm파일위치
copy="/bin/cp -R" # 복사(휴지통으로 넣기)위한 cp 명령 경로
if [ $# -eq 0 ] ; then # let 'rm' ouptut the usage error
exec $realrm # our shell dies and is replaced by /bin/rm
fi
# parse all options looking for '-f'
flags=""
while getopts "dfiPRrvW" opt
do
case $opt in
f ) exec $realrm "$@" ;; # exec lets us exit this script directly.
* ) flags="$flags -$opt" ;; # other flags are for 'rm', not us
esac
done
shift $(( $OPTIND - 1 ))
# make sure that the $mydir exists
if [ ! -d $mydir ] ; then
if [ ! -w $HOME ] ; then
echo "$0 failed: can't create $mydir in $HOME" >&2
exit 1
fi
mkdir $mydir
chmod 700 $mydir # a little bit of privacy, please
fi
for arg
do
newname="$mydir/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")"
if [ -f "$arg" ] ; then
$copy "$arg" "$newname"
elif [ -d "$arg" ] ; then
$copy "$arg" "$newname"
fi
done
exec $realrm $flags "$@" # our shell is replaced by realrm
----------------------------------------------------------------------------------------------------------
본인계정의
.profile에 alias rm='/root/newrm.sh' 추가후
source .profile 리로드
사용 rm 파일명하면 다짜고짜 지워버립니다.
단 본인 HomeDir/.deleted-files 에 보면 지워진 파일이 들어있습니다....
수동으로 꺼내서 이름을 변경하셔도 되구요..
아래의 파을을 이용하면 됩니다. 윈도그로 따지면 휴지통에서 복원정도 명령이겠네요.
cat unrm.sh
#!/bin/sh
# unrm - search the deleted files archive for the specified file. If
# there is more than one match, show a list ordered by timestamp, and
# let the user specify which they want restored.
# Big Important Warning: you'll want a cron job or similar to keep the
# individual trash directories tamed, otherwise nothing will ever
# actually be deleted on the system and you'll run out of disk space!
mydir="$HOME/.deleted-files"
realrm="/bin/rm"
move="/bin/mv"
dest=$(pwd)
if [ ! -d $mydir ] ; then
echo "$0: No deleted files directory: nothing to unrm" >&2 ; exit 1
fi
cd $mydir
if [ $# -eq 0 ] ; then # no args, just show listing
echo "Contents of your deleted files archive (sorted by date):"
# ls -FC | sed -e 's/[[:digit:]][[:digit:]]\.//g' -e 's/^/ /'
ls -FC | sed -e 's/\([[:digit:]][[:digit:]]\.\)\{5\}//g' \
-e 's/^/ /'
exit 0
fi
# Otherwise we must have a pattern to work with. Let's see if the
# user-specified pattern matches more than one file or directory
# in the archive.
matches="$(ls *"$1" 2> /dev/null | wc -l)"
if [ $matches -eq 0 ] ; then
echo "No match for \"$1\" in the deleted file archive." >&2
exit 1
fi
if [ $matches -gt 1 ] ; then
echo "More than one file or directory match in the archive:"
index=1
for name in $(ls -td *"$1")
do
datetime="$(echo $name | cut -c1-14| \
awk -F. '{ print $5"/"$4" at "$3":"$2":"$1 }')"
if [ -d $name ] ; then
size="$(ls $name | wc -l | sed 's/[^0-9]//g')"
echo " $index) $1 (contents = ${size} items, deleted = $datetime)"
else
size="$(ls -sdk1 $name | awk '{print $1}')"
echo " $index) $1 (size = ${size}Kb, deleted = $datetime)"
fi
index=$(( $index + 1))
done
echo ""
echo -n "Which version of $1 do you want to restore ('0' to quit)? [1] : "
read desired
if [ ${desired:=1} -ge $index ] ; then
echo "$0: Restore cancelled by user: index value too big." >&2
exit 1
fi
if [ $desired -lt 1 ] ; then
echo "$0: restore cancelled by user." >&2 ; exit 1
fi
restore="$(ls -td1 *"$1" | sed -n "${desired}p")"
if [ -e "$dest/$1" ] ; then
echo "\"$1\" already exists in this directory. Cannot overwrite." >&2
exit 1
fi
echo -n "Restoring file \"$1\" ..."
$move "$restore" "$dest/$1"
echo "done."
echo -n "Delete the additional copies of this file? [y] "
read answer
if [ ${answer:=y} = "y" ] ; then
$realrm -rf *"$1"
echo "deleted."
else
echo "additional copies retained."
fi
else
if [ -e "$dest/$1" ] ; then
echo "\"$1\" already exists in this directory. Cannot overwrite." >&2
exit 1
fi
restore="$(ls -d *"$1")"
echo -n "Restoring file \"$1\" ... "
$move "$restore" "$dest/$1"
echo "done."
fi
exit 0
휴지통에서 복구하기..
unrm.sh 복구할 파일명하면 됩니다.
꼭 필요하던건데.. 이번에 책을 보면서 알게되어 저자의 사이트에서 퍼와서 테스트후
작성합니다.
책명 : 셸 스크립트 101가지 예제로 정복하는 - 에이콘출판사
광고라고 혹시 하실분 계실까 몰라서 인데 제가 22,500원주고 모 사이트에서 사서 본책입니다.
원저자는 외국인 인듯합니다.
그럼 머리가 캄캄해 지지 않도록 노력해 봅시다.
sendmail 사용시 전자우편만 사용할수 있는 계정추가 하기
(php 내장 mail()함수 사용 때문에)
[COLOR="Navy"]# useradd userid -M -s /bin/false[/COLOR]
-M = 홈디렉토리를 만들지 않는다
-s = 셀지정 한다
/bin/false = 실제로는 존재하지않는 셀 설정 방법
비밀번호를 설정 한다.
#passwd userid :
다음과 같이 설정 하면 메일이외의 계정은 사용할수 가 없다.
메일은 아웃룩과 같은 메일 클라이언트로 받아볼수가 있다.
1. yum ?
yum은 rpm기반 시스템에서 자동으로 패키지를 업데이트, 설치, 삭제를 해주는 유틸리티입니다.
업데이트는 알려진 문제를 해결하고 알려진 보안 위협으로부터 서버를 보호하는 데 도움을 줍니다.
rpm의 의존성 문제를 자동적으로 처리하여 쉽게 패키지를 유지 관리할 수 있습니다.
또한 쉽게 레드햇의 release도 변경할 수 있습니다. fedora project에는 기본적으로 내장되어 있습니다 :)
현재 레드햇은 updates.redhat.com등에서 RHEL과 Fedora Project를 제외하고 RedHat의 모든 버전의 업데이트가 중지되고 있습니다. (RedHat 7.3은 2003년 12월 말부터, RedHat 9는 2004년 4월부로 공식지원이 중단됨)
RHN은 회원가입의 번거로움과 기능의 단순함, 막대한 비용에 대한 부담으로 실증을 느끼셨다면 yum을 이용해 보시기 바랍니다.
스마일서브에서는 Redhat 7.3, 9.0, Fedora Core1을 공식 지원하고 있습니다.
1-1. 설치전 확인 사항
# cat /etc/redhat-release
에서 자신의 release에 맞는 yum을 설치한다.
다운로드 사이트는 smileserv.com yum repository 서버를 이용하시기 바랍니다.
http://mirror.smileserv.com/yum_binary/
1-2. 설치
http://mirror.smileserv.com/yum_binary/ 에서 자신의 redhat-release와 맞은 디렉토리에서 다운로드한 yum rpm을 설치합니다.
# rpm -Uhv yum*.rpm
1-3. 기본 사용법
최신 패키지로 업데이트
# yum update
패키지 설치
# yum install 패키지명
패키지 업데이트
# yum update 패키지명
패키지 삭제
# yum remove 패키지명
패키지 검색
# yum search 패키지명
1-4. yum을 이용한 레드햇 release upgrade
ftp://ftp.quicknet.nl/pub/Linux/ftp.redhat.com/
에서 업그레이드 하고 싶은 버전의 redhat-release***.rpm을 받아서 설치
# yum upgrade
2. 실제 적용방법
[root@mirror root]# cat /etc/redhat-release
Red Hat Linux release 7.3 (Valhalla)
현재 시스템에는 RedHat Linux 7.3이 설치되어 있다.
RedHat Linux 7.3을 위한 yum rpm 패키지를 다운로드 받아 설치한다.
[root@mirror root]# wget http://mirror.smileserv.com/yum_binary/redhat7.3/yum-1.0.3-6.0.7.x.legacy.noarch.rpm
[root@mirror root]# rpm -Uhv yum-1.0.3-6.0.7.x.legacy.noarch.rpm
yum repository가 smileserv.com 인지 체크한다.
[root@mirror root]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
#exactarch=1
#exclude=kernel*
[base]
name=Red Hat Linux 7.3 base
baseurl=http://mirror.smileserv.com/redhat/7.3/os/i386/
[updates]
name=Red Hat Linux 7.3 updates
baseurl=http://mirror.smileserv.com/redhat/7.3/updates/i386/
yum rpm 패키지가 정상적으로 설치됐음이 확인되었습니다.
* fedora core 1(x86 32bit) 이용 고객님께서는 아래 URL에서 yum 을 받아 설치하세요.
http://mirror.smileserv.com/yum_binary/fedora_Core1/
설치된 모든 패키지에 대한 업데이트를 시작합니다.
[root@mirror root]# yum update
이후 hdr 파일을 다운로드 후 현재 시스템에 설치된 rpm 패키지와 버전 체크를 한 후 업데이트가 필요한 패키지 리스트가 출력됩니다. 업데이트를 위해서는 y 를 입력하시면 됩니다.
열거된 rpm 리스트에 따라서 rpm을 다운로드 합니다. 이 후 다운로드된 rpm이 설치되며 업데이트 후에는 리부팅을 하시면 시스템에 적용됩니다.
ntsysv에 yum을 check on 해두면 자동으로 시스템의 패키지들이 업데이트됩니다. 업데이트된 리스트는 /var/log/yum.log 에 남습니다.
안타깝게도 fedoralegacy.org에서는 더 이상 redhat 7.2, redhat 8.0에 대한 지원은 중단되었습니다.
리눅스 부팅시에 콘솔모드 또는 X윈도우모드로 부팅을 하고 싶다면 여러분은.. 어떻게 하시는지요.
/etc/inittab에서 제어를 하실수 있습니다.
만약 5번모드로 (즉 X윈도우로 부팅한다면) 부팅을 원한다면
vi /etc/inittab 로 파일을 열고
아래의 파일 부분을 변경해주시면 됩니다.
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault: <-- 이부분의 숫자를 변경해주시면 됩니다. (현재는 콘솔모드입니다.)
ex) id:5:initdefault:
위와 같이 하시면 X윈도우로 부팅이 됩니다.
주요기능
① 계정(SSH/Telnet) 암호 변경
② 계정(HDD) 사용량 조회
③ 계정(HDD) 백업
④ 데이타베이스(MySQL) 암호변경
⑤ 데이타베이스(MySQL) 백업
⑥ 데이타베이스(MySQL) 복구
⑦ 데이타베이스(MySQL) 초기화
⑧ 알지보드설치
⑨ 제로보드설치
태터툴즈 자동설치 기능도 넣었지만 허락을 받지 못해 일단 메뉴에서만 제외 되어 있습니다.
제로보드도 문제가 될지....
보시고 많은 조언 부탁 드립니다.
파일은 위 링크에 있습니다.