본문으로 바로가기

Linux 기초 2

category 잡동사니 2015. 6. 24. 23:07

허가권 : 어떠한 작업을 해도 되는지 안 되는지에 대한 권한

소유권 : 파일이나 디렉토리에 대한 주인 개념

-> 둘을 합쳐서 권한이라고 한다. 

ls 실행시 나오는 10자리 중에 가장 첫번째 자리 : 파일 / 디렉토리 구분

rwx / rwx /rwx 

첫번째 : 소유자 , 사용자 
두번째 : 소유자가 속한 그룹
세번째 : Other , 일반 사용자들에 대한 허가권

2^2 2^1 2^0
4 2 1
=>7 

7*10^2  7*10^1 7*10^0 = >777이 Max Per

r : read 읽기.
w : write 쓰기.
x : execute 실행, 접근

X의 의미 : file일 때 x가 있으면 실행 파일 
file 에 x가 없으면 문서 파일
dir : 접근

실행 : 프로세스에 대한 동작.

chmod (change modification) 허가권 변경 
chmod per file or dir 

per : Numberic Method : 숫자
Symbolic Method : 기호

Owner -> User
Group
Other

chmod u+r ./a
chmod g+w ./a
chmod o+rw ./a

chmod a+x ./a 
-> a : u,g,o 세가지 다 포함.
chmod u+wx,g+wx,o+r-w ./d

rw-r--r--

N.M
-w-r--r--
r--r--r--

S.M
rw----r--
rw-r-----

파일의 경우 r과 관련이 있다.

- 디렉토리
rwxr-xr-x 

N.M
-wxr-xr-x
r-xr-xr-x
rw-r-xr-x

S.M
rwx--xr-x
rwxr--r-x
rwxr-x--x
rwxr-xr-- 

디렉토리의 경우 마지막 x와 관련이 있다.

ftp 업로드
권한 
700 o rwx 
600 x rw-
500 x r-x
400 x r--
300 o -wx
200 x -w-
100 x --x

로그인 : x와 관련
업로드 : w와 관련



rwx rwx rwx
소유자 소유그룹 그외

UID GID 

소유자 혹은 소유그룹의 작업은 각각의 허가권에 영향 

그밖의 다른것일 경우 마지막 3자리의 영향. 

chown (change ownership)
소유권 변경

chown UID:GID file or dir (리눅스 형식)
chown samadal.root grub.conf도 가능 (유닉스 형식. 둘다 가능)

chown samadal. grub.conf -> 둘다 samadal로 변경
chown .root grub.conf -> GID만 변경
chown root grub.conf -> UID만 변경

UID : /etc/passwd 에 있는 UID여야 한다.
GID : /etc/group에 있는 GID여야 한다.

root : 권한 상관없이 사용 가능


문제 

1. 소유권 : 같은거 2개, 다른거 2개
2. 허가권 : 22개 


3. 대상 디렉터리 : /export/home/samadal/html/
 / var/www/html/

chmod 허가권 /export/home/samadal/html/
     / var/www/html/

chown UID.GID /export/home/samadal/html/
       / var/www/html/

4. test 
1. ftp접속
2. html 디렉 보이나 (cmd 창에서 ls -l)
3. html 디렉 변경되나 (cmd창에서 cd /export/home/samadal/html, cd ./html 되는지)

4. index.html 업로드 되나

업로드후 mv /export/home/samadal/html/index.html /var/www/html/index.html
(폴더 변경 안될시 mv /export/home/samadal/index.html /var/www/html/index.html 

5. site 출력되나

끝나면 rm -rf /var/www/html/index.html 

허가권 목록 
755,570,375,700,455
125,001,010,500,273
264,640,135,324,705
107,777,027,316,214

770,644

--------x : 3번 가능 (루트)

-----x--- : 3번 불가능 (루트)

root root     root samadal        samadal root         samadal samadal
644 316    770        700

1,2는 다 된다. 
export/home/samadal/          rwx --- ---700 S.S < Owner 권한. (x유무에 따라 1번.로그인, r유무에 따라 2번. ls -l)
변경한적이 없으므로 두가지 다 잘 된다. 

< root root >
rw- r-- r-- 644   
3. 나는 samadal이므로 Other인 뒤의 세자리와 관련. 접근이므로 마지막 x와 관련
4. 마지막 세자리의 w와 관련 
5. html안으로 접근을 해야하므로 마지막 x와 관련.

644는 마지막 x가 없으므로 3,4,5 다 안된다.

< root samadal >
samadal : 기본 그룹이므로. 가운데 그룹 부분에 관련.

-wx --x rw- 316
3번. x있으므로 가능 O
4번. w없으므로 X
5번. 파일 없으므로 X

< samadal root >
rwx rwx --- 770
나는 samadal 이므로 맨앞 3자리에서 받아온다.
3.4 가능

5번은 무조건 Other에서 권한을 받아온다. 웹사이트를 열람하는건 전부 Other. 따라서 Other의 x와 관련

< samadal samadal >
rwx --- ---

-w-rwx-wx 
3번. 맨 앞 접근권한 x, 그룹에서의 접근 권한은 o -> 안된다. 소유자,그룹 둘다 권한 있으면 그룹은 신경x 소유자 권한만 신경
(권한 : UID > GID > Other) 

4번. 접근이 안되므로 w가 있어도 업로드가 안된다. x가 무조건 1순위 ! r,w는 2순위다. 

rw-나 ---는 같다.



특수권한


- Set UID : Owner의 x권한에 S로 변경 권한 : 4000
- Set GID : Group의 x권한을 S로 변경 권한 : 2000
- Sticky Bit : Other의 x권한을 T로 변경 권한 : 1000

rws rwx rwx 
rwS rw- rw- 

rwx rws rwx
rw- rwS rw-

rwx rwx rwt
rw- rw- rwT

해당 기호에 x권한이 있으면 소문자. 없으면 대문자로 사용한다.

천 단위의 권한 : 특수권한.


mkdir /sd
chmod 777 /sd
유저 하나 생성후 touch로 파일 하나 생성
다른계정에서 삭제가능

chmod 1777 /sd

해놓으면 다른계정에서 삭제 불가

Sticky bit : dir에 적용.
dir이 "w"권한을 갖으면 해당 dir내에 파일과 디렉토리를 삭제할 수 있다.

삭제 권한을 root와 생성자만 갖는다. 


find 경로 -name 이름 (검색)

/usr : 용량이 크거나 자주 안쓰는 파일 모음
/usr/bin : 실행파일
/usr/bin/passwd : 권한 : 4755 : 비밀번호 변경 가능 
                                      755 :  암호변경 불가
set UID에 따라 암호 변경 가능 / 불가
마지막 권한 5 : 접근 허가 가능 / 불가

set UID / set GID 
- 실행 file에 적용
- 실행 file이 소유자 / 소유그룹으로부터 실행하려는 사용자가 권한을 빌려와서 실행

$passwd 
현재 pw  < 여기까지는 그냥 읽는거
------------------
새암호 :
새암호 재입력 :
update성공  < 여기까진 관리자 권한

/etc/shadow : --- --- --- 이 파일을 수정하려면 관리자 계정만 가능(r.r) 그룹 : 루트의 기본그룹. 루트 그룹은 관리자의 능력이 없다.



Set GID는 거의 적용 x. Set UID 사용한다.
--------------------------------------------------------------------------------------------------------------------

groupadd p1 
usermod -G p1 samadal1
id samadal1 확인
chown root.p1 /usr/bin/passwd 
chmod 4750 /usr/bin/passwd 

--> p1그룹은 비밀번호 변경 가능 / 나머진 불가


--------------------------------------------------------------------------------------------------------------------


디렉터리 생성 : 관리자 - 755 (777-022)
                      사용자 - 775 (777-002)
파일 : 관리자 - 644 (666-022) 
         사용자 - 664 (666-002)
이때 22와 2를 umask값이라고 한다. 파일또는 디렉토리 생성시 기본 허가권을 설정하는 값. 

Umask : 077로 설정. 계정생성시 700이 된다.


파일에 x권한 주면 실행파일이 된다. 문서 - x 빠져있음.

root . per 473 : umask : 디렉 - 304
                                  파일 - 193 -> 기호로 빼주어야 한다. ->204. 실제로 만들어 지는 허가권은 462.
사용자 . per 256 : umask : 디렉 - 521
                                      파일 - 410 -> 기호로 빼주게 되면. -> 420. 실제로 만들어지는 값은 246.

파일일경우 계산은 기호로 해주어야한다.(rw-rw-rw- 에서 빼줌)
디렉토리는 숫자로 계산해도 상관 없다.



rpm        package = program


vim - enhanced - 7  0  109-3 i386.rpm 
 패키지 이름<--I >> 버전 정보 

7 : 주버전 109-3 까지가 버전 정보

0 : 보조 버전 : 해당 파일에 대한 업그레이드.
109 : 패치 버전 (수정 . 소스코드는 놔두고 잘못된 코드 위에 절대 코드를 덮어 쓰는것을 말한다.) 
      소스코드 자체를 변경하는 것을 Crack 버전이라고 한다. -> 악성코드 위험

- 3 : release . 배포 버전

i386 : 시스템 아키텍처 - i 386 : i - intel. 386 : 386급 이상. i586 : 펜티엄 1,2,3급 이상 i686 : 펜티엄4 이상

i386이 호환이 제일 높다

x86_64
x86 : intel AMD  둘다 지원 . 32비트 체제의 운영체제
x64 : 64비트 환경 
한번에 처리할수 있는 비트의 차이.

uname -i : 시스템 아키텍처 확인.
no archi : 아키텍처가 없다. 다 쓸수 있다
sparc : 솔라리스 사용시 sparc장비가 필요. 유닉스용 시스템 아키텍처

1. 설치 : rpm -ivh 패키지명...rpm
2. 삭제 : rpm -e 패키지명
3. 확인 : rpm -qa | grep 패키지명  (| : 명령어 여러개 조합할수 있게 해주는거) 
 -qa까지가 전체 패키지 출력. grep : 앞의 검색결과 중 단어가 들어가는거만 골라서 출력해라. 
ex grep vim : vim이 들어간 단어들만 출력해라.

vim-common -> 의존성 오류 vim-enhanced 먼저 지워라

의존성 오류로 루프가 돌 경우 - 두개의 작업을 동시에 해준다.

ftp.daum.net -> centos -> os -> x86_64-> packages -> vim 검색

rpm -ivh 파일명 전체

삭제는 앞에 패키지명만 써줘도 가능.




rpm 사용시 유의사항

1. 의존성 오류를 절대 무시해서는 안된다.
2. 의존성 오류 발생시 오류를 제시한 패키지부터 작업한다.
3. 대표 패키지 부터 작업한다.
4. 나머지 패키지는 보이는 순서대로 작업한다.
5. 버전은 일치해야한다.
6. lib로 시작해서 중간에 so가 들어가는 오류는 무시해도 된다.
7. 가능한 nodeps는 사용하지 않는다.



-----------------------------------------------------------------------------------------------------------------------

mysql 설치

http://ftp.daum.net/centos/6.5/os/x86_64/Packages/ 
 
에서 mysql 관련 10개 다운 

rpm -ivh 로 설치.

중간중간 충돌 나는건 rpm -e --nodeps 로 삭제 (주의)

필요한건 추가로 다운 -> ftp로 전송후 설치

 rpm -qa | grep mysql으로 확인

--> 10개 뜬다. 


connector-java의 경우 jta >=1.0 에러가 났는데 그냥 설치시 --nodeps 로 설치.




압축 / 묶음 (tar) / 백업

gzip -> 압축명령어. .gz확장자를 갖음
# gzip [-option]
-d : 압축해제
-r : recursive

# gunzip : 압축해제, 'gzip -d' 와 동일.


bzip2 -> 압축명령어. .bz2 확장자를 갖음
-d  압축해제 


# bunzip2

gzip file1 
bzip2 file2 

두종류의 압축률의 차이가 조금 있다.

gzip dir1 --> 홀더 안에 있는 파일들이 각각 압축파일로 변경된다.

압축해제 : gunzip 파일
       bunzip 파일
! tar -> tape archive. 파일 / 디렉토리를 하나의 파일로 묶음처리. 

# tar [option] [tar_name] [source]
-c -> tar_name으로 파일 묶음.
-t -> 묶음 파일 내용 확인
-x -> 묶음해제
-f -> 옵션뒤에 tar 파일임을 명시
-v -> 과정출력
-C ->해제될 디렉토리 지정
-g ->증분 백업


풀고-> 확인-> 풀어

풀을때 -cvf
확인 -tvf
해제 -xvf

1. 묶을때 
# tar cvf [tar_name] [source] -> source 파일 / 디렉토리를 tar_name으로 묶음.
# tar zcvf [tar_name] [source] -> 묶은 tar 파일을 gzip으로 압축.
# tar jcvf [tar_name] [source] -> 묶은 tar 파일을 bzip2로 압축.

 확인
# tar tvf [tar_name] -> 내용출력

 해제
# tar xvf [tar_name] -C [dir] -> tar_name을 특정 디렉토리 위치에 해제.
# tar zxvf [tar_name] -C [dir] -> tar.gz 파일을 해제
# tar jxvf [tar_name] -C [dir] -> tar.bzip2 파일을 해제

dd -> disk dump HDD 이미지 복사
# dd if=/dev/sda of =/dev/sdb
# dd if=/dev/sda2 of=/dev/sdc1
# dd if=/dev/zero of=/test/swapfile bs=1024 count=1000000

< 백업 방법 >
1) tar -> 로컬 영역 백업
/backup 디렉토리 생성 후 다음을 수행 하시오.
# mkdir /backup ; cd /backup
# tar zcvf /backup/home$(date +%Y%m%d).tar.gz /home
# cd /home
# tar cf - . | (cd /backup; tar xf -) -> 퍼미션 및 속성 그대로 백업 복사
# tar cf - . | ssh user1@backuphost "(mkdir backup; cd /backup; tar xf -)

-> 원격 서버로 백업 

# cd /backup
# tar -g list -zcvf backup.tar.gz /home -> /home을 풀 백업 --> 해당 홈디렉터리에 대한 구조정보를 가지고 있는 snap 파일이 생성

# touch /home/new_file-> 추가파일 생성
# tar -g snap -zcvf backup-1.tar.gz /home
-> 스냅샷 list 정보와 비교하여 추가된 부분만 증분 백업
#tar tvf backup-1.tar.gz
-> 추가된 new_file 있는지 확인.  


rwxrwx--- 
인데 user1에게만 접근 권한을 주는 방법

ACL (Access Control List) - 소유자,그룹 소유자도 아니지만 특별한 접근권한을 주는 방법

setfacl
getfacl

acl 설정시 -> ACL이 적용 되는거. 






yum list : 업데이트 가능여부

base : 업데이트 안해도 되는 기본 패키지들

yum list | grep 패키지명  

yum update pkg update : 업데이트 목록 확인
yum [-y] install pkg명 : pkg 설치 ( -y : y 혹은 n이라는대답 입력 필요 x 자동으로 다 y. 잘 사용하지는 않는다.)
- > 의존성 문제 해결

yum [-y] remove pkg명 : [-y : 의존성 오류 다 삭제하게되므로 잘 사용 안함] -> rpm -e

rpm이 더 중요하다. 네트워크 환경이나 각각 패키지를 확인하고 설치. 
설치CD나 iso파일

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

partition : 하나의 물리적인 Disk를 여러개의 논리적인 저장소로 나눈것
primary : 최대 4개 허용 - 주영역. 파티션의 가장 기본적인 형태. 부팅영역을 생성할 수 있고, Data를 저장하는 저장소의 역할을 한다.
extedned : 최대 1개 허용 - 확장영역. primary의 갯수제한을 해결하기 위해 나온 파티션. primary 1개취급. logical의 그릇역할
logical : 무한대로 허용 - 저장소 역할. 부팅 영역 생성 불가.

1개 : p 
2개 : pp
3개 : ppp
4개 : pppp
5개 : ppp (ll). (): 통으로 ex
6개 : ppp (lll) () 통으로 ex. 따라서 p:3,e:1,l:3

HDD type 
IDE : 병렬 . 속도는 낮지만 가격이 싸다
SCSI : 직렬. 속도는 높지만 가격이 비싸다
SATA : 둘을 합쳐 놓은 것


5.x 버전
/dev/hdc = cd-rom
/dev/hd+[문자]
hda,hdb,hdd, ...
/dev/sd+[문자]
sda,sdb,sdc 
fdisk -l : /dev/hd* : IDE 타입 확인
fdisk -l : /dev/sd* : SCSI 타입 확인 


6.x버전
/dev/sd+[문자]+[숫자]
/dev/sr0 = CD-ROM
fdisk -l 까지만 하면 된다.


하드 분할
fdisk /dev/sdb
m 누르면 도움말 나온다.
p, +500M : 500메가 이상
p,e +300M

primary와 logical 구분하기 위해 logical은 sdb5부터 생성.

하드 구조

- 실린더 : 세로로 세워놓을때. 클러스터 : 가로. 

SCSI 1G : 100 / 200 / 200 / 300 / 200
SCSI 2G : 200 / 300 / 400 / 100 / 500 / 300 / 200

생성할때는 앞에서부터, 지울때는 뒤에서부터

mkfs.ext4 /dev/sda1 

FAT 16,32  MS사.
-> 2GB이상의 file을 인식 못 함.
exFAT : 실제로는 얘도 인식 못 함.
NTFS : 서버용으로 개발. 성능 우수. 클라이언트용 OS에서도 사용.  

UFS -> ext2 -> ext3 ->ext4
Unix - Linux
          Soraris
  apple OS 

mkfs.ext2 /dev/sdb3
mkfs.ext4 /dev/sdb4 -> 안 된다.
 
USB - OS - 물리적 저장소로 인식 

mount [-t ext4] Device(파티션의 이름, 장치명 등등) Directory(임의의 디렉토리, Mount Point) 

mount /dev/sdb1 /mp/

df -h

테스트파일로 시험해보면. 파일은 파티션 안에 들어가있고, 마운트포인트를 바꾼다고 해도 파일은 다시 보이게 된다.



mount 시 유의 사항


1. HDD : fdisk(파티션 나누기), mkfs(포맷) 사용
2. MP : dir 생성
3. 하나의 파티션의 하나의 MP를 원칙으로 한다
4. umount시 현재 경로는 MP 이외의 경로로 한다.

df -h : 파티션 확인

----------------------------------------------------------------------------------------------------------------------

mkdir /etc/skel/public_html

cp /etc/inittab login.defs grub.conf 등 중요




'잡동사니' 카테고리의 다른 글

[코드스터디] 3주차  (0) 2015.06.25
[코드스터디] 2주차  (0) 2015.06.25
[코드스터디] 1주차  (0) 2015.06.25
Linux 기초 1  (0) 2015.06.24
Linux // SetUID, SetGID, Sticky_Bit  (0) 2015.06.24