이번 시간에는 저번시간에 이어서 추가로 많이 쓰이는 명령어들과 상대경로, 절대경로에 대해 학습해보겠습니다.

 

1. 절대경로와 상대경로

2. 사용자 별 권한 부여(읽기,쓰기, 실행)

3. 사용자 스위칭 & 권한 변경

 

절대경로와 상대경로

 

1. 절대경로

저번시간에 cd 명령어로 경로를 변경할 수 있음을 알았는데, 절대경로가 무엇일까요?

절대경로란, 최상위 디렉토리에서 목표 디렉토리까지 이르는 모든 경로를 말합니다.

이 때 최상위 디렉토리란 ' / ' 을 의미합니다. 맨 왼쪽에 슬래시가 달려있죠.

말그대로 모든 경로를 기술한 것이므로 위치를 이동할 때 cd 명령어에 최상위~목표 디렉토리까지 경로를 적어주면됩니다.

이 때, pwd로 확인한 절대경로는 맨 앞에 최상위 디렉토리 표시(/) 가 붙는다는 것을 꼭 기억해주세요.

절대경로는 어렵지 않고 최상위 디렉토리~그냥 목표 디렉토리까지의 경로를 써주기만 하면됩니다.

아래 결과로 설명을 마치겠습니다. 

*현재 위치가 /home/ubuntu/a/b일 때 cd a/ 명령어는 /home/ubuntu/a을 의미하는게 아니라 /home/ubuntu/a/b/a를 의미합니다!! 주의하세요.

2. 상대경로 

상대경로는 현재 자신의 위치를 기준으로 나타낸 경로입니다.

최상위, 현재, 상위, 홈 디렉토리에 대해 다음과 같이 나타낼 수 있습니다. 외워주시면 됩니다.

아래 명령어들은 cd와 같이 쓰입니다.

1) 최상위 디렉토리의 위치: / 

2) 현재 디렉토리의 위치: ./ or .

3) 현재 위치의 상위 디렉토리의 위치: ../ or ..

4) 홈 디렉토리의 위치: ~ or ~/

2,3,4 번에서 뒤의 슬래쉬를 생략해서 자주 씁니다. 저렇게도 쓸 수 있구나 정도로 참고만 하시기 바랍니다.

 

아래 결과를 토대로 충분히 학습할 수 있도록 합니다.

 

사용자 별 권한 부여(읽기, 쓰기, 실행)

 

저번시간에 ls -l 명령어를 사용했을 때 아래처럼 drwxrxr-x, -rw-rw-r-- 꼴로 나오는 것을 확인 할 수 있었는데요.

저 영어 표시가 각각 a디렉토리와 hi 파일에 허용된 권한을 의미합니다.

짝대기(-)는 파일, d는 디렉토리를 의미합니다.

맨 첫번 째 기호가 파일/디렉토리를 나타내고 나머지 아홉자리를 각각3자리씩 끊어서 각각

사용자(user)/그룹(group)/기타(other)의 권한을 의미하는데요.

3자리가 r,w,x(읽기권한, 쓰기 권한, 실행 권한)으로 나눠져있고 각 알파벳은 이진수로 이루어져 있습니다.

 

 

출처: https://mamu2830.blogspot.com/2019/09/rwx.html

어떤 파일의 권한이 -r-xrw-rwx일 때 어떻게 해석할 수 있을까요?

=> 파일의 소유자는 읽기+실행, 그룹은 읽기+쓰기, 기타사용자는 읽기+쓰기+실행 권한이 있음을 의미합니다.

  

파일/디렉토리의 rwx의 권한은 chmod 명령어로 변경할 수 있습니다.

아까 위에서 살펴본 a디렉토리와 hi 파일의 rwx권한을 변경해 보겠습니다.

명령어에서 사용자/그룹/기타 유저는 u/g/o로 나타내고 권한을 추가할 경우는 +, 뺄 경우는 -로 표기합니다.

간단한 예제를 통해 확인해 보겠습니다.

 

"a 디렉토리의 권한을 변경하되 유저의 읽기,실행 권한을 빼고 기타 사용자의 쓰기 권한을 부여하기"

=> chmod u-r,u-x,o+w a(디렉토리명)

 

 

"hi 파일의 권한을 변경하되 각 그룹별로 없는 권한들을 모두 부여하기"

=> chmod u+x,g+x,o+w,o+x hi(파일명)

 

하지만 이렇게 영어로 일일이 작성해주는건 매우 번거롭습니다.

위에서 살펴본대로 r=4, w=2, x=1로 총 7이므로 이를 이용하여 숫자로 변경해주는게 간단합니다.

 

"a 디렉토리의 권한을 변경하되 사용자 그룹의 쓰기 권한을 제거하고 기타 유저의 읽기 권한을 제거하기"

=> 유저는 그대로 -w-(0+2+0=2), 그룹은 r-x (4+0+1=5), 기타는 -wx (0+2+1=3) 이므로 chmod 253 a 로 입력하면 됩니다.

 

 

사용자 스위칭과 권한변경

 

이번엔 기본 사용자(ubuntu)에서 다른 유저로 스위칭하고 스위칭된 유저에게 특정파일의 수정 권한을 ubuntu(사용자)로 넘겨주는 작업을

해보겠습니다. 불필요할 것 같으신 분들은 여기서 마치시면 됩니다.

 

새 계정을 만들어 주기 위해 다음과 같이 입력해줍니다. 저는 jow1025라는 이름으로 유저를 만들었습니다.

sudo adduser 이름(jow1025)

패스워드만 입력해주고 나머지 옵션(인적사항)들은 그냥 엔터 눌러주시면 됩니다.

 유저를 생성했으니 새 유저로 접근해보겠습니다. 

"su 이름(jow1025)" 명령어를 입력하면 아래와 같이 나오는데, 문제는 프롬프트의 맨 앞의 ubuntu-> jow1025로 변경되었을 뿐 ls로 파일목록을 보니 이름만 바뀌었을 뿐 모든 파일/권한은 여전히 ubuntu에 있음을 알 수 있습니다.

 

홈디렉토리도 새로 바꾸고 jow1025만의 권한을 갖게 하려면 "su" 가 아닌 "su -l "명령어를 입력해야합니다.

"su -l jow1025"

 

그럼 아래와 같이 홈디렉토리도 jow1025으로 되어있고 새 유저여서 아무런 파일도 없는 것을 알 수 있습니다.

exit명령어로 빠져나온다음 새로 입력하면 아래와 같이 나오게 됩니다.

 

새로 만든 hello.txt 파일의 소유자/그룹의 권한이 jow1025로 바뀐 것을 알 수 있습니다.

이제 이 hello.txt의 파일의 소유자/그룹을 ubuntu로 바꿔봅시다. 소유자/그룹의 변경은 chown명령어를 사용합니다.

 

권한을 변경하는 작업이므로 루트 계정만 진행할 수 있기 때문에 앞에 sudo를 붙여주고 아래와 같이 입력합니다.

소유자와 그룹을 모두 ubuntu로 바꿔주겠습니다.

 

sudo chown ubuntu:ubuntu hello.txt

 

권한을 바꿔준 뒤 jow1025가 파일의 내용을 수정하려고하면 파일의 권한이 ubuntu로 넘어갔기 때문에 permission denied 오류가 뜹니다.

삭제할 때도 같은 권한거부 문구가 뜰것 같았는데 정말 삭제할 건지만 한번 더 물어보네요. 

 

jow1025사용자가 hello.txt파일을 만들고 파일의 소유자/그룹을 ubuntu로 바꾸고 난 후 jow1025가 파일을 수정하려고 할 때와 삭제할 때 각각 어떤 문구가 출력되는지 알 수 있습니다.

 

아래: jow1025가 만든 파일의 소유자/그룹을 ubuntu로 바꿔주는 과정+ jow1025가 파일을 삭제하려고 할 때

아래: jow1025가 파일의 내용을 hello로 바꾸려고 할 때 권한 거부

 

 

 

 

 

+ Recent posts