리눅스 파일시스템 check 및 수정/복구 관련 명령어


1. dumpe2fs : 파일시스템의 슈퍼블럭과 블럭그룹정보를 출력 

2. tune2fs : 파일시스템의 정보 확인 및 tunning

3. fsck : 파일 시스템 점검 및 복구

Maximum mount count / Check interval 항목이 유용하게 쓰임

tune2fs -c -1 /dev/xvdb1 : Maximum mount count 수를 -1 수정하여 자동으로 filesystem check가 되지 않도록 수정

tune2fs -i 0 /dev/xvdb1 : Check interval 기간을 0 으로 설정하여 마찬가지로 자동으로 filesystem check가 되지 않도록 수정

[root@localhost]$dumpe2fs /dev/xvdb1

dumpe2fs 1.41.12 (17-May-2010)

Filesystem volume name:   <none>

Last mounted on:          <not available>

Filesystem UUID:          09519598-5f70-4f75-9a1a-606ac27a9406

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file

Filesystem flags:         signed_directory_hash 

Default mount options:    (none)

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              66384

Block count:              265064

Reserved block count:     13253

Free blocks:              252360

Free inodes:              66372

First block:              0

Block size:               4096

Fragment size:            4096

Reserved GDT blocks:      64

Blocks per group:         32768

Fragments per group:      32768

Inodes per group:         7376

Inode blocks per group:   461

Filesystem created:       Thu Feb 27 09:36:48 2014

Last mount time:          Thu Feb 27 09:38:59 2014

Last write time:          Thu Feb 27 09:38:59 2014

Mount count:              3

Maximum mount count:      26

Last checked:             Thu Feb 27 09:36:48 2014

Check interval:           15552000 (6 months)

Next check after:         Tue Aug 26 09:36:48 2014

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

First inode:              11

Inode size:          256

Required extra isize:     28

Desired extra isize:      28

Journal inode:            12

Default directory hash:   half_md4

Directory Hash Seed:      78b5adbc-9064-4627-ab0e-366cca41ad87

Journal features:         (none)

Journal size:             32M

Journal length:           8192

Journal sequence:         0x00000001

Journal start:            0




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

[Linux] 리눅스 bonding mode  (0) 2014.03.06
[Linux] dmsetup 와 dm-x 장치  (0) 2014.02.27
[Linux] yum repository 구성하기  (0) 2014.02.07
SSH 활용 sshpass  (0) 2014.02.06
[Linux] 파일입출력 정리 3 sed, awk  (0) 2014.01.24
Posted by 뭉탁거림
,

Yum repository 서버를 구성하는 방법

 

1. 구성방법

1) yum server에 계정을 생성 후 Home Directory에 필요한 rpm File을 복사

2) yum server는 Local로 Yum Repository를 구성

3) yum repository의 Client는 Server에 Anonymous FTP를 통해 해당 RPM 파일을 가져오는 구조


2. 작업 절차


(1) group, user 생성

groupadd -g 501 yumFile

useradd -g 501 -u 501 -d /home/yumFile yumFile

chwon root:root /home/yumFile

chmod 755 /home/yumFile

user의 Home Directory의 소유자와 그룹을 변경

(user의 Default 소유자와 그룹으로 두면 아래와 같은 오류가 뜨므로 root/root로 변경합니다.

500 OOPS: vsftpd: refusing to run with writable anonymous root)


(2) rpm File Copy

cd /mnt/Package

cp -r * /home/yumFile

cp -r repodata/ /home/yumfile/

 

필요한 rpm 파일을 yumfile User의 Home Directory로 복사

 

(3) 로컬 Yum Repository 구성

[root@localhost ~]# cd /etc/yum.repos.d/


yum.repos.d 디렉토리에 local.repo 추가

 

local.repo 내용

[local]

name=local

baseurl=file:///home/yumfile

enabled=1

gpgcheck=0

 

/home/yumfile 폴더를 기본 폴더로 설정하며 사용할 수 있도록 설정해 줍니다.

 

yum 초기화

[root@localhost yum.repos.d]# yum clean all

Loaded plugins: rhnplugin, security

Cleaning up Everything

[root@localhost yum.repos.d]# yum list

[root@localhost yum.repos.d]# yum repolist


yum.repos.d 디렉토리에 추가한 repository 목록 나옴



(4) FTP 설정

1) vsftp 설치

yum -y install vsftpd

 

2) chkconfig 수정

vsftpd 데몬 활성화를 위한 chkconfig를 수정

[root@localhost yum.repos.d]# chkconfig vsftpd on

 

3) vsftp configuration 수정

anonymous Ftp가 가능하도록 홈디렉토리를 수정

 

anonymous_enable=YES

ftp_username=yumfile

anonymous_enable : anonymous FTP가 가능 유무 설정

ftp_username : ftp가 사용할 default user를 설정합니다.

                      (Anonymous 붙을때 Default 사양하는 유저를 의미합니다.)

 

vsftpd 서비스를 기동합니다.

[root@localhost yum.repos.d]# service vsftpd start

vsftpd에 대한 vsftpd을 시작 중:                            [  OK  ]

 

4) 방화벽 open

/etc/sysconfig/iptables에 20번과 21번의 tcp port를 열어줍니다.

(아래 내용 추가)

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

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

 

방화벽 내용 저장

[root@Linux2 yum.repos.d]# service iptables save

방화벽 규칙을 /etc/sysconfig/iptables에 저장 중:           [  OK  ]

 

방화벽 서비스를 재기동 합니다.

service iptables restart

 

5) Anonymous FTP 연결 테스트

[root@Linux2 var]# ftp 192.168.2.130

Connected to 192.168.2.130.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.2.130:root): anonymous

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

5) Client의 Yum Repository 구성

[ftp]

name=ftp

baseurl=ftp://192.168.2.130

enabled=1

gpgcheck=0

 

c참고 <http://rockball.tistory.com/156>

 

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

[Linux] dmsetup 와 dm-x 장치  (0) 2014.02.27
[Linux] dumpe2fs, tune2fs, fsck  (0) 2014.02.27
SSH 활용 sshpass  (0) 2014.02.06
[Linux] 파일입출력 정리 3 sed, awk  (0) 2014.01.24
[Linux] 파일입출력 정리 2 (sort)  (0) 2014.01.24
Posted by 뭉탁거림
,

ls :파일 및 디렉토리에 대해서 본다.
ls -l : 파일 과 디렉토리를 구별하여 볼수 있다.

파일 정보
-rw-rw-r--      1 trainer1 trainer1      779  9월 24 18:37 start.txt
drwxr-xr-x     2 trainer1 trainer1     1024 9월 24 11:52  tmp

위의것은start.txt에 관한 정보이고, 아랫것은 tmp에 관한 정보입니다.
start.txt를 기준으로 뒷쪽에서부터, “9월 24 11:52”
이 부분은 이 파일이 생성된 날짜를 보여줍니다.

“779”파일 용량
“trainer1 trainer1”은 퍼미션 정보.

앞에 붙어있는 -는 파일 d는 디렉토리의 의미이다.

w:서버에 있는 사람 보기

사람정보

root     tty1     0     login

finger -l : 사람정보보기
tty : 터미널 보기
ifconfig : 아이피 보기

write : 쪽지 보내기
리눅스 폴더 내용

-bin : 이곳에는 가장 필수적인 리눅스 실행 파일들이 들어가 있습니다.
ls,rm 모두 이곳에 들어가 있지요.

-boot: 리눅스 부팅 관련 파일들과, 리눅스의 심장인 커널이란 것이 들어있습니다.
-dev : 이곳은 컴퓨터에 설치된 하드웨어에 관한 정보들이 파일 형태로 저장되어 있는 곳입니다.
-etc : 많은 중요한 파일들이 이곳에 들어가 있습니다. 패스워드 파일, 쉐도우 파일, 그 외 대부분의 리눅스 설정 파일 등등.
-home : 일반 사용자들의 디렉토리가 들어가는 곳 입니다. guest 와 trainer1~10, level1~10모두 이
디렉토리 안에 있다.
-lib : 많은 라이브러리 파일들이 들어가 있습니다.
-mnt : mount 명령을 사용하여, 마운트 시킨 시디롬, 플로피 디스켓등이 들어가는 디렉토리 입니다.
-proc : 프로세스들이 파일 형태로 저장되는 디렉토리.
-root : 일반 사용자의 디렉토리는 /home 아래 존재 하지만, 루트의 홈 디렉토리는 따로 이곳에 저장됩니다.
-sbin : 기본 명령을 제외한 시스템 관리용 실행 파일 들이 들어있는 디렉토리 입니다.
-tmp: 임시로 파일을 저장하는 디렉토리로서, 권한에 상관없이 누구나 이 디렉토리에 파일을 생성할 수 있습니다.
-usr : 다양한 응용 프로그램들이 설치되어있는곳입니다.
-var : 시스템 운영 중에 생성되는 각종 임시 파일들이 들어가 있으며, 외부 접속에 대한 로그파일들이 바로 이곳에 저장이 됩니다.


파일 정보
/etc/passwd : 사용자들에 대한 간단한 정보가 들어있습니다.
/etc/shadow : 사용자들의 패스워드가 들어있습니다. 아무나 보지 못하도록 설정되어 있지요.
/etc/services : 서버가 어떤 어떤 서비스를 하는중인지 보여줍니다.
/etc/issue.net : 처음 접속될 때 나오는 화면입니다. 해커스쿨의 F.T.Z에 오신걸 환영합니다.
라는 문구도 이곳에 들어가 있습니다.
/etc/motd : 로그인 후에 나오는 메세지가 들어가 있습니다.
~/public_html : 각 사용자들의 홈페이지 파일이 들어가 있습니다. 보통 해킹에 성공하면 이 파일을 수정하여, hacked by xxx 라는 문구를 남깁니다.

whoami : 자신의 정보 보기
id : 좀더 자세히 자신의 정보 보기

모든 사용자들의 정보는 /etc/passwd
uname-a : 커널버젼보기
로그아웃, 종료 명령어

로그아웃
exit
logout

시스템 종료
shutdown, halt, init

ex) shutdown -h now
halt
init 0

shutdown :
shutdown -h +15m : 15분 후에 종료(h:halt)
shutdown -r 23:00 : 오후 11시에 재가동(r:reboot)
shutdown -c : 진행중인 shutdown을 취소 (c:cancel)
shutdown -k now: 접속중인 사용자에게 종료 메시지 전송

ctrl + u : 전체 행 삭제
ctrl +-c :  명령중지
ctrl + z : 일시정지

tab키로 시간 단축

같은 디렉토리 또는 파일일경우 탭키 2번

ctrl + T 는 커서 앞의 문자와 와 변경해준다.

비슷한 파일 찾기
inv1jic.c inv2jic.c inv3jic.c invinitjigc.c invpar.c

$ls inv?jig.c 를 하면
inv1jic.c inv2jic.c inv3jic.c

$ls inv[13]jig.c
inv1jig.c inv3jig.c

$ls inv[1-3]jig.c
inv1jic.c inv2jic.c inv3jic.c

알파벳 검색시 [a-zA-Z]라고함
inv와jig사이에 몇개의 문자가 와도 상관없다면
ls inv*jig.c
ls *[0-9]*.[co]


cat /etc/*release : 리눅스 버젼 확인

rpm -qa :정보수집
cat /proc/cpuinfo : cpu정보 보기

root : x : 0 : 0: Admin : /root :/ bin / bash
ID   pw  


tar cvf songs.tar * :파일 합치기
gzip 파일이름 : 파일 압축
gzip -d 파일이름 : 압축 해제

텍스트 파일 생성법

1. 쉘 프롬프트 상태에서,  cat > 파일이름.txt 라고 입력한다.
2. 원하는 내용을 주욱 써내려간다.
3. 컨트롤키와 D키를 동시에 누른다.

소스 넣기

cat > program.c
int main(){
a=10
b=20
printf(“10 + 20 = %d,a+b);}

컴파일 방법 : gcc -0 프로그램이름 소스파일이름
ex) gcc -o program.exe program.c

상대경로 입력
./program.exe

리눅스의 4가지 종류의 사용자

유져 : 이것은 자신을 의미합니다. 만약 제가 mmung2라는 아이디로 로그인을 하면 저는 mmung2라는 유져가 됩니다. 마찬가지로 제가 guta라는 아이디로 로그인을 하면, 저는 guta라는 유져가 되는거지요.

그룹 : 모든 유져는 하나 이상의 그룹에 속하게 됩니다. 임의로 이 그룹을 변경하지 않는 한 모든 유저는 자신의 유저네임과 같은 이름의 그룹에 속하게 됩니다
아더 : 이것은 유져와 그룹을 제외한 모든 다른 사람을 의미합니다.

루트 : 루트는 여러분이 아시다시피 절대적인 권한을 가지고 있는 사용자입니다. 이 루트 권한을 가지고 있는 자는 어떤 권한에도 구애받지 않는 상태로 파일들을 제어할  수 있게 됩니다. 이 절대적인 루트권한을 얻기 위해 이것저것 가리지 않고 하는 일이 바로 해킹

uid=2009(trainer9) gid=2009(trainer9) groups=2009(trainer9)
[trainer9@ftz trainer9]$

uid -> UserID

trainer9을 컴퓨터가 2009라는 숫자로 인식

gid = Group ID
각 유저마다 gid를 가지고 있고 다른 사람을 자신의gid를 가진 그룹에 속하게 할수 있다.
특별한 일이 없는한 gid는  uid와 같다.

groups 는 현재 자신이 속해 있는 그룹을 말해준다.



파일의 권한정보 분석하기
ls -al test1 입력하면

-rwxrwxrwx         1 trainer9        trainer10                   5  10월  20 21:35 test1
                              유저               그룹


rwx rwx rwx   < -- 권한에 관한 정보
유저의 권한, 그룹의 권한, 아더의 권한

Read    Write    eXcute

분석법

-rwxrwxrwx         1 trainer9  trainer10                      5   10월   20   21:35   test1
 3    5    7                  2              4                                                                     1


1. test1 이란 파일을...
2. trainer9 라는 uid를 가진 사용자 에게
3. rwx권한이 있고
4. trainer10 이라는gid를 가진 사용자에게도
5.rwx 권한이 있고l
6. trainer9와 10을 제외한 모든 사람에게도
7. rwx권한이 있다.


Remote 해킹 : 자신이 해킹하고자 하는 서버에 아이디를 가지고 있지 않을 때, 아이디를 얻고자 시도하는것

Local 해킹 : 해킹하고자 하는 서버에 일반 계정을 가지고 있을 때, 관리자 권한(root)를 얻고자 시도하는 것


setUID

그럼 과연 SetUID란 무엇인가
SetUID가 걸린 파일을 조작하여, 관리자 권한을 얻을 수 있다.

그럼 과연 SetUID

Set UID는 자신을 변경하는것

-r-s--x--x           1 root                root                  22312     Sep     26     1999   /usr/bin/passwd*


find / -perm  -4000

해석하면
적어도 SetUID가 걸린 모든 파일을 찾아라 라는 의미

위에서 -은 적어도 라는 의미
-perm 은 권한을 찾겠다 라는 의미
그뒤의 4자가 바로 SetUID를 의미하며, 000은 rwx모두를 의미한다.

find -perm 권한과 일치하는 파일을 찾는다. ex) find / -perm 4755
find -name 이름과 일치하는 파일을 찾는다. ex) find / -name cat
find -user 유져와 일치하는 파일을 찾는다.  ex)find / -user mmung2
find -group 그룹과 일치하는 파일을 찾는다. ex)find / -group guta

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

[리눅스] yum 명령어  (0) 2013.09.27
[리눅스] 기초개념  (0) 2013.09.26
[Linux] SUDO 명령  (0) 2013.09.16
[Linux] RPM, YUM 이란?  (0) 2013.09.13
[Linux] Crontab 트러블 슈팅  (0) 2013.09.11
Posted by 뭉탁거림
,

리눅스 서버에서 원래는 cron 이 정상동작

그런데, chage 명령어를 이용하여 일정 기간이 지나면 비밀번호가 변경되도록 설정한 이후, cron이 동작하지 않을 때

syslog를 보면

May 23 21:17:01 ubuntu CRON[2570]: Authentication token is no longer valid; new one required

authentication token is no longer valid new one required cron

위와 같은 메시지만 출력

- crontab에 사용자별로 script를 실행하도록 하였는데, 해당 사용자의 비밀번호 만료기간이 지난후에 비밀번호를 바꾸지 않은 상태로 있으면 실행이 되지 않는 문제이므로 crontab 유저의 passwd 를 정책에 맞게 재설정 

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

[리눅스] yum 명령어  (0) 2013.09.27
[리눅스] 기초개념  (0) 2013.09.26
[Linux] SUDO 명령  (0) 2013.09.16
[Linux] RPM, YUM 이란?  (0) 2013.09.13
[Linux] CentOS 명령어모음  (0) 2013.09.11
Posted by 뭉탁거림
,