atime : access time : 조회했는지, 일수를 의미한다.
access time + 1 : 하루 지난 일을 찾는다.
amin : access minute
access minute + 1 : 1분 지난 분을 찾는다.
파일을 읽은 시간. 접근한 시간. ( cat 혹은 파일 수정 시 변경됨 )
mtime : modify time
mmin : modify minute : 수정된 시간
파일이 수정된 시간
ctime : change time
cmin : change ,in
파일이 변경된 시간
finduser의 홈 디렉터리에서 모든 파일 중 내용이 'linux'가 들어있는 파일의 내용을 출력합니다.
find finduser/ -type f -exec cat {} \; | grep linux
finduser의 홈 디렉터리에서 'c3210'파일을 찾아 내용 중 대소문자 구별없이 'this'가 들어간 문자열을 찾아 줄의 번호와 내용을 출력합니다.
find finduser/ -name c3210 -exec cat {} \; | grep -in this
/etc/passwd 에서 'user'이라는 문자열이 들어있는 줄을 찾아 홈디렉터리의 'users'라는 파일에 내용을 저장합니다.
grep user /etc/psswd > ~/users
cat ~/users
: 리눅스에서 사용하는 압축파일 확장명은 xz, gz, bz2, zip, Z 등이 존재
- 압축률이 좋은 gz, xz, bz2 를 주로 사용한다.
xz
: 확장명 xz로 압축하거나 푸는 명령어
#xz[옵션][파일명]
'파일명'.xz 로 파일을 압축. 기본 파일은 삭제됨
gzip
: 확장명 gz로 압축하거나 푸는 명령어
#gzip[옵션][파일명]
'파일명'.gz 로 파일을 압축. 기본 파일은 삭제됨
bzip2
: 확장명 bz2로 압축하거나 푸는 명령어
#bzip2[옵션][파일명]
'파일명'.bz2 로 파일을 압축. 기본 파일은 삭제됨
-> xz로 newG 압축
- 648로 압축이 되었다.
-> newG 압축풀기
-> gzip으로 newG 압축
- 어떤 확장명으로 압축을 하느냐에 있어서 용량이 다르다. (590)
zip은 unzip 으로 압축푼다.
: 리눅스에서는 '파일 압축'과 '파일 묶기'를 원칙적으로 별개의 프로그램으로 실행하도록 되어있음.
tar(Tape Archive)
: 확장명 tar로 묶음 파일을 만들거나 묶음을 풀어주는 명령어
#tar [동작+옵션][묶음파일명][파일명]
- c : create
- v : visual v를 쓰지 않으면 하는 과정을 보여주지 않아서 얼만큼 된지 잘 작동을 하고 있는지 모른다. 그래서 사용한다.
-> 파일들을 묶어보자.
tar cvf newTar newG newpw source
- 용량이 10240으로 늘어났는데 어떠한 가방에 다 넣는다라고 생각을 하자. 담은 공간을 만들어야하는것에 대한 용량도 포함이 되기 때문에 용량이 많이 늘어난다.
- newTar 을 홈디렉터리로 이동하자.
-> 홈 디렉터리에서 파일들을 풀자.
- 원하는 디렉터리에서 파일을 풀고싶다면 C(대문자)를 사용하면 된다.
-> 어떤 파일들이 있는지 보여준다. tvf
xvf를 많이 사용한다.
- tmp에서 파일을 묶어주었고
- 압축을 해보았더니 용량이 줄은 것을 확인 할 수 있다.
: 리눅스의 파일 허가권은 읽기(read), 쓰기(wirte), 실행(execute) 3가지가 존재
- 각각 r,w,x로 표시하며, 파일에 소유자, 그룹, 그 외 사용자 3개로 나눠서 각각 허가를 부여함.
- 리눅스에서 디렉터리로 이동하기 위해서는 반드시 실행(x)권한이 있어야 함.
- 파일의 종류를 알기 위해서는 file명령어를 사용한다.(리눅스에서 확장자명은 큰 의미가 없음)
- 2진수로 생각하면 쉽다. 권한이 있으면 1 없으면 0이다.
- 합한 수를 보고 어떤 권한이 있는지 알 수 있다. (6,5,4)
-rw-r--r--
newG와./newG의 차이- 그냥
newG는echo $PATH디렉터리안에있는 파일들을 우선으로 실행시킨다.
./newG현재 파일에 있는 newG를 실행시켜달라는 것이다.
ls -l /
-> tmp는 누구나 쓸 수 있는 디렉터리임으로 tmp으로 이동하자.
- 많은 것 중 newG만 걸러서 보자.
- finduser의 권한은 두번째
r--이고 읽을 수 있는 권한은 있다.
- nano newG로 들어가서 볼 수는 있으나 수정을 하게 되면 오류가 뜬다. n으로 나간다.
- x가 있기 떄문에 이동이 가능하다. w가 없어서 쓰는 건 불가능하다.
chmod
: 파일의 허가권을 변경하는 명령어. root사용자 또는 해당 파일의 소유자만 실행 가능
#chmod[옵션][모드][파일명]
- 777 : r4 w2 x1 -> 7 소유자, 그룹, 그 외 사용자가 읽기, 쓰기, 실행이 다 가능하다는 말이다.
- newpw의 other사용자에게 실행권한을 주겠다.
- 권한을 뺏는다. 명시적으로도 사용이 가능하다. 눈에 보이기 때문에 쓰기가 더 쉽다.
- 766 newG : 권한을 준다.
- 글 수정이 가능한 것을 확인 할 수 있다.
chown
: 파일의 소유권을 변경하는 명령어(사용자+그룹)
#chown [사용자명](.그룹명)[파일명]
chgrp
: 파일의 소유권을 변경하는 명령어(그룹만)
#chgrp [그룹명][파일명]
umask
- 파일/디렉터리 생성 시 부여되는 기본 권한을 지정하는 명령어
- 파일 생성 시에는 666, 디렉터리에는 777에서 설정한 umask값을 뺀 값을 기본 허가권으로 지정. (=파일이나 디렉터리의 권한이 된다.)
#umask #umask-S #umask[8진수 3글자]
- UID : userId
- GID : groupId
- newpw의 소유권자를 finduser로 변경하였다.
- less /etc/group을 해보았을 때 1번에 deamon이라서 그것으로 변경이 되었음.
디렉터리 : 777 - 022 = 755
파일 : 666 - 022 = 644 가 기본이다.
- umask-S : 현재 설정된 umask값이 나온다.
umask 755로 설정 후 파일을 만드니-----w--w-으로 만들어지는 것을 확인할 수 있다.
- default 값인 022로 돌아간 후 newFile을 만들어 보니 -rw-r--r-- 로 만들어진다.
: 파일 허가권에서 8진수 3자리가 아닌, 8진수 4자리로 표시하는 방법
- 파일의 소유권을 빌려와서 사용할 수 있는 권한을 의미한다.
SetUID
- 8진수 네 자리 중 첫번째 값을 2진수 100인 4로 표현하는 것.
- 파일 실행 시 소유자의 권한을 얻어와서 사용할 수 있게 됨(파일 실행이 끝날 때까지 UID를 빌려옴)
- 파일을 SetUID 설정 시 소유자의 파일 허가권이 rwx가 아닌 rws 로 표시됨
- 대표적인 예 : 사용자의 패스워드를 변경하는 /bin/passwd
#chmod u+s [파일명]명령어로 설정 가능
- 빨간색으로 되어있는것이 SetUID설정이 되어있는 것이다.
- 소유권자를 얻는 파일임으로 안전한 파일은 아니다. 이런 파일들이 많으면 해킹당할 위험이 크기 때문에 위험하다.
- 실행파일이 아니기 때문에 실행파일로 바꿔보자.
파일을 실행파일로 만들면 명령을 실행할 수 있다.
현재 만들어진 유저 정보를 볼 수 있다. (./userFile)
- finduser에서는 안된다.
- root의 소유권을 얻어 루트로 실행한다.(-rws 로 바꼈다.)
=> 이게 SetUID
UID는 2가지 종류가 있다.
: 로그인 당시 ID , 파일을 실행한 사용자.
: 프로세스가 동작하는 동안 부여되는 ID, SetId가 설정되어있으면 해당 소유자의 ID로 변한다.
- 다른 파일에 대한 접근권한을 부여한다.(rwx)
SetGID
- 8진수 네 자리 중 첫번째 값을 2진수 010인 2로 표현하는 것.
- 파일 실행 시 소유그룹의 권한을 얻어와서 사용할 수 있게 됨(파일 실행이 끝날 때까지 GID를 빌려옴)
- 파일을 SetGID 설정 시 소유 그룹의 파일 허가권이 rwx가 아닌 rws 로 표시됨
- 대표적인 예 : 모든 유저에게 메세지를 보내는 /usr/bin/wall
#chmod g+s[파일명]명령어올 설정 가능
- 이 파일(userFile) 실행할 떄 그룹의 권한을 얻는다.
=> 이게 SetGID
Stiky bit
- 8진수 네 자리 중 첫번째 값을 2진수 001인 1로 표현하는 것.
- 특정 디렉터리를 누구나 자유롭게 사용할 수 있도록 권한을 부여함.
- 파일 및 디렉터리 생성은 가능하지만, 삭제는 생성한 유저와 디렉터리 소유자만 가능.
- 여러 사람이 공유할 디렉터리에 주로 설정되어 업무상 공유할 내용들을 업로드하는 목적으로 사용됨.
- Group과 other 계층 사용자에세 사용가능하며 동시에 두 계층에게 부여하는 것은 불가능
- 설정하면 other 사용자의 파일 실행 허가권이 t로 표시됨
- 대표적인 예 : 임시파일들이 저장되는 /tmp
#chmod o+t [파일명]명령어로 설정 가능
r-x: 누구나 들어오는건 되는데 생성하는건 불가능하다.
- chmod해준다. xrwt로 바뀌었다. 다른 계정으로 들어가서 작성을 해보자.
- 다른 계정으로 들어갔을 때 파일을 만들 수 있는 것을 확인 할 수 있다.
: 다른 파일과 이어주는 파일을 의미하며 바로가기파일과 비슷함.
inode: 리눅스 파일 시스템에서 사용하는 자료 구조를 의미하며, 파일/디렉터리의 정보를 가짐. (파일마다 고유하다.)
inode block: inode가 모여있는 공간(전체 디스크 공간의 1%정도를 차지)
data block: 실제 데이터가 저장된 공간.
- 모든 파일 / 디렉터리는 각자 1개씩의 inode를 가짐
- 파일 소유권, 허가권, 파일 종류, 파일 실제 데이터 위치(주소) 등이 저장되어 있음.
#ln [링크대상파일명][링크파일명]
- 원본 파일 데이터를 사용한다.(기존 파일의 inode와 같은 inode번호를 복사)
- 파일을 제거하는 명령어인 rm을 호출하면 내부적으로
unlink()라는 시스템 콜이 호출됨.- inode는 자신을 참조하는 횟수인 '링크 카운터'를 가지게 되며, 하드링크를 생성할 때마다 카운터가 1 증가되고, 링크가 끊어질 때마다 카운터가 1씩 감소.
- 카운터가 0이 되면 inode는
free()가 되어 다른파일을 생성할 때 사용할 수 있음.
같은 데이터를 저장한다. == 같은 곳을 바라본다.
List a = new List();
List b = a;
자바를 통해서 이해하면 쉽다.
- practiceDir디렉터리를 생성하고 linktest 파일에 글을 작성하주었다.
-> 하드 링크 만들기
- 3538986 : inode
- 2 : 링크된 수 (같은 곳을 바라보고 있다. 숫자가 같다.)
- 똑같은 내용이 들어있는 것을 확인할 수 있다.
그렇지만 copy랑은 개념이 완전다르다.
- 카피는 새로운 데이터 공간이 만들어진거고 하드 링크는 같은 공간을 바라보는 것이다. inode가 다른 것을 확인 할 수 있다.
-> 파일의 내용을 "change" 로 덮어써보자.
- 참조를 하고 있기 때문에 원본파일이 변경이 되면 하드링크 파일도 함께 변경이 되다.
- 다른 곳으로 옮겨도 inode 값이 같기 때문에 작동은 잘 된다.
하드링크(Hard Link) 특징
- ls -i로 파일 확인 시 원본과 i-node값이 일치함.
- 원본과 링크 파일의 내용과 크기가 같음.
- ls -l 명령 시 출력되는 링크의 숫자가 올라감.
- 원본이나 링크 파일 둘 중 어떠한 파일을 수정해도 같이 반영됨
- 파일만 설정 가능하며, 동일한 파일 시스템에서만 사용가능
- 다른 Partition혹은 다른 Disk사이에서 링크는 불가
#ln-s [링크대상파일명][링크파일명]
- 별도의 파일 데이터를 가지며 참조하는 파일의 경로를 지정함.
- 경로를 지정하기 때문에, 다른 파일 시스템 간에 사용하는 것이 기능(usb - C drive)
- 심볼릭링크가 가리키는 곳에 파일이 삭제되거나, 이동이 될 경우에 동작하지 않음(Dangling Link 문제)
- Windows의 바로가기 기능과 유사함.
하드링크와 링크는 inode 값이 같으면 상관없지만
심볼릭 링크 파일은 원본 파일이 어디에 저장이 되어있는지 위치를 저장하고 있다. 그래서 포인터로 갔다가 원본 파일로 갔다가 원본 파일의 inode로 가게된다.
- 심볼릭 링크 생성. 화살표가 생기며 linktest의 위치를 저장한다. (포인터)
- 권한을 보니
lrwxrwxrwx/l: 심볼릭링크라는 의미이다.
심볼릭은 777이 기본이다.
- 하나 더 생성해보았다. inode가 다른 것을 확인 할 수 있다.
-> 원본 파일 삭제 해보자.
Hard1은 똑같은 inode를 보고있기 때문에 영향이 없는데Simbolic1은 영향을 받게 되어서 찾을 수 없다고 나온다.
- 원본 파일을 삭제했더니 검은색으로 변했다. 즉 의미가 없는 파일 이며 원본 파일이 사라졌다는 의미이다.
- 원본 파일 위치에다 똑같은 이름으로 다시 만들게 되면 다시 살아난 파일로 간주한다.
심볼릭링크(Symbolic Link) 특징
- ls -i로 파일 확인 시 원본과 i-node값이 다름.
- 원본과 링크 파일의 내용과 크기가 매우 작음.
- ls -l 명령 시 권한 영역 맨 앞에 파일 유형이 'l'으로 표시됨
- 원본이나 링크 파일 둘 중 어떠한 파일을 수정해도 같이 반영됨
- 원본 파일을 삭제하면 링크 파일은 사용 불가.
- 링크 파일은 권한이 777로 표시되지만, 원본 파일의 권한과 전혀 상관이 없음.
-> nano /etc/default/grub
- BIOS 화면을 건너뛸건가에 대한 속성을 주석으로 변경해주고 어느정도를 지속할건지에 대해서 10초로 수정해준다.
update-grub해준다.
루트 비밀번호 재설정
init=/bin/bashmount -o remount.rw/mountpasswd -> 비밀번호 재설정순서 정리
-> 부팅 중 ESC 눌러서 GRUB 접속
-> Ubuntu 에서 E누름
-> 맨 마지막줄 바로 윗 줄 맨 마지막에 init=/bin/bash 입력 후 Ctrl+X로 재부팅
-> 셸이 떴으면
#mount -o remount.rw/#mount#passwd입력하여 패스워드 재 설정
-> VMware 강제종료 후 재부팅
- 누구나 root비밀번호를 바꿀 수 있다. 그러면 막지 못하는가? 그래서 GRUB에 접속할 때 비밀번호를 설정할 수 있는데 나중에 하겠다.
-> 윈도우와 VMware ctrl c / v 가능하도록 해보자.
- 이 DVD폴더 안에서
open in terminal으로 tmp파일로 이동해서 압축을 풀자. DVD에서는 write를 못하기 때문에 이동해서 압축을 푼다.
ls vm[tab]->cd vm[tab]
./vm[tab]->yenter -> 계속 뜨는거 enter 쭉 눌러서 default 값으로 다 해준다.(해상도도 좋아지고 얘가 알아서 설정을 다 해준다.)
- 끝! reboot
terminal :
ctrl shift c / v
nano :복사 : alt + 6, 붙여넣기 : ctrl + u
gedit : window랑 동일
인터넷 되게하기
- Change Settings
- VMware8 선택 후 아래 네모체크박스 2개 다 선택 후 apply -> ok
- reboot 후 ping 8.8.8.8 -> 이렇게 되면 인터넷이 되는 것이다.