일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- js 게시판
- branck 합치기
- React 자습서
- 배열 메서드
- Linux 기본
- js 생성자 함수
- React 기본설정
- node js 기본
- Object.keys
- JS DOM
- Linux 사용자
- Git
- 화살표함수
- js DOM 기초
- 콜백함수
- js 댓글
- js 함수 #함수
- 3way handshake
- css #css기초
- typescript
- js로또 만들기
- js 함수 표현식
- Rebase
- js 무한루프 슬라이드
- GitHub
- js 댓글수정
- js 메서드
- node js 설치
- nodejs 게시판
- js 로또
- Today
- Total
개발 노트
Linux // 2일차 [사용자] 본문
목차
1. 리눅스 구조 특징
2. 사용자 관련 명령어
- sudo필요 명령어
3. 사용자 그룹
- 그룹 관련 명령어
4. 파일 접근 권한 설정
5. 패키지 매니저
리눅스 구조 특징
멀티유저 = 여러 사용자가 동시에 하나의 시스템에 접근하는것이다.
리눅스에서 작동하는 <모든 파일과 디렉토리>(a.k.a 프로세스) 는 사용자에서부터 시작한다.
사용자(name1)이 파일 hello.txt 를 만들게 되면
사용자(name2)이 파일 hello.txt 를 볼 수 있게, 못 보게, 수정을 할 수 있게, 못 하게 등 하나하나 파일을 설정 할 수 있다.
모든 파일을 하나하나 설정 할 수 있기 때문에 보안에 안정적이라고 평가를 받는다.
하지만 이렇게 사용자 하나 하나에 설정을 하게 되면 어렵다. 그냥 귀찮다.
그래서 사용자들의 그룹을 만들어서 관리를 하기도 한다.
사용자 타입
리눅스에는 사용자 타입이 3가지가 존재한다
- 루트사용자 : UID 0 = supervisor 뭐든 할 수 있는 관리자.
- 시스템사용자 : UID 1~999 = 대략 1000번 이하로 아이디를 가지고 있다. 개발 할 때 필요한 프로세스가 여기 있다.
- 일반사용자 : UID 1000~ = 일반 사용자들이 만들면 1000번부터 시작한다.
** 리눅스는 설치할 때 기본적으로 root 계정이 만들어져있고, 또 하나의 일반 사용자도 생성한다.
사용자 관련 명령어
사용자를 확인하는 명령어
id
현재 사용자의 아이디와 사용자가 속한 그룹의 아이디를 포함한 정보를 보여준다
$id -u # = 현재 사용자의 아이디를 출력한다.
$id -un # = 현재 사용자의 이름을 출력한다.
**ID 는 위에서 말했던 uid의 번호이다. 사용자의 이름은 내가 입력해놓은 닉네임 같은 개념이다.
**Linux의 명령어는 어느정도 패턴이 있다. 명령어 -옵션 값의 형태를 띈다.
whoami
현재 사용자의 이름을 조회한다.
users
현재 로그인 되어 있는 전체 사용자의 정보를 조회.
- sudo필요 명령어
#사용자 생성,수정,조회를 위한 명령어
기본적으로 root 계정이 필요하다.
root 계정으로 접속을 하는 방법도 있지만, 잘못 건드릴 경우 큰일 나기 때문에(삭제 할 경우 휴지통없이 다이렉트다) 웬만하면 root의 권한만 빌려와서 사용하도록 하자. = sudo
sudo
super do
substitute user do
ShutUp and DO도 있다 기억에 잘 남는다.
useradd
새로운 사용자를 생성한다.
$useradd 이름
adduser(*) 얘를 일단 쓴다
얘도 위에 useradd와 비슷하다 새로운 사용자를 생성한다.
$adduser 이름
왜 sudo 명령어가 필요한가 ?
계정을 만들게 되면 /ect/passwd에 내용을 추가하게 된다
passwd 파일 내부 설명
tmp1:x:1001:1001:,,,:/home/tmp1:/bin/bash ":" 은 구분값이다.
tmp1 : 사용자 이름 / 앞 1001 : 사용자id / 뒤 1001: 그룹id / ,,,: 코멘트, 풀네임 등 풀네임 메모지
/home/tmp1 홈디렉토리 / bin/bash : 로그인이 되었을 때 기본적으로 적용할 shell의 위치
passwd
사용자의 패스워드를 설정할 때
사용자의 패스워드를 설정 할 때
$passwd [사용자이름]
usermod
sudo usermod [사용자이름]
사용자 수정
-s
shell 경로를 변경하고 싶은 겅우
suod usermod – s /bin/zsh tmp1
G-
그룹 아이디를 변경 할 경우
$ sudo usermod –G 그룹명
userdel
sudo userdel [사용자이름]
옵션 -r 을 사용해야 홈디렉토리 안에 있는 폴더까지 삭제한다.
사용자 그룹
리눅스에서 그룹을 통해서 파일에 관한 접근을 제한 할 수 있다.
기본적으로 name 계정명을 만들면 name 그룹이 만들어진다. 사용자를 만들면 최소한의 하나의 그룹을 가지고있
- 그룹 관련 명령어
groups
현재 로그인된 사용자가 속한 그룹 리스트를 확인한다.
$ groups 계정명
마찬가지로 계정명을 쓰면 그 계정명의 리스트를 확인 가능하다.
groupadd
새로운 그룹 생성가능 sudo 필요
$groupadd [그룹이름]
blockchain:x:1003:user1
1003 그룹 아이디
blockchain : 해당하는 유저 내용을 표현
사용자랑 같이 사용하기
$sudo adduser tmp1
$sudo usermod - G 그룹명 사용자
groupmod
기존의 그룹을 수정한다.
sudo groupmod –aG blockchain1 tmp1
groupdel
그룹을 삭제한다.
sudo groupdel 그룹명
파일 접근 권한 설정
-rw-r--r-- 1 chl chl 13 Nov 22 11:05 hello.txt
파일권한 개수 소유자 그룹명 파일사이즈 마지막 수정날짜 순서
파일 타입에 대한 설명 조회된 내용중에 파일인지 폴더인지 구분값
- - : normal file 일반파일
- d : directory
- l : link file 바로가기
- p : named pipe
- s : socket
- c : character device
- b : block device
[1]rw- r : read w : write x : execute
[2]r--
[3]r--
이렇게 띄워서 읽는다
r = 읽을 수만 있다. 4
w = 수정권한 가능 2
x = 실행 할 수 있다. 1 숫자로도 표기함
[1] : 소유자에 대한 설정
[2] : 그룹에 대한 설정
[3] : 기타 사용자에 대한 설정
chmod
해당 파일에 접근 권한을 바꿔주는 것
rwx r-x r-x를 많이 한다. 소유자 말고는 수정을 못하게하는 것
rwx = 7
r-s=x – 5
chmod 755 ./hello
ls –al | grep hello
chown
해당파일의 소유권을 바꾸는 명령어
~$ chown root:root ~/hello.txt // root 기 때문에 sudo를 붙여야한다
명령어 소유자 그룹 위치,파일명
리눅스가 보안이 강한 이유는 이렇게 하나하나 설정 할 수 있는 것도 있다.
Shell
shell도 버전이 있는데 많이 쓰는버전
bash 리눅스의 기본 세팅 기본적으로 설정이 되어 있다.
zsh 최근에 많이 쓰이는거
패키지 매니저
패키지 관리 = 새로운 소프트웨어를 설치, 업데이트 삭제하는 행위를 말함.
install 파일을 받는 행위
패키지 === 폴더
의존성
프로그램이 어떠한 다른 프로그램을 이용해서 실행이 되야 한다면 의존성이 있다고 생각하면 된다.
기존에 설정이 되어있는 패키지를 같이 다운로드 받게 하는것.
**zsh 설치
apt install zsh
cat /etc/passwd | grep chl
sudo usermod -s /bin/zsh chl
cd ~
ls al
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -o -)"
sudo apt install fonts-powerline
'Linux' 카테고리의 다른 글
Linux//github, branch합치기 (0) | 2022.11.24 |
---|---|
Linux // 3일차 [Git] (0) | 2022.11.23 |
Linux // 1일차 기본개념 (0) | 2022.11.21 |