보통 개발 단계에서는

Superuser 권한을 갖고 있는 계정으로 database를 사용하곤 한다. (나만 그런가?)

 

당연히 그 누구도 추천하지 않는, 바람직하지 않은 계정 사용법이다.

 

그러면 적절한 권한을 갖고 있는 개발용 계정을 생성해서 사용해야하고

그래서 지금은 계정 생성 및 삭제, 권한 부여 방법 등에 대해서 살펴볼 시간이다.

 

 

0. Environment

  - [PostgreSQL을 Docker로 설치하자](https://www.whatwant.com/entry/PostgreSQL-Docker)

 

 

1. psql

  - docker 환경에 특화된 내역이긴 하지만, 기록 차원에서 남긴다.

 

❯ docker exec -it postgres /bin/bash

root@d0b1fa1bb2b1:/# psql -U postgres

psql (14.2 (Debian 14.2-1.pgdg110+1))
Type "help" for help.

postgres=# 

 

 

2. 계정 및 권한 확인

  - `\du`

 

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

 

 

3. 계정 생성

  - `CREATE USER [username] WITH LOGIN PASSWORD '[password]';`

 

postgres=# CREATE USER whatwant WITH LOGIN PASSWORD 'xxxxxxxx';

CREATE ROLE


postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 whatwant  |                                                            | {}

 

 

  ▶ Attributes of ROLE

     - 기본값은 `NO-` 속성들이다.

 

SUPERUSER or NOSUPERUSER SUPERUSER 여부
CREATEDB or NOCREATEDB DATABASE를 만들 수 있는 권한
CREATEROLE or NOCREATEROLE ROLE을 만들 수 있는 권한
LOGIN or NOLOGIN LOGIN 허용 여부
INHERIT or NOINHERIT 상속 가능 여부
REPLICATION or NOREPLICATION 복제 권한
BYPASSRLS or NOBYPASSRLS RLS(Row-Level Security) 무시 여부
PASSWORD [password] 패스워드
 VALID UNTIL [timestamp] 패스워드의 유효기간
IN ROLE [role_name] or IN GROUP [role_name] 지정한 ROLE의 구성원으로 포함
ROLE [role_name] or GROUP [role_name] 지정한 ROLE 부여
ADMIN [role_name] 윗 줄의 ROLE 속성 + WITH ADMIN

 

 

4. 권한 부여

  - DATABASE를 하나 생성하고 그에 따른 권한을 부여해보자

 

postgres=# CREATE DATABASE my_db WITH OWNER whatwant ENCODING 'UTF8';

CREATE DATABASE



postgres=# GRANT ALL PRIVILEGES ON DATABASE my_db TO whatwant;
GRANT

 

  ▶ Permission

     - 잘 모르는 내용도 있지만, 일단 리스트업 해본다.

 

SELECT 데이터 조회. UPDATE/DELETE 하려면 포함 필요
INSERT 데이터 추가
UPDATE 데이터 수정
DELETE 데이터 삭제
TRUNCATE 데이터 모두 삭제
REFERENCES 외래키 제약 조건 생성
TRIGGER 트리거
CREATE 스키마 생성
CONNECT 데이터베이스 연결
TEMPORARY 임시 테이블 생성
EXECUTE 함수/프로시저 연산자 허용
USAGE 스키마 객체 접근 허용
ALL PRIVILEGES 모든 권한

 

 

 

pgAdmin4로 확인해보자.

 

 

여기까지...

 

반응형

 

PostgreSQL을 시스템에 직접 붙어서 `psql`을 이용해서 다루는 것도 좋지만,

개인적으로 Web Interface를 통해서 database의 현황을 살펴보는 것을 좋아하기에

PostgreSQL을 설치하고 난 다음에 바로 찾아본 것이 바로 `pgAdmin4`이다.

 

깔끔한 설치를 위해 Docker로 한 번 설치해봤다.

 

 

0. PostgreSQL 설치

  - [PostgreSQL을 Docker로 설치하자](https://www.whatwant.com/entry/PostgreSQL-Docker)

 

 

1. pgAdmin4 설치

  - 그냥 바로 실행하자.

  - email 주소와 password는 각자 취향에 다라 지정해주면 된다.

 

❯ sudo docker run -p 5050:80 -e 'PGADMIN_DEFAULT_EMAIL=abc@email.com' \
                        -e 'PGADMIN_DEFAULT_PASSWORD=password' -d dpage/pgadmin4

Unable to find image 'dpage/pgadmin4:latest' locally
latest: Pulling from dpage/pgadmin4
59bf1c3509f3: Pull complete 
6e9ec7ad2b67: Pull complete 
a0e18fcb2977: Pull complete 
fd2b27e2842d: Pull complete 
51136bc64bc0: Pull complete 
f64eecb587f3: Pull complete 
9cb5237d6528: Pull complete 
facb2de54b7c: Pull complete 
2c30d334d2ee: Pull complete 
27b8ff406ea1: Pull complete 
b87dab9776e7: Pull complete 
3e9a234b4839: Pull complete 
160949aa8885: Pull complete 
02526e9b4604: Pull complete 
Digest: sha256:3a2f4533b0e33baa09260ce02d0912058881c55cef800b73219e19b0a9d75658
Status: Downloaded newer image for dpage/pgadmin4:latest
4fb11f1a591ed35244b6db9045b844cae781ca3b59c54006b172805567dd1326

 

 

2. Connect

  - http://127.0.0.1:5050/

  - 실행할 때 입력한 email 주소와 password를 이용해서 로그인 하면 된다.

 

 

 

3. Add New Server

  - PostgreSQL 서버를 등록해주자.

 

 

  - name 하나 지어주고,

 

 

  - Connection 정보를 입력해주자.

  - `localhost`, `127.0.0.1`로 지정하면 연결이 안된다. IP 적어주자.

  - `Username`과 `Password` 제대로 입력하고 Save 하면 된다.

 

 

  - 이제 짠~

 

 

 

일단 여기까지~

 

반응형

 

개발을 하는 중에 PostgreSQL을 개발PC에 설치할 필요가 생겼는데

그냥 설치하기에는 개발PC가 지저분해질까봐 Docker를 이용해서 설치하려고 한다.

 

[ 개발PC 환경 ]

  - 운영체제: Ubuntu 18.04.6 LTS

  - docker: Docker version 20.10.12, build e91ed57

 

 

사실 포스팅을 굳이 해야할까 싶을 정도로 너무 간단하게 설치가 된다.

 

 

1. Docker Volume 생성

  - 데이터를 조금이라도 안전하게 보관하기 위해서 별도 volume으로 관리하자.

  - 실제 저장 위치도 확인해 볼 수 있다.

 

❯ docker volume create postgres_data

postgres_data


❯ sudo ls -al /var/lib/docker/volumes/

합계 40
drwx-----x  4 root root  4096  3월 21 21:14 .
drwx--x--- 13 root root  4096  3월 21 20:12 ..
brw-------  1 root root  8, 1  3월 21 20:12 backingFsBlockDev
-rw-------  1 root root 32768  3월 21 21:14 metadata.db
drwx-----x  3 root root  4096  2월 13 03:22 portainer_data
drwx-----x  3 root root  4096  3월 21 21:14 postgres_data

 

 

2. run PostgreSQL

  - 실행은 한 줄이면 된다 ^^

  - password는 각자 취향에 맞게 작성하면 된다.

 

❯ docker run -d -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password \
                 -v postgres_data:/var/lib/postgresql/data postgres

Unable to find image 'postgres:latest' locally
latest: Pulling from library/postgres
ae13dd578326: Pull complete 
723e40c35aaf: Pull complete 
bf97ae6a09b4: Pull complete 
2c965b3c8cbd: Pull complete 
c3cefa46a015: Pull complete 
64a7315fc25c: Pull complete 
b9846b279f7d: Pull complete 
ed988fb8e7d9: Pull complete 
ed4bb4fd8bb5: Pull complete 
ead27f1733c8: Pull complete 
7d493bacd383: Pull complete 
0920535e8417: Pull complete 
db76d5bdbf2c: Pull complete 
Digest: sha256:d1db54eade17ebfaa6cfdca90c83f8cb0d54bcceb1270a0848e0b216d50c325c
Status: Downloaded newer image for postgres:latest
d0b1fa1bb2b1b580e96e1790b6f7bebfcfdc88c885c35e1af57d82379e5df7b7

 

 

3. psql

  - 이대로 끝내면 서운하니까 psql 까지만 접속해보자.

 

❯ docker exec -it postgres /bin/bash

root@d0b1fa1bb2b1:/# psql -U postgres

psql (14.2 (Debian 14.2-1.pgdg110+1))
Type "help" for help.

postgres=# 

 

 

 

여기까지~

반응형

 

리눅스를 CLI 방식으로 원격 접속하는 것은 비교적 쉽다.

`openssh-server` 설치 후에 사용자 계정으로 접속하면 끝이다.

 

그런데, 리눅스에서 GUI 방식으로 접속하는 것은 쉽지 않다.

 

Windows 환경에서는 원격데스크탑(mstsc) 이용하면 끝인데,

리눅스에서는 뭔가를 설치하고 설정을 해줘야 한다.

 

프로그램의 선택지도 다양하다.

- TightVNC

- RealVNC

- TeamViewer

- xrdp

- https://en.wikipedia.org/wiki/Comparison_of_remote_desktop_software

 

 

그런데, Windows에서의 원격데스크탑은

본래 사용하고 있던 화면 그대로의 모습으로 작업하던 세션 그대로 연결이 되는데

위에서 언급한 대부분의 리눅스 원격데스크탑 도구들은 그렇지가 않다.

 

그러던 중 알게된 vino

다른 사람들은 다 알고 있었는데, 나만 몰랐나!?

구글 검색을 해보니 아직 그다지 많은 자료가 없는 것으로 보아 아직 유명하지는 않은 것 같다.

 

 

 

1. Install

  - 기본 설치되어 있다. 혹시 모르니 그래도 한 번 더 확인!

❯ sudo apt install vino

패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
패키지 vino는 이미 최신 버전입니다 (3.22.0-3ubuntu1.2).
vino 패키지는 수동설치로 지정합니다.
0개 업그레이드, 0개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.

 

2. Settings

  - 기본 설정 화면에서 확인할 수 있다.

  - 암호 설정을 하면 된다.

  - 하지만, 암호 길이 제한일 비롯해서 추가적인 설정을 하려면 `dconf-editor`가 필요하다.

 

 

3. dconf-editor

  - 마찬가지로 설치는 쉽다.

❯ sudo apt install dconf-editor
  
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
  dconf-editor
0개 업그레이드, 1개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.

  - 설치한 dconf-editor를 실행하자.

  - `/org/gnome/desktop/remote-access` 파일을 편집하자

  - `require-encryption` 항목을 꺼주자. 보안상 문제의 여지가 있지만 이 부분은 좀 더 알아보기로 하고...

  - 만약 password를 8자 이상 사용하고 싶으면 base64 encoding 해서 `vnc-password` 항목에 넣어주면 된다.

 

 

4. VNC Viewer

  - 사용하지 않았던 것으로 해보련다.

    . ultraVNC - https://uvnc.com/

  - Viewer로만 사용할거니 그에 맞게 설치하면 된다.

 

 

5. Connect

  - 이제 연결할 일만 남았다.

  - IP만 쓰고 Connect 하면 된다. 세부 옵션을 사용하고 싶으면 `Show Options`

  - 앞에서 입력해놓은 패스워드 사용

  - 정말 원하는대로 나온다!!!

 

 

정말 손쉽게 사용할 수 있다. 강추 !!!

 

반응형

라떼는 ... Python 버전이 2.x 인지 아니면 3.x 인지만 따지면 됐었는데,

요즘은 ... 3.6 이어도 충분한지 3.7 또는 3.8 호환인지도 따져야 하는 (더러운까지는 아니고) 아주 머리아픈 세상이다.

 

그래서 지금까지는 Ubuntu 환경으로 구축해놓은 개발PC 에서

기존에 JDK에서 사용하던 방식처럼 Python도 alternative 방식으로 원하는 버전을 선택해서 사용했었다.

 

  - https://www.whatwant.com/entry/update-alternatives-여러-버전의-패키지-관리하기

 

 

가볍게 사용하기에는 alternative 방식도 나름 괜찮은 방법이다.

하지만, Python에서는 JDK에서는 만나지 못했던 문제 상황이 발생한다.

작성한 프로그램에서 필요로 하는 패키지들이 있고, 서로간의 dependency까지 신경을 써줘야 한다.

 

패키지 관리에 대한 것은 다음 기회에 살펴보기로 하고,

지금은 일단 여러 버전의 Python을 편하게 사용할 수 있는 방법에 대해서 알아보도록 하겠다.

 

 

[ pyenv ]

  - https://github.com/pyenv/pyenv

 

pyenv

 

왜 이제서야 이 아이를 알게 되었을까!?

진작 알았더라면 훨씬 편하게 살 수 있었을 텐데...

 

이하 과정은 `Ubuntu 18.04` 운영체제에서 `zsh` 쉘환경을 기준으로 진행했다.

일부 차이가 나는 부분에 대해서는 pyenv 사이트에 나오는 가이드를 참고하면 된다.

 

 

1. Environment

 

Ubuntu 패키지로 제공되는 Python2, Python3 모두 설치되어 있으며,

버전 관리를 위해 update-alternatives 설정이 되어 있다.

❯ python --version
Python 3.6.9

❯ sudo update-alternatives --list python

/usr/bin/python2
/usr/bin/python3

❯ sudo update-alternatives --list pip   
/usr/bin/pip3

 

 

2. Prerequisites

 

① remove alternative

alternative가 설정된 상태에서 pyenv는 정상 동작하지 않기에 설정을 지워야 한다.

❯ sudo update-alternatives --remove python /usr/bin/python

❯ sudo update-alternatives --remove pip /usr/bin/pip

 

② install the Python build dependencies

Python build를 위해 필요한 의존성 패키지들을 설치해주자. 좀 많이 설치된다.

❯ sudo apt install make build-essential libssl-dev zlib1g-dev \ 
                        libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
                        libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

 

 

3. Basic GitHub Checkout

 

여러 설치 방법 중에서 가장 깔끔하고 무난한 방법이라서 선택했다.

 

① git clone

❯ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

 

② build

꼭 해야하는 과정은 아니지만, 성능 향상을 위해서 추천한다.

❯ cd ~/.pyenv && src/configure && make -C src
make: 디렉터리 '/home/chani/.pyenv/src' 들어감
gcc -fPIC     -c -o realpath.o realpath.c
gcc -shared -Wl,-soname,../libexec/pyenv-realpath.dylib  -o ../libexec/pyenv-realpath.dylib realpath.o 
make: 디렉터리 '/home/chani/.pyenv/src' 나감

 

③ Configure your shell's environment for Pyenv

여기에서는 zsh 환경에 대해서만 진행한다. 다른 쉘을 사용한다면 GitHub 사이트 방문해서 참고하면 되겠다.

아! MacOS의 zsh 환경에서는 .profile 부문만 빼고 진행하면 된다.

> echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zprofile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zprofile
echo 'eval "$(pyenv init --path)"' >> ~/.zprofile

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile

echo 'eval "$(pyenv init -)"' >> ~/.zshrc

 

④ 재로그인 / 재부팅

로그아웃 후에 다시 로그인 하거나, 재부팅을 해야 이하 과정이 제대로 진행된다.

 

⑤ 확인

제대로 설치되었는지 확인해보자. 아래 결과가 나오지 않으면 위의 과정을 다시 한 번 점검해보기 바란다.

❯ pyenv versions
* system (set by /home/chani/.pyenv/version)

 

 

4. Python Install

 

이제 새로운 버전의 Python을 설치해보자.

현재 다운로드 받을 수 있는 버전들을 확인하고 싶으면 아래 사이트를 참고하기 바란다.

  - https://www.python.org/downloads/

 

① Python Install

❯ pyenv install 3.8.12
Downloading Python-3.8.12.tar.xz...
-> https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tar.xz
Installing Python-3.8.12...
Installed Python-3.8.12 to /home/chani/.pyenv/versions/3.8.12

 

② 확인

방금 설치한 3.8.12 버전을 볼 수 있다. (하지만 현재 설정된 것은 system에 설치된 버전이다)

❯ pyenv versions
* system (set by /home/chani/.pyenv/version)
  3.8.12

 

③ 추가

3.9 버전도 추가로 설치해보자.

❯ pyenv install 3.9.10
Downloading Python-3.9.10.tar.xz...
-> https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tar.xz
Installing Python-3.9.10...
Installed Python-3.9.10 to /home/chani/.pyenv/versions/3.9.10

❯ pyenv versions
* system (set by /home/chani/.pyenv/version)
  3.8.12
  3.9.10

 

 

5. command

 

전체 명령어에 대한 가이드는 아래 링크를 참조하기 바란다.

  - https://github.com/pyenv/pyenv/blob/master/COMMANDS.md

 

주로 사용할 것은 local / global / shell 이지 않을까 싶다.

❯ cd /srv/workspace/pyenv-test

❯ pyenv versions
  system
* 3.8.12 (set by /home/chani/.pyenv/version)
  3.9.10

❯ ls -al
합계 8
drwxrwxr-x 2 chani chani 4096  3월 14 23:01 .
drwxr-xr-x 4 chani chani 4096  3월 14 23:00 ..

❯ pyenv local 3.9.10

❯ ls -al
합계 12
drwxrwxr-x 2 chani chani 4096  3월 14 23:03 .
drwxr-xr-x 4 chani chani 4096  3월 14 23:00 ..
-rw-rw-r-- 1 chani chani    7  3월 14 23:03 .python-version

❯ pyenv versions
  system
  3.8.12
* 3.9.10 (set by /srv/workspace/pyenv-test/.python-version)

❯ pyenv local --unset

❯ ls -al
합계 8
drwxrwxr-x 2 chani chani 4096  3월 14 23:04 .
drwxr-xr-x 4 chani chani 4096  3월 14 23:00 ..

❯ python --version
Python 3.8.12

❯ pyenv versions
  system
* 3.8.12 (set by /home/chani/.pyenv/version)
  3.9.10

 

이제 Python 버전의 괴로움에서 벗어나자~~~!!!

 

반응형

 

컴퓨터공학 전공한 분들도 읽어야 하는 AI에 대한 인문학 도서!

사실 우리 파트장님, 팀장님에게 추천하고 싶은 책!

 

표지

 

어떻게 ML(머신러닝)을 하는지, PyTorch를 어떻게 사용하는지에 대한 책이 아니다.

목차 1

 

AI는 무엇이며, 역사는 어떻게 되었는지

그리고 Machine Learning과 Deep Learning은 어떤 차이가 있는지 등에 대해서 친절하게 쉽게 이야기해주는 책이다.

 

목차 2

 

책의 뒤에서는 AI로 어떤 것까지 가능하며

산업 분야별로 AI가 어떻게 도입될 것인지 어떻게 활용하는지에 대한 내용도 있다.

 

전문가 시스템

 

설명을 위해 중간 중간 그림도 삽입되어 있는데,

부담없이 보고 읽고 이해하기 쉽게 잘 정리되어 있다.

 

겨울

 

풀컬러는 아니라서 조금 아쉽기는 하지만 (개인적인 취향으로 알록 달록한 것을 좋아해서 ^^)

그래도 보기에 괜찮다.

 

그리고 책의 구성이 질문 형식의 화두를 던지고

그에 대한 답을 하는 방식으로 친절하게 설명하는 방식이라서 읽고 이해하기가 수월하다.

 

 

개발자로써 최근 AI/ML에 대해서 공부를 하고 있기에

Tensorflow, PyTorch, CNN, RNN 등에 대해서 알려주는 책들은 많이 봤지만

이처럼 AI에 대한 전반적인 설명이나 산업에 있어서의 AI에 대한 트렌드를 설명해주는 책은 처음이었다.

 

이 책을 보면서 계속 머릿속에 드는 생각은

AI/ML에 대해서 공부를 따로 하지 않은

우리 윗분들이 꼭 한 번 읽어봤으면 좋겠다라는 것이었다.

 

분명 기준 S/W 개발과는 차이가 있는 분야임에도 불구하고

AI/ML 과제를 S/W 개발 경험 밖에 없는 분들이 PL 역할을 하곤 한다.

 

이런 분들에게 이제와서 AI/ML 공부를 하라고 하는 것은 사실 무리이고

최소한 이 책에서 나온 정도의 상식은 갖췄으면 하는 바램에

이 책을 추천한다.

 

물론 AI/ML 개발 또는 연구하는 분들에게도 추천하는 책이다!

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

반응형

 

# Background Description

파일 서버 용도로 사용하던 PC의 운영체제가 Windows XP 였는데,

더이상 기술지원이 안된다고 하여서

이번 기회에 Ubuntu 20.04로 갈아타게 되었다.

 

 

# Issues

기존 부터 사용해오던 공유폴더를 사용해서

Windows PC와 파일을 계속 주고 받고 싶다.

 

 

# Environment

## Windows PC

- Edition: Windows 10 Pro

- Version: 21H1

 

## Linux PC

- Distribution: Ubuntu

- Version: 20.04

 ❯ lsb_release -a

 No LSB modules are available.
 Distributor ID: Ubuntu
 Description: Ubuntu 20.04.3 LTS
 Release: 20.04
 Codename: focal


 ❯ uname -a

 Linux HP 5.13.0-28-generic #31~20.04.1-Ubuntu SMP Wed Jan 19 14:08:10 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

 

# SAMBA

## install

- apt를 이용해서 손쉽게 설치할 수 있다.

❯ sudo apt install samba

 패키지 목록을 읽는 중입니다... 완료
 의존성 트리를 만드는 중입니다       
 상태 정보를 읽는 중입니다... 완료
 다음의 추가 패키지가 설치될 것입니다 :
   attr ibverbs-providers libboost-iostreams1.71.0 libcephfs2 libibverbs1 librados2 librdmacm1 python3-crypto
   python3-dnspython python3-gpg python3-markdown python3-packaging python3-pygments python3-pyparsing
   python3-samba python3-tdb samba-common samba-common-bin samba-dsdb-modules samba-vfs-modules tdb-tools
 제안하는 패키지:
   python-markdown-doc python-pygments-doc ttf-bitstream-vera python-pyparsing-doc bind9 bind9utils ctdb ldb-tools
   ntp | chrony smbldap-tools winbind heimdal-clients
 다음 새 패키지를 설치할 것입니다:
   attr ibverbs-providers libboost-iostreams1.71.0 libcephfs2 libibverbs1 librados2 librdmacm1 python3-crypto
   python3-dnspython python3-gpg python3-markdown python3-packaging python3-pygments python3-pyparsing
   python3-samba python3-tdb samba samba-common
   samba-common-bin samba-dsdb-modules samba-vfs-modules tdb-tools
 0개 업그레이드, 22개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
 10.5 M바이트 아카이브를 받아야 합니다.
 이 작업 후 70.2 M바이트의 디스크 공간을 더 사용하게 됩니다.
 계속 하시겠습니까? [Y/n]

 

## add user

- SAMBA 사용을 허가해줄 계정을 등록해줘야 한다.

- 해당 계정은 실제 계정을 사용해야 한다(Linux 계정).

❯ sudo smbpasswd -a (username)

 New SMB password:
 Retype new SMB password:
 Added user (username).

 

## set Config

- SAMBA 설정 파일 백업 먼저 하고 수정 해보자.

❯ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.220209

❯ sudo nano /etc/samba/smb.conf

- 기본적인 옵션 설명은 아래와 같다.

옵션 value 설명
comment (text) 공유 폴더에 대한 설명
path (text) 공유 폴더 경로
read only yes/no 공유 폴더를 읽기 전용으로 설정
writable, write ok yes/no 공유 폴더를 쓰기 가능으로 설정
valid users (id, id, ...) 공유 폴더 접근 가능 유저 목록
write list (id, id, ...) 공유 폴더 쓰기 가능 유저 목록
public, guest ok yes/no 게스트 이용 가능 여부
browsable yes/no 파일 목록을 보여줄 것인지 여부
printable yes/no 프린터 스풀 파일 지정
create mask, create mode (0644 / 0777 / ...) 생성 권한
force group (group, group, ...) 접근 가능 그룹 지정
directory mask (0644 / 0777 / ...) 공유 폴더 권한

- SAMBA 설정 파일 내용 샘플은 아래와 같다.

- 기존 내용의 제일 밑에 작성하면 된다.

...
[2022]
comment = whatwant's fileserver in 2022 
path = /srv/4t-1/2022      
browsable = yes
writeable = yes
read only = no
create mode = 0777
directory mode = 0777
public = yes
valid users = whatwant

- `smb.conf` 파일을 수정했으면, 서비스 재시작을 해줘야 한다.

❯ sudo service smbd restart

 

 

# Use

- 윈도우 PC에서 접근 해보자.

smb

- `2022` 디렉토리를 더블클릭하면, 다음과 같이 인증 요구 창이 나온다.

passwd

- 앞에서 등록한 패스워드로 인증하면 된다.

 

반응형

 

# Portainer ?

  - `Docker 관리를 위한 GUI 도구`로 시작해서 지금은 K8s, Azure ACI에 대한 지원까지 확장되고 있다.

  - https://www.portainer.io/

 

 

# 설치 환경

  - Ubuntu 20.04, Docker 20.10.12

❯ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal

❯ docker --version
Docker version 20.10.12, build e91ed57

 

 

# Install Portainer with Docker on Linux

  - Reference: https://docs.portainer.io/v/ce-2.11/start/install/server/docker/linux

 

① create volume

  - portainer에서 사용할 volume을 생성하고 잘 생성되었는지 확인해보자

❯ docker volume create portainer_data
portainer_data

❯ docker volume ls
DRIVER    VOLUME NAME
local     portainer_data

 

② install portainer

  - docker를 이용해 portainer를 설치하고 결과까지 확인해보자

❯ docker run -d -p 8000:8000 -p 9443:9443 --name portainer \
    --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    portainer/portainer-ce:2.11.0
Unable to find image 'portainer/portainer-ce:2.11.0' locally
2.11.0: Pulling from portainer/portainer-ce
0ea73420e2bb: Pull complete 
c367f59be2e1: Pull complete 
b71b88d796e2: Pull complete 
Digest: sha256:4f126c5114b63e9d1bceb4b368944d14323329a9a0d4e7bb7eb53c9b7435d498
Status: Downloaded newer image for portainer/portainer-ce:2.11.0
92f2bb51b10e3eb9bb09dd7f1731abd8796a8e1611cd42ef1d30b472472d7e13

❯ docker ps
CONTAINER ID   IMAGE                           COMMAND        CREATED          STATUS          PORTS                                                                                            NAMES
92f2bb51b10e   portainer/portainer-ce:2.11.0   "/portainer"   39 seconds ago   Up 25 seconds   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp, 9000/tcp   portainer

 

③ login

   - `https://localhost:9443` 또는 `https://IP:9443` 주소를 통해 웹 접근 해보자

비공개

  - 인증서 문제로 위와 같은 화면이 나오는데, `고급` 버튼을 누르고 `192.168.100.100(안전하지 않음)` 클릭!

passwd

  - 그리고, 관리자 패스워드 설정을 진행하면 된다

Get Started

  - 다른 서버도 같이 관리할 수 있지만, 지금 우리는 local만 관리할 것이기 때문에 `Get Started`를 클릭하면 된다

Home

  - local 밖에 없으니 하나 밖에 보이지 않는 것이 당연하고, `local`을 클릭해보자

local

 

너무나 깔끔하고 좋다~

 

반응형

+ Recent posts