리눅스/유닉스 개발환경은 백엔드 개발자들에게 익숙한 개발 환경이다.
요즘은 Windows나 macOS에서도 비슷한 환경을 제공한다.
터미널로 서버 환경에 원격으로 접속해서 원하는 작업을 할 수 있도록 친숙해져야 한다.
리눅스를 직접 설치해서 셸 환경에 익숙해지고 스크립트로 원하는 동작을 자동화 해보자.
sudo apt update
sudo apt install openssh-server # ssh의 한 종류
sudo ufw allow ssh # 방화벽 해제 (un fire wall의 약자인듯 하다)
sudo service ssh start # ssh 서비스 시작
ip a # ip를 볼수 있다.
클라이언트단에서도 ssh-client를 설치해야 하지만 요새는 다 이미 깔려있다고 한다.
이제 ssh [사용자이름]@[ip 주소] 명령어를 통해 서버에 접속할 수 있다.
리눅스 계정 추가
sudo adduser [사용자이름] #하면 비번 설정까지 같이 뜬다.
리눅스 계정 변경
exit # 로그아웃
su [사용자명] # 해당 사용자로 로그인
리눅스 계정 권한 설정
vi /etc/sudoers # sudoers 파일 실행해서 변경, 변경전에 접근권한 변경해야함
mkdir [디렉토리 명] # 현재 디렉토리에 디렉토리 생성
ls -l # 현재 디렉토리 내의 파일 권한 확인
lscpu # cpu 정보 확인
cat # 파일 내용 표시
pwd # 현재 디렉토리 표시
find 디렉토리 -name [파일이름] # 지정 디렉토리와 그 하위 디렉토리에서 해당 파일을 검색
whoami # 현재 사용자 반환
ctrl + z # 현재 실행중인 프로세스 종료
vi [파일 명] # vi 모드로 파일 실행
# 커서이동 h(좌) j(하) k(상) l(우)
i # 입력모드로 변경
esc # 커맨드 모드로 변경
:w # 저장
:q # 나가기
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
리눅스 계열의 운영체제들은 대부분 다중 사용자 시스템이 잘 되어 있다.
(옛날엔 컴퓨터가 비쌌기 때문에 여러명이서 썼다고 한다.)
하지만 여러 사용자가 사용하다보면 다른 사용자의 파일을 건드릴 수 있는 문제가 있었고
이를 해결하기 위해 permission이라는 권한 기능이 생겨났다.
권한을 관리하기 위해 super user(=root)가 필요했지만
평상시에도 super 권한을 가지고 있는 것은 위험했다.(ex. rm -rf /)
-> 평상시엔 일반권한을 가지다가 sudo 키워드를 사용한다.
(sudo의 어원이 super user do라는 설도 있다.)
권한 설정 부분에서 chmod 다음에 들어오는 숫자가 d나-를 제외한 rwx의 유무를 이진법으로 계산한 것 같아 테스트 해봤는데 생각한대로 나왔다.
ex
-r--r--r-- = 444
-rw-r-x-wr = 653