[ 디렉토리와 파일 ]
1. 리눅스는 대소문자 구분함 ( 윈도우는 상관없음 )
2. 파일 또는 디렉토리 이름이 .으로 시작하면 숨김 파일이다.
3. 모든 작업은 ~$에서 한다. ( 이동 cd )
[ 리눅스 파일의 종류와 특징 ]
장치파일 : 리눅스에서는 하드 디스크나 키보드 같은 각종 장치도 파일로 취급한다.
→ 프로그래밍을 함수를 사용해서 처리할 수 있도록 하려고
< 디렉토리 계층 구조 >
리눅스는 mount 라는 개념이 존재해서 전체를 하나로 볼 수 있다. → 루트(/)부터 출발
* 윈도우는 하드웨어 장치별로 파일 시스템을 따로 만든다. ex) C,D 드라이브
mount : 디스크 같은 물리적인 장치를 특정 위치( 디렉토리 )에 연결시켜주는 것
① HOME 디렉토리 : 사용자는 모두 HOME 밑으로 생성이 된다. → 각 사용자들의 집이라 생각하면됨.
* 처음 리눅스에 접속했을 때 나오는 화면이 HOME 디렉토리이다.
* ~가 HOME 디렉토리를 의미한다.
* . : 현재 디렉토리
.. : 부모 디렉토리
/ : 루트 디렉토리
* $ : 현재 사용자가 접속
# : root 사용자가 접속
② bin 디렉토리 : bin 디렉토리 밑에 있는 파일들은 다 명령어이다.
→ bin : 실행 파일 ( 명령 )을 가지고 있다.
③ etc 디렉토리 : 리눅스에 대한 모든 설정 파일이 들어있다. → 중요한 파일
일반 사용자가 etc 디렉토리 밑에 있는 파일에 대해서 read 하는 것은 가능하지만 write 하는 것은 불가능하다.
→ permission denied
* root 사용자일 경우 etc 디렉토리에 대해 write 권한이 있기 때문에 일반 사용자에서 작업을 해야한다.
④ tmp : 임시 파일이 들어있다. ( 쓰레기 값은 재부팅하면 모두 삭제 된다. )
⑤ lib : 라이브러리가 들어있다.
< 경로명 >
① 절대 경로 : 루트부터 시작하는 경로
② 상대 경로 : 현재 디렉토리를 기준으로 시작하는 경로
[ 사용자 관리 ]
사용자 관리는 root / 슈퍼 사용자가 하는 일이다. → 슈퍼 사용자는 권한이 있다.
* bash shell : 가장 많이 사용하는 shell
* 파일을 한 사람이 작업하더라도 모든 파일에는 그룹이 존재한다. ex) cat /etc/group
[ 리눅스 파일 / 디렉토리 명령어 ]
1. clear : 화면 clear
2. history : ↓,↑를 사용해서 전에 사용했던 명령어를 확인할 수 있다.
* history는 shell이 관리한다.
3. ls -F [ 디렉토리명 ] : 디렉토리에 있는 파일을 보여달라
* 디렉토리명을 검색할 때는 앞에 반드시 /를 붙여야한다. → /dev : root 밑에 있는 dev 파일을의미
/를 붙여주지 않는다면 현재 디렉토리 밑에 있는 디렉토리를 의미해서 원하는 결과를 확인 못 할 수도 있다.

4. pwd : 현재 작업하고 있는 디렉토리 위치를 알려준다. ( print working directory )
* 내가 작업하고 있는 디렉토리는 작업 디렉토리 ( working directory )라고 한다.

5. cd : 디렉토리 이동 → $ 앞은 working directory를 의미한다.
* 다시 HOME 디렉토리로 이동하고 싶을 경우에는 cd만을 입력하면 된다.
6. ls : 디렉토리의 내용 출력
-a : all → 숨김 파일을 포함해서 출력 * 숨김 파일은 앞에 .이 붙여져 있다.
-l : long → 파일의 상세 정보를 출력한다.

* 리눅스는 모든 파일에 대해 소유자와 그룹이 존재한다.
* ls 명령어은 옵션을 붙여서 사용이 가능하다. ( 순서는 상관 없다. )
* 링크 : 파일은 하나인데 이름이 여러 개일 경우
7. mkdir : 디렉토리 생성
* 생성한 디렉토리에서 ls -al을 입력하면 .와 .. 디렉토리 2개만 존재 → 현재 디렉토리와 부모 디렉토리

8. rmdir : 디렉토리 삭제
* 디렉토리가 비어있지 않다면 삭제 불가능
9. cat : 파일의 내용을 출력한다. ex) cat /etc/hosts, cat /etc/passwd
* 127.0.0.1 : localhost( 자신의 호스트 주소 )를 의미
→ 모든 컴퓨터의 IP 주소는 다르기 때문에 127.0.0.1이라는 자기 자신을 의미하는 IP 주소가 존재한다.
10. more : 한 페이지씩 파일의 내용을 출력한다. ( 스페이스로 페이지 넘기기 가능 )
11. tail : 파일의 뒷 부분 일부만 출력
head : 파일의 앞 부분 일부만 출력
12. cp : 파일이나 디렉토리를 복사
cp [ source ] [ destination ]
ex) cp /etc/hosts text1 → /etc/hosts에 있는 내용을 text1으로 복사한다.
① cp 파일 파일 : 확장자가 같으므로 그대로 복사가 된다.
② cp 파일 디렉토리 : 디렉토리 안에 똑같은 이름의 파일이 생성이 된다.
디렉토리가 복사될 경우 원본 디렉토리 밑에 있는 내용도 모두 복사가 된다.
-r : recursive → 디렉토리를 복사할 경우 -r 옵션을 사용해야한다.
cp -r [ source 디렉토리 ] [ destination 디렉토리 ]
13. mv : 파일을 이동하거나 이름을 변경한다. ( rename )
mv 파일 [ 이동할 디렉토리 ]
mv [ 기존 파일 ] [ 변경할 이름의 파일 ]
14. rm : 파일이나 디렉토리를 삭제한다.
rm [ 삭제할 파일 / 디렉토리 ]
* 디렉토리를 삭제할 경우 안에 파일이 존재하면 삭제가 되지 않는다. → -r 옵션 사용
-r : 디렉토리 안에 파일이 존재할지라도 상관없이 다 삭제해버린다.
15. 링크 : ln
링크는 기존에 존재하던 데이터에 이름만 추가로 붙이는 것이다. → 명령어를 실행하면 하드 링크 수가 증가한 것을
확인할 수 있다.
ln [ 기존 데이터 ] [ 새로운이름 ]

링크 파일을 삭제해도 기존 파일은 그대로 남아있고 삭제한 만큼 하드 링크 수도 줄어들어 있다.

[ 사용자 관리 명령어 ]
1. who : 사용자 로그인 정보 확인하기
2. w : 현재 시스템을 사용하는 사용자의 정보와 작업 정보를 출력
3. whoami : UID 확인하기
4. su : 사용자 변경
ex) 일반 사용자에서 잠시 root 계정으로 전환할 때
일반 사용자 → root → exit → 일반 사용자
5. sudo : root 계정만이 수행할 수 있는 특정 작업을 일반 사용자가 할 수 있도록 권한을 부여
→ 슈퍼 사용자 권한으로 수행하라는 의미
사용자 관리는 일반 사용자가 할 수 없기 때문에 sudo를 사용해서 권한을 높여줘야 한다.
6. useradd : 사용자 추가
-s : 기본 셸 지정
-m : 홈 디렉토리 생성
sudo useradd -s /bin/bash -m -d /home/SW7505 SW7505
사용자가 제대로 추가됐는지 확인하는 방법으로는 ls -l 과 tail /etc/passwd를 확인해보면 된다.

* 사용자를 추가하고 추가된 사용자로 바로 로그인을 하기 위해서는 패스워드를 입력해야한다.
sudo passwd를 사용해서 새로운 사용자에 대한 패스워드를 지정해줘야지 로그인이 가능하다.
sudo passwd SW7505
* sudo adduser + 사용자 처럼 옵션없이 명령어를 사용할 경우 옵션에 대한 모든 값을 물어본다.
7. usermod : 사용자 모드 변경
sudo를 사용할 수 있는 계정은 제한되어 있으므로 sudo를 할 수 있는 계정으로 등록을 해줘야한다.
→ sudoers 파일에 계정을 추가해주면된다.
즉, sudo 권한이 있는 사용자가 sudo 권한이 없는 사용자를 등록해주면 된다.
sudo usermod -aG sudo SW7505
등록을 해주고 cat /etc/group의 sudo 그룹을 확인해보면 새로 등록된 사용자를 확인할 수 있다.

새로 등록된 사용자 계정은 서버 종료 후 다시 접속해야한다.
8. userdel : 사용자 삭제
-f : 삭제할 사용자가 접속 중일지라도 강제로 삭제한다.
-r : 삭제할 사용자의 홈 디렉토리와 메일 디렉토리를 모두 삭제
sudo userdel -rf SW7505
tail /etc/passwd를 확인해보면 삭제한 사용자는 확인할 수 없다.

'2CHAECHAE 학교생활 > OSNW실습' 카테고리의 다른 글
| [ OS/NW 실습 ] 5주차 - 네트워크 OSI 모델 7 계층 구조 (0) | 2022.10.08 |
|---|---|
| [ OS/NW 실습 ] gcc, 오브젝트 파일, 언어 계층 구조 보충 (0) | 2022.10.08 |
| [ OS/NW 실습 ] 4주차 - 파일 아카이브, 프로세스 (0) | 2022.09.30 |
| [ OS/NW 실습 ] 4주차 - 패키지 관리, 소프트웨어 컴파일 (0) | 2022.09.30 |
| [ OS/NW 실습 ] 2주차 (0) | 2022.09.21 |