본문 바로가기

운영체제

[Linux] 소유권과 허가권

728x90
소유권(Ownership)

 

개체에 대한 소유자와 소유그룹

Linux 시스템의 모든 개체는 소유자와 소속그룹이 지정되어 있다. 

 

소유권 관리 명령어 

 

chown

개체(파일 및 디렉터리)의 소유자 및 소속 그룹 변경

계정이름/그룹이름 대신 UID/GID 로 사용 가능

 

# chown 계정이름:그룹이름 파일이름

==> chown test1:test1 /root/test1.txt

 

옵션 -R

하위 디렉터리 및 파일 전체의 소유권 변경 

 

 

chgrp 

개체(파일 및 디렉터리)의 소속그룹 변경

 

# chgrp gid/그룹이름 파일이름  

 

!! root는 모든 퍼미션 소유권에서 자유로움 !!

 

 

허가권(Permission)

멀티 유저 환경에서 개체(파일, 디렉터리 등)에 접근할 수 있는 자격

사용자(user), 사용그룹(group), 나머지 사용자(other) 단위로 권한을 부여함

앞에서 3자리씩 소유자, 소속그룹, 나머지로 구분 r(=4), w(=2), x(=1)

마지막 .은 확장권한(권한 ACL)을 나타냄

퍼미션 사용 시 주의점

-파일과 디렉터리 퍼미션의 역할이 다르다

-root(수퍼유저)#로 설정하고 일반 사용자$로 확인 !!!!

root는 수퍼라 무조건 설정용


파일 퍼미션

 

[root@localhost /]# cat > /home/test01/file

file

ctrl + d

touch는 만들면 바로 생기지만 cat은 내용을 입력까지 해줘야함

[test01@localhost ~]$ ls -al file

-rw-r--r-- 1 root root 12 2021-06-15 10:06 file

test01은 u도 아니고 g도 아니고 other이므로 r퍼미션만 허가

=>test01은 해당 파일을 읽기 r 만 할 수 있음

chmod : 퍼미션을 변경

- 권한을 숫자 형태로 표현한다

1) chmod 777 권한을 전부 다 (rwx rwx rwx)

[root@localhost ~]# chmod 777 /home/test01/file

[root@localhost ~]# ls -al /home/test01/file

-rwxrwxrwx 1 root root 12 2021-06-15 10:06 /home/test01/file

test01로 다시 들어가서 수정이 되는 지 확인

[test01@localhost ~]$ vi /home/test01/file

=> w권한을 부여 받아서 수정이 가능

g부분의 퍼미션 회수(revoke)

chmod 707 이어도 수정가능 => test01은 other이므로 !

r퍼미션이 빠지면 문제가 생기기 때문에 w줄때 r을 같이 부여한다

부여순서

r-- r-x rw- rwx (4>5>6>7)

ExE 퍼미션 (x권한)

[root@localhost ~]# which ping ==>which명령어: ping의 경로 확인 

/bin/ping

[root@localhost ~]# ls -al /bin/ping

-rwsr-xr-x. 1 root root 38200 2015-07-24 02:55 /bin/ping

[root@localhost ~]# cp /bin/ping /root/ping

[root@localhost ~]# ls -al /root/ping

-rwxr-xr-x 1 root root 38200 2021-06-15 11:29 /root/ping

x권한이 있는 경우

[root@localhost ~]# ./pi

Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]

[-p pattern] [-s packetsize] [-t ttl] [-I interface or address]

[-M mtu discovery hint] [-S sndbuf]

[ -T timestamp option ] [ -Q tos ] [hop1 ...] destination

[root@localhost ~]# pi

-bash: pi: command not found

./ 필수임 => 실행하는 명령어

x가 없을 경우

[root@localhost ~]# chmod 644 /root/pi

[root@localhost ~]# ./pi

-bash: ./pi: 허가 거부

[root@localhost ~]# vi /root/1.sh

mkdir /root/dir1

touch /root/dir1/file

echo "파일 및 디렉터리 생성 성공"

[root@localhost ~]# sh /root/1.sh ==>sh 기본 쉘 호출 명령어 ( ./ 나 sh로 사용)

파일 및 디렉터리 생성 성공

[root@localhost ~]# ls -al /root/1.sh

-rw-r--r-- 1 root root 84 2021-06-15 11:40 /root/1.sh

[root@localhost ~]# ls -R /root/dir1/ ==> -R 경로까지 출력하는..?

/root/dir1/:

file

==> 우리가 쓸땐 sh 컴퓨터가 할땐 ./

[root@localhost ~]# rm -rf /root/dir1

[root@localhost ~]# chmod 755 /root/1.sh

[root@localhost ~]# ls -al /root/1.sh

-rwxr-xr-x 1 root root 84 2021-06-15 11:40 /root/1.sh

[root@localhost ~]# ./1.sh

파일 및 디렉터리 생성 성공

[root@localhost ~]# chmod 644 /root/1.sh

[root@localhost ~]# rm -rf /root/dir1

[root@localhost ~]# ./1.sh

-bash: ./1.sh: 허가 거부


디렉터리 퍼미션

# mkdir /permtest

[root@localhost ~]# ls -ld /permtest

drwxr-xr-x 2 root root 4096 2021-06-15 12:06 /permtest

소유자/소유그룹을 변경

[root@localhost ~]# chown test01:test01 /permtest

[root@localhost ~]# ls -ld /permtest

drwxr-xr-x 2 test01 test01 4096 2021-06-15 12:06 /permtest

chmod 700 /permtest/

test01에서는 ls /permtest O /

test02에서 ls /permtest 허가 거부

=>test02는 other 이므로 권한이 없음 r권한이 X

[test01@localhost ~]$ touch /permtest/t1.txt

[test01@localhost ~]$ ls /permtest

t1.txt

=> 해당 디렉터리 내의 파일을 만들 수 있는 퍼미션 w

test02는 w 권한이 없어서 허가 거부

chmod 706이면 test02가 ls도 되고 파일 생성도 가능해야하지만

파일 생성 X

cd /permtest도 안됨!!!!!!

x퍼미션까지 부여해야 가능

=>디렉터리에 진입해야 하기 때문에

=> x퍼미션은 경로변경. 안에 있는 항목 읽기 등 cd가 필요

=> touch는 그 다음 단계이기에 cd가 되야 touch가 가능 !

!!! 디렉터리 퍼미션과 파일 퍼미션 구분하기 !!!

 

파일은 사용자가 필요한 정보

디렉터리는 파일을 효율적으로 관리하기 위한 단위

- 디렉터리 하위구조의 파일 목록과 디렉터리 목록이 있음 

 

갈색 알아두기 !!

permission의 종류

numeric(숫자) : 절대모드

퍼미션을 0으로 리셋하고 다시 부여한다는 느낌으로 설정

# chmod 777 = rwxrwxrwx

=>결과가 항상 같다 세팅하는 느낌

 

symbolic(문자) : 상대모드

기존 퍼미션에 추가 삭제가 기호로 확실하게 표현 가능

# chmod u-x, o+w

=>기존에 추가하는 개념 원본의 퍼미션에 따라 결과가 달라짐

기존 퍼미션에 특정 퍼미션을 추가하는 느낌

a는 all

chmod a+rwx = chmod 777

 

만약 원본 퍼미션이 다르면 결과도 다름 (상대모드)

=> 000인 것에 a+x 한 것과 666 a+x 한 것은 결과가 다름


사용자 test10을 생성할 때 1차그룹을 test01로 지정하여 퍼미션 부여를 확인

 

1차 그룹 변경 usermod –g ~~

 

 

소속 사용자가 현재 없는 그룹이 됐음

grep test10 ~~~

 

test01이 u,g,o 중 어떤 소유권에 따라 퍼미션이 적용되는가?

permission (허가권) 3 부분 다시 복습 .. --


umask

리눅스 시스템에서 자원을 생성할 때 설정되는 기본 권한을 통합 관리하기 위해 사용

디렉터리는 777 권한, 파일은 666권한에서 umask값을 뺀 값이 기본 권한

디렉터리 / 파일 생성시 기본 퍼미션이 있음

기본 퍼미션을 지정해주는 값을 umask

[root@localhost /]# umask

0022

 

디렉터리 기본 0777 - 0022 = 755

파일 기본(x퍼미션을 제외함) 0666 - 0022 = 644

 

임시 또는 영구적으로 변경가능

umask 변경 후 로그아웃 재접하면 다시 원래대로 !

728x90

'운영체제' 카테고리의 다른 글

[Linux] 계정과 그룹 관리  (0) 2021.06.16
[Linux] 리눅스 특수 권한(special permission)  (0) 2021.06.16
편집기 활용 실습  (0) 2021.06.15
Linux의 vi 편집기  (0) 2021.06.15
Linux 기본 명령어  (0) 2021.06.15