[Linux 이론] File system [2] (Linux 용)
Linux file system 리눅스 파일 시스템은 컴퓨터 하드 디스크나 저장 장치에 저장된 데이터나 파일들의 모음으로, 파일 시스템이 없으면 파일들은 마치 보이지 않는 것처럼 작동하여 많은 문제를 야기할 수 있다. 리눅스에서는 다양한 파일 시스템을 지원한다. 리눅스에서는 ext2, ext3, ext4, JFS, ReiserFS, XFS, Btrfs 등 다양한 파일 시스템이 사용된다. 이들 파일 시스템은 파일의 이름, 저장 방식, 검색 방법 등을 정의하며 파일 시스템은 파일들을 개별적인 조각으로 분리하고, 이러한 파일에 대한 데이터(파일 이름, 권한 등)를 저장하는 방법을 제공한다. 리눅스 파일 시스템은 데이터와/또는 파일들이 컴퓨터의 하드디스크나 저장장치에 저장되어 있는 구조다. 이 파일 시스템은 컴..
2023.03.12
[Linux 이론] 서버와 클라이언트(+ DHCP)
리눅스에서 서버와 클라이언트는 서로 통신하며 작업을 수행하는 시스템이다. 서버는 서비스를 제공하는 컴퓨터를 의미하며, 클라이언트는 서비스를 요청하는 컴퓨터를 의미한다. 클라이언트는 서버에게 요청을 보내고, 서버는 그 요청에 응답하여 요청된 서비스를 제공하며 이러한 구조를 클라이언트-서버 모델이라고 한다. 리눅스에서는 DHCP(Dynamic Host Configuration Protocol) 서버를 사용하여 클라이언트의 IP 주소를 할당할 수 있다. 또한 NFS(Network File System)를 사용하여 클라이언트가 서버에 저장된 파일에 접근할 수 있다. 서버는 주로 파일 서버, 인증 서버, 이메일 서버, 웹 서버 등으로 사용된다. 클라이언트는 이러한 서버에서 제공되는 서비스를 이용하는 것뿐만 아니라..
2023.03.11
[Linux 이론] 다운로드 명령어 (yum, dnf)
리눅스에서 패키지를 관리하는 데에는 yum과 dnf이 사용된다. yum은 RHEL 계열 배포판에서 사용되어 왔던 패키지 관리자이며, dnf은 yum을 개선한 다음 세대의 패키지 관리자다. dnf는 Fedora 22부터 기본 패키지 관리자로 채택되었으며, RHEL 8에서는 yum을 대체하고 있다. yum은 C 언어로 작성되어 있으며, 기존의 yum 보다는 속도와 메모리 사용량, 의존성 해결 능력 등에서 개선되었다. 하지만 yum은 여전히 RHEL 계열에서 지원되고 있다. 반면, dnf는 Python으로 작성되어 있으며, 의존성 문제를 해결하는 libsolv와 hawkey 라이브러리를 사용하여 더욱 빠르고 효율적으로 패키지를 관리할 수 있다. 또한 API 문서도 공식적으로 제공되어 있다. 따라서, yum과 ..
2023.03.11
no image
[Linux 이론] 사용자와 그룹 정보 분석하기
권한을 조절하기 전에 우리는 구성에 대해 먼저 알아야 할 필요가 있다. 각 파일의 특징을 알아보고 이 중 passwd와 shadow에 대해 알아보도록 하자. 임의의 a 라는 사용자를 만들어 확인해 보았다. 사용자와 그룹의 정보를 담고 있는 파일 1. /etc/passwd : 계정 관련 id:password:UID:GID:comment:홈디렉토리:login shell 2. /etc/group : 그룹 관련 id:password:GID:그룹에 속하는 사용자 계정 3. /etc/shadow : 암호 관련 id:암호화된 password:마지막으로 패스워드 수정한 날짜(기준 1970년 1월 1일):패스워드 최소사용일:패스워드 최대 사용일: 경고메세지출력일:유예기간:계정만료일(패스워드 설정에 우선한다.) > 계정 ..
2023.03.08
no image
[Linux 이론] 디렉토리, 파일의 속성 분석하기
오늘은 ls -l 을 사용했을 때 나오는 저 알수없는 글자에 대해 알아보자. 기본 구성 drwxr-xr-x. 5 root root 46 Mar 6 21:16 2 이것은 다음과 같이 분해할 수 있다. d / rwx / r-x / r-x / . / 5 / root / root / 46 / Mar 6 21:16 / 2 1. d : 속성 (파일 -, 디렉토리 d, 심볼릭 링크 l) 2. rwx : user 권한(Owner) 3. r-x : group 권한 4. r-x : others(기타 사용자) 권한 5. . : ACL 설정이 되지 않을 경우 . , ACL 설정 시 + 6. 5 : 파일일 경우 하드링크의 갯수, 디렉토리의 경우 디렉토리 내 디렉토리 갯수 7. root : Owner(소유주) 8. root : ..
2023.03.07
no image
[Linux 이론] 초기 /(root) 디렉토리 구성
루트 디렉토리의 기본 구성과 각 디렉토리가 무슨 역할을 하는지 알아보겠다. 전체를 알아보는 것이 아닌 대표적인 것들을 위주가 될 예정이다. /bin, /sbin /bin과 /sbin 디렉토리는 모두 바이너리(binary) 파일을 저장하는 디렉토리이며, 시스템의 실행 파일들을 담고 있다는 공통점을 가지고 있다. /bin 디렉토리 : 일반 사용자도 사용할 수 있는 실행 파일들이 위치하며, 예를 들어 cat, ls 등이 있다. /sbin 디렉토리 : 시스템 관리를 위한 실행 파일들이 위치하며, 대표적으로 시스템 부팅, 복구 및 유지보수를 위해 필요한 명령어들이 있다. 이러한 실행 파일들은 시스템의 운영을 위해 루트 파일 시스템에 있어야 할 명령어들로, 일반 사용자는 사용할 수 없고, 루트 권한을 가진 사용자만..
2023.03.07
반응형
Linux file system

리눅스 파일 시스템은 컴퓨터 하드 디스크나 저장 장치에 저장된 데이터나 파일들의 모음으로, 파일 시스템이 없으면 파일들은 마치 보이지 않는 것처럼 작동하여 많은 문제를 야기할 수 있다. 리눅스에서는 다양한 파일 시스템을 지원한다.

 

리눅스에서는 ext2, ext3, ext4, JFS, ReiserFS, XFS, Btrfs 등 다양한 파일 시스템이 사용된다. 이들 파일 시스템은 파일의 이름, 저장 방식, 검색 방법 등을 정의하며 파일 시스템은 파일들을 개별적인 조각으로 분리하고, 이러한 파일에 대한 데이터(파일 이름, 권한 등)를 저장하는 방법을 제공한다.

 

리눅스 파일 시스템은 데이터와/또는 파일들이 컴퓨터의 하드디스크나 저장장치에 저장되어 있는 구조다. 이 파일 시스템은 컴퓨터에서 파일의 위치와 위치를 파악하는 데 필수적이다. 만약 이 파일 시스템이 없으면 파일들은 마치 보이지 않는 것처럼 동작하여 많은 문제를 일으키게 된다.

 

또한, 리눅스 파일 시스템은 하드디스크나 파티션에 있는 파일들의 구조화된 집합이다. 파티션은 메모리의 세그먼트로, 특정 데이터를 포함하고 있다. 보통 각 파티션에는 파일 시스템이 들어 있다. 

 

리눅스 파일 시스템은 총 3개의 계층으로 이루어져 있다. 가장 위에는 논리 파일 시스템이 있으며, 이것은 사용자 애플리케이션과 상호작용하여 열기, 읽기, 닫기 등의 작업을 수행하고 하위 계층으로 요청을 전달한다. 가상 파일 시스템은 여러 인스턴스의 물리 파일 시스템이 동시에 실행될 수 있도록 한다. 


Ext2

Ext2(확장 파일 시스템 2)는 Linux 운영 체제에서 사용되는 파일 시스템이다. 1993년에 도입되었으며 이전 버전인 확장 파일 시스템(Ext)의 한계를 극복하도록 설계되었다.

 

다음은 Ext2의 몇 가지 주요 특징이다.

  • Ext2는 Linux용 최초의 상용 등급 파일 시스템이었다.
  • Ext 파일 시스템의 대체품으로 Rémy Card에서 개발했다.
  • 처음에는 파일 시스템의 기능을 확장하면서 파일 시스템의 내부 구조를 유지하도록 설계되었다.
  • 최대 개별 파일 크기는 최대 2TB가 될 수 있으며 파일 시스템 크기는 블록 크기에 따라 4TB에서 32TB까지 가능하다.
  • 벤치마킹 기준으로 사용될 정도로 속도가 빠르다.
  • 최대 파일 이름 길이는 255바이트를 지원하지만 파일 이름 길이는 문자로 제한되지 않는다.
  • 시스템에 치명적인 문제를 일으킬 수 있는 저널링을 지원하지 않는다.
  • 플래시 드라이브 및 USB 장치 와 함께 사용하는 것이 좋다.
  • 특히 중소형 파일 에 대해 탁월한 파일 액세스 성능을 제공한다.

Ext3

Ext3(Third Extended File System)은 2001년 11월에 도입된 Linux용 저널링 파일 시스템이다. 저널링 지원을 추가하는 Ext2 파일 시스템의 확장으로, 향상된 안정성을 제공하고 불결한 종료 후 파일 시스템을 확인할 필요가 없습니다. Ext3는 Stephen Tweedie 에 의해 설계되었으며 오늘날에도 여전히 사용되고 있다.

 

Ext3의 주요 이점 중 하나는 파일 시스템에 대한 모든 변경 사항을 추적하는 저널링 기능이다. 이는 안정성을 향상시키고 파일 시스템 손상 가능성을 줄이는 데 도움이 된다.

 

Ext3의 또 다른 장점은 데이터를 백업 및 복원할 필요 없이 Ext2에서 업그레이드할 수 있다는 것이다.Ext2와 마찬가지로 Ext3도 동일한 inode 테이블 구조를 사용하고 최대 파일 크기 2TiB를 지원한다. 또한 최대 파일 이름 길이를 255바이트로 제한한다.

 

파일 시스템은 2001년에 Linux 커널에 추가되었으며 최근까지 거의 모든 Linux 배포판에서 사용되는 기본 파일 시스템이었다. 전반적으로 Ext3는 이전 버전인 Ext2보다 데이터 손실 및 손상에 대해 더 나은 보호 기능을 제공하는 안정적이고 효율적인 파일 시스템이다.


Ext4

Ext4는 리눅스에서 사용되는 파일 시스템 중 하나다. 이전 버전인 ext3과 비교하여 성능과 안정성이 개선되었다. Ext4는 파일을 여러 개의 블록 그룹으로 분할하여 저장한다.

 

각 블록 그룹은 SuperBlock, File descriptor table, data bitmap, inode bitmap, inode table, data 영역으로 구성된다. 이를 통해 파일을 빠르게 찾고, 분산시켜 저장함으로써 파일 시스템의 성능이 향상되었다.

 

 또한, Ext4는 데이터 일치성을 위해 사용되는 저널링 기능을 제공한다. 이 기능은 시스템이 갑자기 멈추거나 정전 등으로 꺼지는 경우에도 데이터의 복구가 가능하도록 한다.

 

Ext4는 extent라는 개념을 도입하여 파일을 더욱 효율적으로 저장한다. extent는 연속적으로 할당된 블록에 대해 단일 블록을 매핑함으로써, 파일에 대한 접근을 빠르게 만든다. 이를 통해 큰 사이즈의 파일을 삭제하는 경우 시간을 단축할 수 있다.

 

또한, 지연된 할당 기능을 제공한다. 이 기능은 디스크 공간 할당을 마지막 순간까지 지연시켜 성능을 개선한다. 이 외에도 Ext4는 기존 파일 시스템에 비해 다음과 같은 특징이 있다.

  • 체크섬을 가진 사용하지 않는 노드를 저장하여 파일 시스템 점검 속도가 빨라짐 
  • 파일 시스템이 포맷된 후 마운트를 해도 컴퓨터가 리부팅 될 때마다 마운트가 해제되는 문제를 /etc/fstab에 등록함으로써 해결 가능 

위와 같은 특징들을 통해 Ext4는 파일 시스템의 성능과 안정성을 크게 개선시켰다.


XFS

XFS는 Silicon Graphics에서 개발한 고성능 파일 시스템으로, 64비트 파일 시스템이며 대용량 파일을 다루는 데 최적화되어 있다. XFS는 저널링 기법을 사용하여 파일 수에 관계없이 예상치 못한 상황으로부터 신속하게 복구하여 재시작이 가능하며, 읽기/쓰기의 신속한 트랜잭션을 제공한다.

 

또한 XFS는 파일시스템의 확장성이 높아 동시 다발적인 I/O 요청 처리와 같은 작업에 유리하다. XFS는 리눅스 커널에 2001년에 포함되었으며, RHEL 7부터는 Default 파일 시스템으로 지정되어 있다. 그러나 축소가 불가능한 한계를 가지고 있으며, 사용 시 마운트 옵션 및 튜닝에 따라 성능이 크게 차이날 수 있다.

 

다음은 XFS의 몇가지 특징을 정리했다.

  1. 저널링(Journaling) 기능 XFS는 저널링 기능을 지원하여, 파일 수에 상관없이 예기치 못한 상황에서도 빠르게 복구할 수 있다. 기존의 파일 시스템에서는 파일 시스템 체크 프로그램을 오랜 시간 동안 수행하여 복구했어야 했지만, XFS는 이러한 체크 프로그램을 사용하지 않아도 된다. 이를 통해 데이터 손실 가능성을 줄일 수 있다.

  2. 익스텐트 기반 할당(Extent-based Allocation) XFS는 익스텐트 기반 할당을 사용하여, 메타데이터가 소비되는 공간과 조각화를 최소화하며, 대용량 파일의 성능을 향상시킨다. 지연 할당(Lazy Allocation)과 사전 할당(Pre-allocation) 또한 지원하여, 성능 저하를 최소화한다.

  3. 빠른 복구 기능 XFS는 메타데이터 저널링을 지원하므로, 빠른 복구 기능을 제공한다. 또한, 마운트된 상태에서 조각 모음과 확장이 가능하며, 특정 유틸리티의 백업과 복원도 지원한다.

  4. 성능 향상 XFS는 트랜잭션으로 인한 성능 저하를 최소화하는 기능을 제공한다. 읽기/쓰기 트랜잭션을 최소화하며, 지연 할당과 사전 할당을 통해 단편화를 줄이고 성능을 향상시킨다.

  5. 확장성 XFS는 파일 시스템에서 사용 가능한 공간에 의해서만 파일 수가 제한되며, 마운트된 상태에서 확장이 가능하다.

  6. 유틸리티 지원 Red Hat Enterprise Linux 6에서는 XFS에 특정 유틸리티의 백업 및 복원을 지원한다.

Btrfs

Btrfs는 리눅스 커널에서 사용되는 고급 파일 시스템 중 하나다. 이름은 B-Tree File System의 약어인데, 발음은 butter나 butter eff ess 등으로 불린다.

 

Btrfs는 주요한 기능으로 스냅샷, 미러링, 스트리핑, 압축, 데이터 암호화, 그리고 대용량 서버에서 사용하기 위해 설계된 파일 시스템으로, 동적 아이노드 할당, 파일 크기 제한 등 많은 기능을 가지고 있다. 

 

Btrfs는 내장 암호화 기능은 없지만, 암호화된 파티션을 만들고 그 위에 Btrfs를 사용할 수 있다. 또는 EncFS나 TrueCrypt와 같은 도구를 사용할 수도 있다.

 

Btrfs는 기능이 많아서 일반적으로 다른 파일 시스템에 비해 더 많은 시스템 리소스를 소비한다. 따라서 중요한 자료를 저장하기 위한 용도로는 아직 적합하지 않는다. 또한 P2P같은 용도로도 적합하지 않는다.

 

Btrfs는 스냅샷과 서브볼륨을 지원하는 등 유연한 기능을 가지고 있다. 그러나 Btrfs는 아직 완전하지 않은 파일 시스템으로 분류된다. 따라서 안정성과 신뢰성을 고려할 때, 현재는 여전히 EXT4와 같은 파일 시스템을 사용하는 것이 좋다. 

 

최근에는 Btrfs가 점점 더 안정적이고 신뢰성 있는 파일 시스템으로 개선되고 있다. Btrfs는 리눅스 커널에 이미 포함되어 있으며, 일부 리눅스 배포판에서는 기본 파일 시스템으로 설정되어 있다. 


JFS, ReiserFS는 거의 사용되지 않거나  개발이 중단되어 더 이상 사용하는 것이 권장되지 않는다.


 참고 문헌

[1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18]   

반응형
반응형

리눅스에서 서버와 클라이언트는 서로 통신하며 작업을 수행하는 시스템이다. 서버는 서비스를 제공하는 컴퓨터를 의미하며, 클라이언트는 서비스를 요청하는 컴퓨터를 의미한다. 클라이언트는 서버에게 요청을 보내고, 서버는 그 요청에 응답하여 요청된 서비스를 제공하며 이러한 구조를 클라이언트-서버 모델이라고 한다.

 

리눅스에서는 DHCP(Dynamic Host Configuration Protocol) 서버를 사용하여 클라이언트의 IP 주소를 할당할 수 있다. 또한 NFS(Network File System)를 사용하여 클라이언트가 서버에 저장된 파일에 접근할 수 있다.

 

서버는 주로 파일 서버, 인증 서버, 이메일 서버, 웹 서버 등으로 사용된다. 클라이언트는 이러한 서버에서 제공되는 서비스를 이용하는 것뿐만 아니라, 로컬 컴퓨터에서 다른 컴퓨터로 파일 전송, SSH 연결, 원격 데스크톱 등의 작업도 수행할 수 있다.


DHCP

DHCP(Dynamic Host Configuration Protocol)는 네트워크 내의 모든 호스트들에게 IP 주소를 동적으로 할당하는 프로토콜이다.

 

DHCP는 호스트들의 IP 주소 할당뿐만 아니라 서브넷 마스크, 게이트웨이, DNS 서버 정보 등을 자동으로 구성할 수 있으며, 네트워크 관리자가 중앙에서 네트워크를 구성하고 관리할 수 있도록 한다. DHCP를 사용하면 새로운 사용자의 쉬운 처리와 IP 주소의 재사용을 쉽게 할 수 있지만, IP 충돌 문제가 발생할 수 있다는 단점이 있다.

 

Linux에서 DHCP 서버를 설정하기 위해서는 일반적으로 dhcpd(DHCP Daemon) 패키지를 설치하고, 설정 파일을 수정한 후에 DHCP 서버를 시작하면 된다. DHCP 클라이언트를 구성하려면, dhclient 패키지를 사용하여 DHCP 서버에서 자동으로 IP 주소를 받아올 수 있다.

 

DORA 과정을 통해 DHCP 서버가 클라이언트에게 IP 주소를 할당하고, 클라이언트가 IP 주소를 요청하고 수락하는 과정에서 네트워크 상에서 다양한 메시지 교환을 수행한다.


참고 문헌 : [1][2][3][4][5][7][8][9][10][11][12][13][14][15][16]

반응형
반응형

리눅스에서 패키지를 관리하는 데에는 yum과 dnf이 사용된다. yum은 RHEL 계열 배포판에서 사용되어 왔던 패키지 관리자이며, dnf은 yum을 개선한 다음 세대의 패키지 관리자다. dnf는 Fedora 22부터 기본 패키지 관리자로 채택되었으며, RHEL 8에서는 yum을 대체하고 있다.

 

yum은 C 언어로 작성되어 있으며, 기존의 yum 보다는 속도와 메모리 사용량, 의존성 해결 능력 등에서 개선되었다. 하지만 yum은 여전히 RHEL 계열에서 지원되고 있다.

 

반면, dnf는 Python으로 작성되어 있으며, 의존성 문제를 해결하는 libsolv와 hawkey 라이브러리를 사용하여 더욱 빠르고 효율적으로 패키지를 관리할 수 있다. 또한 API 문서도 공식적으로 제공되어 있다.

 

따라서, yum과 dnf은 모두 리눅스에서 패키지를 관리하는 데 사용되지만, dnf은 yum에 비해 더욱 빠르고 효율적인 패키지 관리가 가능하다. 그러나 RHEL 7까지는 yum이 지원되고 있으므로, 배포판에 따라서 어떤 패키지 관리자를 사용해야 하는지 확인해야 한다.


YUM (Yellowdog Updater Modified)

Red Hat 계열 리눅스 시스템에서 사용하는 전통적인 패키지 관리자다. YUM은 대부분의 Red Hat 계열 배포판에서 제공되며, .rpm 파일 형식으로 소프트웨어 패키지를 관리하는 RPM 패키지 관리자의 프론트엔드 역할을 한다. YUM은 APT와 마찬가지로 소프트웨어 저장소를 통해 동작하며, 저장소는 소프트웨어 패키지의 모음을 담고 있는 특별한 디렉토리다.

 

YUM 명령어는 Red Hat 엔터프라이즈 리눅스(RHEL)의 공식 소프트웨어 저장소뿐만 아니라 다른 서드파티 저장소에서도 RPM 소프트웨어 패키지를 얻고, 설치, 삭제, 조회 및 기타 관리 작업을 수행할 수 있는 주요 도구다. YUM을 사용하면 시스템 업데이트, 의존성 분석 및 레파지토리 메타데이터를 기반으로 한 오래된 패키지 처리 등 시스템 업데이트를 자동으로 수행할 수 있다.

 

또한 YUM은 설치된 시스템의 레파지토리에서 뿐만 아니라 .rpm 패키지에서도 패키지를 관리할 수 있다. YUM은 패키지를 설치, 업데이트, 삭제 및 관리하는데 사용된다. YUM 명령어를 사용하면 의존성 해결을 수행할 수 있다.


 

yum [옵션] [커맨드] [패키지 이름]
  • -y : -y 옵션은 설치하려는 패키지와 해당 패키지의 의존성 패키지들을 확인하고, 확인 메시지 없이 자동으로 설치한다. 
  • history : yum의 이전 작업 내역을 조회하고, 이전에 수행한 작업을 취소할 수 있는 기능을 제공한다.
  • -yumplugin : 플러그인을 사용하여 패키지를 설치, 업데이트 또는 제거하는 데 사용된다.
  • -exclude : 패키지를 제외하고 업데이트를 수행한다.
  • -downloadonly : 패키지를 다운로드만 하고 설치하지 않는다. 

* 다운로드란 인터넷에서 파일을 다른 컴퓨터로 전송받아 자신의 컴퓨터에 저장하는 것이지만 설치는 다운로드한 파일을 실행하여 해당 파일을 사용할 수 있는 상태로 만드는 것을 말한다.


DNF(Dandified YUM)

RHEL, Fedora, CentOS, AlmaLinux, Rocky Linux, Oracle Linux와 같은 RPM 기반의 Linux 배포판에서 사용되는 패키지 매니저다. DNF는 YUM 패키지 매니저의 업그레이드 버전으로, RPM 및 libsolv를 사용하여 패키지 관리를 한다. DNF는 패키지 설치, 업데이트, 삭제와 같은 패키지 관리 작업 뿐만 아니라 모듈, 애플리케이션 스트림 및 프로파일과 같은 기능도 제공한다.

 

DNF는 기본적으로 플러그인을 제공하며, 플러그인은 dnf의 작업을 확장하거나 향상시키기 위해 사용된다. 플러그인 설정 파일에는 항상 [main] 섹션이 있으며, enabled = 옵션을 사용하여 플러그인이 dnf 명령어를 실행할 때 활성화되는지 여부를 제어할 수 있다.


dnf [옵션] [커맨드] [패키지 이름]

패키지 동기화

  • dnf distro-sync : 설치된 모든 패키지를 저장소에서 사용 가능한 최신 안정 버전으로 동기화하는 옵션을 제공한다.

패키지 설치

  • dnf -y install 패키지이름 : 의존성 있는 다른 패키지까지 모두 설치할 수 있다.
  • dnf install rpm파일이름 : rpm 파일을 설치할 수 있다.

패키지 업데이트

  • dnf update 패키지이름 : 업데이트 가능한 패키지를 업데이트 할 수 있다.

패키지 삭제

  • dnf remove 패키지이름 : 패키지를 삭제할 수 있다.

패키지 재설치

  • dnf reinstall 패키지이름 : 이미 설치된 패키지를 다시 설치할 수 있다.

패키지 검색

  • dnf search 검색어 : 패키지를 검색할 수 있다.

저장소 확인

  • dnf repolist : 시스템에 설정된 저장소 목록을 확인할 수 있다.

저장소 추가 및 삭제

  • dnf config-manager --add-repo 저장소주소 : 저장소를 추가할 수 있다.
  • dnf config-manager --remove 저장소이름 : 저장소를 삭제할 수 있다.

이 외의 다양한 명령어는 --help로 찾아보라.

 

참고 문헌 : [1][2][3][4][5][6][7][8][9][10]

반응형
반응형

권한을 조절하기 전에 우리는 구성에 대해 먼저 알아야 할 필요가 있다. 각 파일의 특징을 알아보고 이 중 passwd와 shadow에 대해 알아보도록 하자. 임의의 a 라는 사용자를 만들어 확인해 보았다.


사용자와 그룹의 정보를 담고 있는 파일

1. /etc/passwd : 계정 관련


id:password:UID:GID:comment:홈디렉토리:login shell



 2. /etc/group : 그룹 관련


id:password:GID:그룹에 속하는 사용자 계정



 3. /etc/shadow : 암호 관련


id:암호화된 password:마지막으로 패스워드 수정한 날짜(기준 1970년 1월 1일):패스워드 최소사용일:패스워드 최대 사용일: 경고메세지출력일:유예기간:계정만료일(패스워드 설정에 우선한다.)

 

> 계정 만료일은 기한이 정해져 있는 프로젝트에 참여하는 외부 인력에 주로 설정



 4. /etc/default/useradd : 내용 참조 id, password 설정


기본그룹,유예기간,계정만료일,login shell, 메일사서함 생성여부



 5. /etc/loing.defs :내용 참조 id, password 설정


메일사서함위치,패스워드최소사용일,패스워드최대사용일,패스워드길이,경고메시지출력일,UID와 GID범위지정,사용자홈디렉토리생성여부\사용자ID와 동일한 그룹 생성여부

 

(> 해당 파일은 내용이 길고 조금 복잡할 수 있어 나중에 따로 다루도록 하겠다)



 6. /etc/skel : 사용자 홈디렉토리에 생성되는 파일과 디렉토리


분석하기

1. /etc/passwd 에서 user a의 구성 분석하기

 

[   a      :x      :1002      :1002      :      :/home/a      :/bin/bash   ]

 

이 구성은 다음과 같이 나눌 수 있다. : 이것을 경계로 나누면 훨씬 수월할 것이다. 각 성분의 특징을 알아보자.


 

a  ID 계정
:x 패스워드
:1002 UID
:1002 GID
: comment
:/home/a 홈디렉토리 위치
:/bin/bash login shell

 * shell은 명령어 해석기라고도 하고(종류: sh, bash, zsh, csh), 이게 없다면 로그인 할 수 있는 방법은 없다.
 * 리눅스는 명령어를 적용하고 껏다키면 초기화된다. 따라서 영구 수정하고 싶다면 설정파일을 수정해야한다.


2. /etc/shadow 에서 user a의 구성 분석하기


[   a             :$6$~~~~~~~~~~XV70              :19424              :0             :99999              :7             :              :                :   ]

a 계정명
:$6$...XV70 패스워드 (비밀번호 없으면 !!, 암호화된 패스워드 /etc/login.defs SHA512
:19419 패스워드 마지막으로 수정한 날짜 (1970년 1월 1일 + 19419 = 오늘날짜)
: 패스워드 최소 사용 가능일(기간 동안은 패스워드 변경 불가)
:99999 패스워드 최대 사용일 (ex.30 )
:7 경고 메세지 출력일, 패스워드 만료전 7일전 부터 경고 메세지 출력
: 유예기간 (패스워드 만료 후 일정기간 동안 유예, 접속해서 패스워드 변경하면 사용이 가능)
: 계정의 만료(모든 패스워드 설정에 우선)
: 사용안함

 

공백 자리는 맨 마지막을 제외하고 명령어나 vi 편집기를 이용해 부여해 줘야 한다. 이는 나중에 따로 다뤄보도록 하겠다.


* 추가

UID : user ID

GID : group ID

이는 권한 부여하거나 제거할 때 중요하게 작용하니 알아두면 조금은 더 편해질지도 모르겠다.

반응형
반응형

오늘은 ls -l 을 사용했을 때 나오는 저 알수없는 글자에 대해 알아보자.


기본 구성

drwxr-xr-x. 5 root root 46 Mar 6 21:16 2

 

이것은 다음과 같이 분해할 수 있다.

 

d   /   rwx   /  r-x   /  r-x   /  .   /   5    /  root   /   root   /   46   /   Mar  6  21:16   /   2

 

1. d : 속성 (파일 -, 디렉토리 d, 심볼릭 링크 l)

2. rwx : user 권한(Owner)

3. r-x : group 권한

4. r-x : others(기타 사용자) 권한

5. . : ACL 설정이 되지 않을 경우 . , ACL 설정 시 +

6. 5 : 파일일 경우 하드링크의 갯수, 디렉토리의 경우 디렉토리 내 디렉토리 갯수

7. root : Owner(소유주)

8. root : Group(그룹)

9. 46 : 용량

10. Mar 6 21:16 : 마지막으로 수정한 날짜

11. 2 : 파일이나 디렉토리 이름


권한

읽기 권한 : r/4

쓰기 권한 : w/2

실행 권한 : x/1

 

이 내용을 위에 적용해보면

" 이것은 디렉토리이며 user는 모든 권한을, group과 기타 사용자는 읽기와 실행 권한을 가지고 있다. ~~~"


ACL

기본적으로 리눅스에서는 파일 및 디렉토리에 대한 접근 권한은 소유자, 그룹 및 기타 사용자에 대한 권한으로 제어된다. 하지만 ACL을 사용하면 각각의 파일 및 디렉토리에 대해 세부적으로 권한을 설정할 수 있다. 예를 들어, 특정 사용자나 그룹에 대해 파일 및 디렉토리의 읽기, 쓰기, 실행 권한을 설정할 수 있다. 또한, 파일 및 디렉토리의 소유자나 그룹 외에도 다른 사용자나 그룹에 대한 권한을 설정할 수 있다.

 

리눅스에서 ACL을 사용하려면 파일 시스템이 ACL을 지원해야 한다. 대부분의 최신 파일 시스템은 ACL을 지원하며, ACL을 지원하는 파일 시스템에서는 별도의 설정 없이 ACL을 사용할 수 있다. ACL을 설정하려면 파일이나 디렉토리에 대해 'setfacl' 명령어를 사용하면 된다. 이 명령어를 사용하면 파일이나 디렉토리에 대한 ACL을 설정할 수 있다.

 

리눅스에서 ACL을 사용하면 권한을 더 세부적으로 제어할 수 있으므로 보안성을 높일 수 있다. 그러나 ACL을 설정하는 것은 일반적인 파일 권한보다 복잡하고 오류가 발생하기 쉬우므로 주의가 필요하다. 따라서, ACL을 사용하기 전에는 충분한 이해와 테스트가 필요하다.


이에 대한 명령어 실행 예시는 나중에 따로 게시하도록 하겠다.

반응형
반응형

루트 디렉토리의 기본 구성과 각 디렉토리가 무슨 역할을 하는지 알아보겠다. 전체를 알아보는 것이 아닌 대표적인 것들을 위주가 될 예정이다.


/bin, /sbin

/bin과 /sbin 디렉토리는 모두 바이너리(binary) 파일을 저장하는 디렉토리이며, 시스템의 실행 파일들을 담고 있다는 공통점을 가지고 있다.

  • /bin 디렉토리 : 일반 사용자도 사용할 수 있는 실행 파일들이 위치하며, 예를 들어 cat, ls 등이 있다.
  • /sbin 디렉토리 : 시스템 관리를 위한 실행 파일들이 위치하며, 대표적으로 시스템 부팅, 복구 및 유지보수를 위해 필요한 명령어들이 있다. 이러한 실행 파일들은 시스템의 운영을 위해 루트 파일 시스템에 있어야 할 명령어들로, 일반 사용자는 사용할 수 없고, 루트 권한을 가진 사용자만 사용할 수 있다

lib와 lib64

lib와 lib64는 리눅스 시스템의 라이브러리 파일을 보관하는 디렉토리다. /lib 디렉토리는 32비트 라이브러리 파일을, /lib64 디렉토리는 64비트 라이브러리 파일을 보관한다. 이러한 구분은 다양한 이유는 다음과 같다.

  • 64비트와 32비트 프로그램 간의 호환성을 유지하기 위해
  • 프로그램이 실행될 때, 프로그램이 필요로 하는 라이브러리를 찾는 과정에서 라이브러리 파일이 저장된 위치를 찾기 위해

/lib와 /lib64에는 시스템 시작 시에 필요한 라이브러리 파일이 포함되어 있다. 이러한 라이브러리 파일은 부트 프로세스에서 중요한 역할을 하며, 이 단계에서는 다른 디렉토리의 라이브러리를 사용할 수 없으므로 /lib와 /lib64 디렉토리에 필요한 라이브러리가 모두 포함되어 있어야 한다.

 

/lib와 /lib64가 분리되어 있는 이유는, 라이브러리 파일의 크기 때문이다. 32비트와 64비트 라이브러리 파일은 크기가 서로 다르기 때문에, 같은 경로에 둘 경우 파일 이름이 중복되는 경우가 발생할 수 있다. 또한, /lib와 /lib64 디렉토리를 분리함으로써, 64비트 라이브러리 파일만 필요한 시스템에서는 32비트 라이브러리 파일을 불필요하게 설치하지 않아도 되므로 디스크 공간을 절약할 수 있다


home

Home 디렉토리는 다중 사용자 운영 체제에서 각 사용자가 자신의 파일을 보관하는 기본 디렉토리이다. 일반적으로 로그인하면 해당 사용자의 홈 디렉토리로 이동하며, 해당 디렉토리에는 사용자에게 관련된 여러 가지 정보와 파일이 저장된다.

 

윈도우 운영 체제에서는 각 사용자의 홈 디렉토리가 "Documents and Settings" 폴더에 저장되고 있으며, 리눅스 운영 체제에서는 "/home" 디렉토리에 저장된다. 홈 디렉토리는 각 사용자에게 개별적으로 할당되며, 해당 사용자만 접근할 수 있다.

 

사용자는 홈 디렉토리에 저장된 파일을 쉽게 찾을 수 있으며, 일반적으로 디렉토리 이름은 사용자 이름과 동일하다. 따라서, 사용자는 홈 디렉토리에서 작업하며, 파일 및 디렉토리 구조를 구성하거나, 다른 디렉토리로 파일을 복사하거나 이동할 수 있다.


root

root 디렉토리는 리눅스 운영체제에서 최상위 디렉토리를 가리키는 것으로, 모든 디렉토리와 파일이 이 디렉토리를 기준으로 경로가 설정된다. 이 디렉토리에는 시스템 운영을 위해 필요한 파일들이 위치하며, 일반적으로 시스템 관리자나 root 사용자만이 접근 가능하다. root 디렉토리의 권한은 현재 제3자는 쓰기가 불가능하며, ubuntu 사용자는 디렉토리 생성이나 파일 생성 등과 같은 root 디렉토리에 영향을 끼치는 행위를 할 수 없다.

 

또한, root 디렉토리는 리눅스 파일 시스템 계층 구조에서 최상위 디렉토리인 /를 가리키기도 한다. 따라서 모든 디렉토리와 파일은 /디렉토리를 기준으로 경로가 설정되며, 이 경로에서 /를 제외하면 root 디렉토리 내의 경로가 된다.

 

/root 디렉토리는 root 사용자의 홈 디렉토리입니다. 이 디렉토리의 권한은 root 사용자만이 접근 가능하다.


dev

dev 디렉토리는 리눅스 시스템에서 장치 파일들이 위치하는 디렉토리이다. 시스템은 각각의 장치들로부터의 정보를 해당 장치 파일로부터 /dev 디렉토리에서 가지고 온다. 예를 들면, /dev/console은 시스템의 콘솔을 나타내고, /dev/hda는 시스템의 첫 번째 하드 디스크를 의미한다.


proc

proc 디렉토리는 가상 파일 시스템(virtual file system)으로, 커널, 하드웨어, 작동 중인 프로세스에 대한 정보를 제공한다. 이 디렉토리에는 현재 실행 중인 프로세스 정보, 시스템 자원 사용 정보, 하드웨어 정보 등이 포함된다. 또한 /proc 디렉토리 안에 있는 파일들은 읽기 전용이며, 프로세스 상태 정보를 포함하여 각종 시스템 정보를 볼 수 있습니다. 이러한 정보는 여러 명령어를 통해서도 확인 가능하다.

 

/proc 디렉토리는 시스템 관리와 디버깅에 유용하게 사용될 수 있다. 예를 들어, 프로세스 상태 정보를 확인하거나 프로세스가 사용하는 자원과 관련된 정보를 확인할 수 있다. 또한 이 디렉토리를 통해 커널 메모리, 하드웨어 장치 및 네트워크 정보도 확인 가능하다.

 

참고로, /proc 디렉토리는 실제로 디스크에 저장되어 있지 않고, 메모리 상에만 존재한다. 그러나 /proc 디렉토리는 시스템 관리자나 개발자를 위한 디버깅 용도로만 사용해야 하며, 일반 사용자는 실수로 파일을 삭제하거나 수정하지 않도록 주의해야 한다.


etc

/etc 디렉토리는 리눅스 운영 체제에서 시스템의 전반적인 환경 설정 파일과 사용자, 그룹 정보 등을 담고 있는 디렉토리다. 이 디렉토리에는 사용자, 암호, 그룹 등의 정보를 담고 있는 /etc/passwd 파일이 포함되어 있다. 이 파일은 사용자 이름, 암호, UID, GID, 그 외 정보, 홈 디렉토리, 셸 등의 정보를 담고 있으며, 사용자 및 그룹을 관리하는 데 사용된다. 또한 /etc 디렉토리에는 리눅스 부팅 시 작동하는 서비스들이 들어있는 /etc/init.d 디렉토리도 포함되어 있다. 이 디렉토리에는 런레벨에 따라 작동하는 서비스를 조정할 수 있는 파일들이 들어 있으며, 부팅 시 서비스를 자동으로 시작하거나 중지하는 데 사용된다. 또한, /etc/netboot 디렉토리에는 WAN 부트 설치에 필요한 구성 정보, 개인 키, 디지털 인증서 및 인증 기관이 들어있어, WAN 부트 설치를 사용자 정의할 때 이 디렉토리를 이용할 수 있다.


var

/var 디렉토리는 시스템에서 변동적인 데이터 파일들이 저장되는 공간이다. 대표적으로 로그 파일이 저장되는 /var/log, 시스템 실행 중 생성되는 프로세스나 락 파일 등이 저장되는 /var/run, 임시 파일이 저장되는 /var/tmp 등이 있다. 이 외에도 다른 시스템과 공유할 수 없는 고유한 디렉토리도 있다. 예를 들어 /var/mail, /var/cache/man, /var/cache/fonts, /var/spool/news 등이 있습니다.


tmp

/tmp 디렉토리는 리눅스 시스템에서 프로그램이나 사용자들이 임시 파일을 생성하고 저장하는 디렉토리이다. 일반적으로 /tmp에 저장된 파일들은 시스템 재부팅시 자동으로 삭제된다. 일반적인 사용자의 경우 /tmp 디렉토리를 채우는 것은 매우 어려운 일이며, 이 디렉토리에 저장된 파일은 몇 킬로바이트 정도로 매우 작다. 그러나 서버에서는 많은 사용자들이 접근하여 임시 파일을 생성할 수 있으며, 이 경우 보안상의 이유로 /tmp 디렉토리의 권한 값을 수정해야 할 수도 있다. 디렉토리의 권한 값은 기본적으로 아무나 읽고, 쓰고, 실행할 수 있도록 설정되어 있으며, 이로 인해 악성 스크립트가 실행될 수 있기 때문이다. 따라서 서버에서는 /tmp 디렉토리의 권한 값을 수정하거나, 보안 프로그램을 이용하여 위협으로부터 보호해야 한다.


 

반응형