본문 바로가기

Ubuntu

그룹과 사용자... 그리고 권한

attempt to write a readonly database

 

aws ec2 server에 프로젝트를 배포 중 위 스크린샷과 같은 문제가 생겼다.

db에 접근할 일이 생길 때 저런 에러가 뜨면서 접근이 안된다.

 

chmod 664를 통해 db.sqlite3의 권한만 바꿔주면 될 것 같았지만 아니었다.

우선 developers라는 그룹을 만들어서 ubuntu계정과 deploy계정, 그리고 www-data계정을 포함시켜 준다.

(+2020-12-15 추가: 그냥 만들어져 있는 ubuntu라는 그룹에다가 ubuntu계정과 deploy계정, 그리고 www-data계정을 포함시켜 주는 것이 더 좋은 것 같다. 왜냐하면 파일이나 폴더를 새로 만들거나 추가하면 디폴트가 ubuntu:ubuntu이기 때문에 매번 chown을 통해 group을 바꿔줘야하는 수고를 덜 수 있다.)

그 후엔 프로젝트 폴더나 그 상위의 srv폴더를 -R 옵션을 줘서 통째로 소유자 권한을 ubuntu:developers로 설정해주면 된다.

ex)

sudo chown -R ubuntu:developers /srv/

그리고 db.sqlite3의 초기 생성권한은 644로 되어있는데 이것을 664로 바꿔주면 된다.

즉, 그룹에 대해서도 쓰기 권한을 주는 것이다.

chmod 664 db.sqlite3

이렇게 하고 다시 서버를 구동하고 해보면 잘 실행된다.

 

관리자 권한이 필요할 경우 sudo를 붙이고 아래 명령어들을 실행


문제 해결에 관련된 명령어들

 

그룹 추가

groupadd new_group

 

그룹에 유저 추가

adduser user_name new_group

 

그룹 이름 변경

groupmod -n new_group_name group_name

 

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

접근권한 변경

chmod -R 775 [file or folder name]

 

-R은 하위 디렉토리 및 파일들에도 적용하는 옵션

첫 번째 숫자: Owner 권한

두 번째 숫자: Group 권한

세 번째 숫자: Other 권한

 

소유자 및 그룹변경

chown -R [소유자명[:그룹명]] [file or folder name]

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

 

호스트OS의 전체 그룹 리스트를 조회한다.

cut -d: -f1 /etc/group

 

호스트OS의 전체 사용자 리스트를 조회한다.

cut -d: -f1 /etc/passwd

 

그룹 내 사용자 리스트

getent group 그룹이름

'Ubuntu' 카테고리의 다른 글

AWS Ubuntu 서버로 파일이나 폴더 보내기  (0) 2020.12.15