23.06.15 : linux - 사용자, 파일 / 디렉토리 권한 변경, 프로세스, 프로그램 설치(압축파일), 이클립스 설치

이준영·2023년 6월 15일
0

🌼 시스템 버전 등 정보 알려주는 명령어들

cat /etc/issue

lsb_release -a

uname -a




🌼 사용자

🌻 /etc/passwd

사용자 계정 정보 저장된 기본 파일

master:x:1000:1000:Master,,,:/home/master:/bin/bash   --> etc/passwd 맨 밑에 내용

① 로그인 ID: 사용자 계정의 이름, 32자를 넘을 수 없으나 8자로 제한하는 것이 좋다

② x : 초기 유닉스 시스템에서 사용자 암호를 저장하던 항목, 요즘은 /etc/shadow 파일에 별도로 보관

③ UID: 사용자 ID 번호로 시스템이 사용자를 구별하기 위해 사용하는 번호
• 0~999번과 65534번은 시스템 사용자를 위한 UID로 예약(0: root, 1: daemon, 2: bin, 7: lp 등)
• 일반 사용자들은 UID 1000번부터 할당
• 로그인 ID가 다르더라도 UID가 같으면 리눅스 시스템은 같은 사용자로 판단, 따라서 UID가 중복되지 않았는
지 주의해야함

④ GID : 그룹 ID, 시스템에 등록된 그룹에 대한 정보는 /etc/group 파일에 저장

⑤ 설명 : 사용자의 실명이나 부서명, 연락처 등 사용자에 대한 일반적인 정보가 기록

⑥ 홈 디렉터리 : 사용자 계정에 할당된 홈 디렉터리의 절대 경로를 기록

⑦ 로그인 셸 : 사용자의 로그인 셸을 지정, 우분투에서는 배시 셸(/bin/bash)을 기본 셸로 사용


🌻 /etc/shadow

사용자 암호에 관한 정보를 별도로 관리하는 파일

root 권한으로 일반적으로는 읽을 수 없음 --> sudo 필요


sudo 사용, 암호 입력 하면 사용자들 암호가 암호화된 상태로 출력

① 로그인 ID : 사용자 계정 이름

② 암호(패스워드) : 실제 비밀번호가 암호화되어 저장

③ 최종 변경일 : 암호가 마지막으로 변경된 날짜를 지정, 1970년 1월 1일을 기준으로 날수를 기록

④ MIN : MIN은 암호를 변경한 후 사용해야 하는 최소 기간

⑤ MAX : 암호를 사용할 수 있는 최대 기간

⑥ WARNING : 암호가 만료되기 전에 경고를 시작하는 날수

⑦ INACTIVE : 암호가 만료된 후에도 이 항목에 지정한 날수 동안은 로그인이 가능

⑧ EXPIRE : 사용자 계정이 만료되는 날 

⑨ Flag : 향후 사용할 목적으로 비워둔 항목


🌻 /etc/group

그룹에 대한 정보가 저장

/etc/passwd 파일의 GID 항목에 지정된 그룹이 기본 그룹이며, 사용자가 속한 2차 그룹은 /etc/group 파일에 지정

① 그룹 이름 : 그룹의 이름

② x : 그룹의 암호를 저장하는 곳
• 여기에 암호화된 그룹 암호를 저장하거나 /etc/gshadow
파일에 그룹 암호를 저장

③ GID : 그룹을 식별하는 번호

④ 그룹 멤버 : 그룹에 속한 멤버들의 사용자 계정 이름이며 쉼표(,)로 사용자를 구별
• 사용자의 2차 그룹


🌻 /etc/skel

루트 권한의 파일들이 담겨있고, 이 안에 파일을 생성하면 사용자가 만들어질 때 여기 안에 담겨있는 파일들이 자동으로 생성된다. (사진 보면 skel 안의 파일과 홈 디렉토리 화면이 같은 것이 있음)



🌻 응용 : skel에 파일 추가하기

cd로 /ect/skel로 이동하고 권한 루트로 변경(sudo su) 후 파일 생성 후 나가기


tester4 추가 후 ls로 보면 readme.txt 만들어진 것 확인




🌼 다른 사용자의 정보를 얻고 싶을 때

1. 재로그인

2. 임시로 권한을 얻어내기  --> su
								su 사용자아이디 : 현재 상태(위치 변경 x)에서 잠시 사용자 아아디 빌림
                                su - 사용자아이디 : 재로그인, 사용자의 홈디렉토리로 이동

su 사용자아이디

tester3 권한을 잠시 받았지만, tester3의 권한을 빌려왔기 때문에 ~가 아님(원래 경로가 표시됨)


보통 이렇게 사용, cd로 home으로 이동해서 이 상태에서 권한 빌리기


권한 임시로 받은 상태에서도 다른 사용자의 권한 얻어낼 수 있다(주의!) - 내가 어디에 있는지 모르니까 프롬포트에서 내 상태를 잘 확인하기!

이런 경우 exit를 누르면 하나 권한에 대해 exit가 되기 때문에 내가 권한을 얻은 만큼 exit해줘서 돌아가야 한다.

처음의 계정이름 잘 확인



su - 사용자아이디

재로그인과 동일, exit 누를 시 로그아웃 되고 원래 사용자로 돌아감




🌼 사용자 삭제

sudo userdel << -- 사용자 삭제 명령어

디렉토리는 안 지워짐, passwd 가보면 지워져 있는 거 확인 (설정만 지운다)

후에 디렉토리 지우기


전부 다 지우고 싶을 때 sudo userdel -r 쓰면 전부 지워진다.
tester3 지워진 모습(권장하지는 않는다)




🌼 파일 접근 권한 보호

리눅스는 파일에 무단으로 접근하는 것을 방지하고 보호하는 기능을 제공

사용자는 자신의 파일과 디렉터리 중에서 다른 사용자가 접근해도 되는 것과 그렇지 않은 것을 구분하여 접근 권한을 제한



🌻 접근 권한 종류

3개씩 잘라서 보면 된다.( 예 : rwx r-x r-x 소유자 말고 w 기능 없음 )




🌻 chmod : 접근 권한 변경

숫자 모드

  • 숫자 모드에서는 각 권한이 있고 없고를 0과 1로 표기하고 이를 다시 환산하여 숫자로 표현
  • 카테고리별로 권한의 조합에 따라 0부터 7로 나타내는 것

2진법으로 환산하여 표현한다. (3자리 기준)

숫자모드로 권한 변경 : chmod 숫자모드 파일명

sudo mkdir dir1로 dir1 디렉토리 생성 ( home 위치기 때문에 관리자 권한 필요 )

권한이 변경되어 읽을 수 있던 디렉토리를 읽지 못하는 모습 (쓰기, 실행 등도 권한을 변경하여 적용 가능)

추가 : 읽기 권한을 주지 않으면 cat 사용할 수 없다.


쓰기 권한 주지 않으면 vi 사용시, 읽기 전용 모드 에디터가 나온다.


vi 에 ~~ 쓰면 실행권한이 없으면 실행하지 못하게 됨 -> 실행 권한 부여하여 실행 가능

이거 쓰면 실행권한 있어야 접근 가능


아예 dir1 접근도 안된다, 실행권한 부여하면 정상으로 됨



기호 모드


기호모드 변경 예




🌻 기본 접근 권한 설정

기본 접근 권한
▪ 리눅스에서는 파일이나 디렉터리를 생성할 때 기본 접근 권한이 자동적으로 설정
▪ 일반 파일의 경우 소유자는 읽기와 쓰기 권한이 설정되고 그룹과 기타 사용자는 읽기 권한만 설정
▪ 디렉터리의 경우 소유자는 읽기, 쓰기, 실행 권한이 설정되고 그룹과 기타 사용자는 읽기, 실행 권한만 설정


초기권한 : 디렉토리 777 / 파일 666(실행 권한 없는 상태)

root : 디렉토리는 755 / 파일은 644 모드로 생성

일반 사용자 : 디렉토리는 775 / 파일은 664 모드로 생성



---> umask로 인하여 부여하지 않을 권한 설정한 것


umask 값 변경



who 치면 내가 누군지 알 수 있다.




🌼 chown : 소유권 변경하기

▪ 파일이나 디렉터리는 해당 파일이나 디렉터리를 생성한 사용자의 계정과 그룹이 소유자와 소유 그룹으로 설정
▪ 파일이나 디렉터리의 소유자를 변경할 필요가 있을 때 chown과 chgrp 명령을 사용




🌼 프로세스

프로그램 실행된 상태 - > 프로세스  <-- 안에 스레드

프로세스
		부모 - 자식
        - 데몬 프로세스 : 서비스(시스템에 의해 실행되는 것)
        
        
        - 고아 프로세스 : 부모가 종료된 프로세스
        - 좀비 프로세스 : 프로세스가 종료되었는데 상태가 남아있는 것



🌻 ps : 프로세스 상태 확인

PID : 프로세스의 고유 아이디
TTY : 터미널 ( 어느 터미널에서 실행되고 있는지 )
TIME / CMD : 시간 / 명령어



vi 실행하고 sh로 빠져나와서 ps 쳐보면 vi 프로세스도 추가된 거 확인할 수 있다.


ps a : 자세한 정보 줌


ps au : 사용하는 사용자까지 표시해준다. (전면부)


ps aux | more : 보이지않는 프로세스까지 전부 표시 (보통 more로 끊어서 봄)


pps aux | grep ~~ : ~~를 찾아서 출력해줌


ps에서 -붙으면 unix 명령어 형태




🌻 프로세스 죽이기

sudo kill -9 ~~~ : ~~ 죽이기




🌻 pstree : 프로세스 구성(종속 형태 등)이 트리형식으로 나옴



너무 길어서 보통 검색하여 찾음( 해당 사진은 man이 실행되어있고 그것을 찾는 것 )




🌻 top : 현재 진행 중인 프로세스 보고 싶을 때 (중요!!)

실시간 ps 모니터링 상태, 몇 초마다 계속 replace 됨

task : 실행되는 프로세스, 좀비 프로세스 개수 등

cpu 활용 / 메모리 활용, 실시간 프로세스 확인 가능

q를 누르면 종료


바둑판 메뉴 -> 시스템 감지 들어가면 top 내용 표현된 것 볼 수 있음




🌼 자바 이용하여 프로세스 정보 가져오기

:set topstop=3 (탭 간격 3으로 줄임)

vi로 ProcessBuilderEx01.java 만들고 안에 내용 적기


sh로 잠시 나가서 실행해보기



🌻 프로세스 정보 가져오기

cp로 ProcessBuilderEx01 복사 (02 만들기)

processbuilder 객체 생성시 생성자 부분에 ps, a 넣고 BufferedReader로 한라인씩 읽어오기
(ps a는 자세한 정보 가져오는 것)




cpu(s), mib ~... 만 가져오기



🌼 전면부 / 후면부 프로세스

foreground process - 전면

background process - 후면
-> 데몬


sleep : 일시정지

일반 sleep : 숫자 초 동안 아무것도 할 수 없다
sleep 숫자 & : background 처리, 20초 동안 sleep이 실행 동시에 터미널 작성 가능


&의 자세한 예 : gedit만 사용하면 에디터만 사용 가능한데, &를 사용하면 터미널과 에디터 둘 다 동시에 사용 가능함


🌻 전면부 후면부 프로세스 교차 사용

fg ~ / bg ~

jobs 사용하면 실행 중인 것 확인 가능
bg 1 쓰면 1번 백그라운드로 바꿔서 사용한다는 뜻
fg 1은 1번 포그라운드로 바꾼다는 뜻이다.




🌼 프로그램 제공

1. 압축 파일 제공 
		소스 ( c / c++ ) : 소스파일 - 컴파일 - 설치 - 실행
        
        실행파일 : 압축해제 - 실행
        
        
2. 인스톨 파일 제공 - 패키지 관리 도구
		*배포판마다 사용하는 것 다름
			데비안(우분투 계열) : dpkg(Debian Package) -> .deb
            레드햇 계열 : RPM(레드햇 패키지 매니지먼트) -> .rpm


다운로드에 부담감 있어서 원격 다운로드 나옴(maven)
									데비안 - apt/apt-get
                                    레드햇 - yum



🌼 압축 파일

	Tar(Tape Archiver : 묶음) + Gzip(압축) ==> tar.gz
    
tar cvf 묶을 파일명 묶어질 파일들

🌻 cvf - 파일을 보여주면서 묶어라

test.*.txt라고 쓰면 test 다 묶기 가능함



🌻 추가 : uvf



🌻 풀기 : xvf

(rm 써서 삭제한 이유는 압축 풀리면 같은 이름의 파일이 나와서 미리 지워준 것)



🌻 gzip 사용

test.tar가 없어지고 gz로 바뀜 ( gzip test.tar )


gz 풀기(gzip -d test.tar.gz)


gzip에서 한 번에 풀어버리기 (tar 안 거치고 바로 txt로 풀기)
원래는 xvzf 사용했는데 많이 써서 z생략하고 써도 됨


마찬가지로 압축도 cvzf사용하여 한 번에 묶을 수 있다.




🌼 리눅스에서 이클립스 설치 / 실행

ls 다운로드/ 로 확인하면 eclipse가 tar.gz 형식으로 압축되어 있는 것 확인 가능



현재 있는 곳으로 옮기기 (home/master)



압축풀면 실행파일 생긴다.



실행 시키기



대충 Hello World 출력시키기

프로그램 제공을 압축 파일로 제공해주고, tar.gz형식으로 준다는 점, xvzf, cvzf, tvzf, uvzf 등을 통하여 압축 관리를 한다는 점(z 빼도 무방)이 중요!




profile
끄적끄적

0개의 댓글