<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Hong's 공부일기</title>
    <link>https://hongstudydiary.tistory.com/</link>
    <description>컴퓨터 공학 전공자, 공기업 취준생</description>
    <language>ko</language>
    <pubDate>Wed, 3 Jun 2026 07:18:33 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Hong's_Computer</managingEditor>
    <image>
      <title>Hong's 공부일기</title>
      <url>https://tistory1.daumcdn.net/tistory/7045664/attach/9e89bbafc0c34633aa5fe0402b7afc0c</url>
      <link>https://hongstudydiary.tistory.com</link>
    </image>
    <item>
      <title>[정보보안기사 요약 1]UNIX/ LINUX 기본 학습</title>
      <link>https://hongstudydiary.tistory.com/216</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;passwd 파일: 사용자의 개인정보 저장, 콜론(:)을 구분자로 7개의 필드&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;cat /etc/passwd&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yYEqN/dJMcafl9o4x/r7nPqlbriKuCnRit4sN56k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yYEqN/dJMcafl9o4x/r7nPqlbriKuCnRit4sN56k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yYEqN/dJMcafl9o4x/r7nPqlbriKuCnRit4sN56k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyYEqN%2FdJMcafl9o4x%2Fr7nPqlbriKuCnRit4sN56k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;770&quot; height=&quot;245&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;cat /etc/shadow&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T8jxO/dJMcadhyyEu/1pGspEHbKcb5N1gSYwO8ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T8jxO/dJMcadhyyEu/1pGspEHbKcb5N1gSYwO8ek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T8jxO/dJMcadhyyEu/1pGspEHbKcb5N1gSYwO8ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT8jxO%2FdJMcadhyyEu%2F1pGspEHbKcb5N1gSYwO8ek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;763&quot; height=&quot;218&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;218&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;쉘(Shell): 사용자와 커널 간 인터페이스 역할을 하는 프로그램&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;id 사용자계정:&lt;/b&gt;&lt;/span&gt; UID와 GID 정보 확인&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;passwd 계정:&lt;/b&gt;&lt;/span&gt; 사용자 패스워드 변경, 본인의 비밀번호 변경, root는 전계정 비밀번호 변경 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;group 파일: 그룹 정보를 저장한 파일, 4개의 필드로 구성&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;cat /etc/group&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/co383x/dJMcabKQW9Z/hXkHSQ5oqOkSqMMSHWoKJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/co383x/dJMcabKQW9Z/hXkHSQ5oqOkSqMMSHWoKJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/co383x/dJMcabKQW9Z/hXkHSQ5oqOkSqMMSHWoKJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fco383x%2FdJMcabKQW9Z%2FhXkHSQ5oqOkSqMMSHWoKJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;578&quot; height=&quot;84&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 재지정(I/O Redirection) 기능: 키보드나 모니터가 아닌 파일로 재지정&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;FD: 프로세스 별로 오픈한 파일을 식별하기 위해 부여한 파일 번호를 의미
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;표준 입력(STDIN, FD:0)&lt;/li&gt;
&lt;li&gt;표준 출력(STDOUT, FD:1)&lt;/li&gt;
&lt;li&gt;표준 에러(STDERR, FD:2)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6DWJN/dJMcajvhUdV/phVbPQVPuepkLIz8WuZ6Qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6DWJN/dJMcajvhUdV/phVbPQVPuepkLIz8WuZ6Qk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6DWJN/dJMcajvhUdV/phVbPQVPuepkLIz8WuZ6Qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6DWJN%2FdJMcajvhUdV%2FphVbPQVPuepkLIz8WuZ6Qk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;591&quot; height=&quot;142&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리다이렉션 기호(Operator)&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 126px;&quot; border=&quot;1&quot; data-path-to-node=&quot;5&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;기호&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;기능&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;설명 및 예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;5,1,0,0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;5,1,1,0&quot;&gt;표준 출력(1) 덮어쓰기(Overwrite)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;5,1,2,0&quot;&gt;ls &amp;gt; list.txt (기존 내용 지우고 새로 씀)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;5,2,0,0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;5,2,1,0&quot;&gt;표준 출력(1) 이어쓰기(Append)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;5,2,2,0&quot;&gt;ls &amp;gt;&amp;gt; list.txt (기존 내용 밑에 추가함)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;5,3,0,0&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;5,3,1,0&quot;&gt;표준 입력(0)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;5,3,2,0&quot;&gt;cat &amp;lt; list.txt (파일의 내용을 입력으로 받음)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;5,4,0,0&quot;&gt;2&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;5,4,1,0&quot;&gt;표준 에러(2) 덮어쓰기&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;5,4,2,0&quot;&gt;find / -name &quot;test&quot; 2&amp;gt; error.txt (에러 메시지만 저장)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;5,5,0,0&quot;&gt;2&amp;gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;5,5,1,0&quot;&gt;표준 에러(2) 이어쓰기&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;5,5,2,0&quot;&gt;에러 로그를 지속적으로 누적할 때 사용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이프 또는 파이프라인 기능: 프로세스간 통신을 위한 기법&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;명령어1 | 명령어2&lt;/span&gt;:&lt;/b&gt; 명령어1의 표준 출력(FD:1)을 명령어2의 표준 입력(FD:0)으로 연결(IPC 기법)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oAb6u/dJMcaaZqCiP/dQeZ840LZeDUORw3mAiqVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oAb6u/dJMcaaZqCiP/dQeZ840LZeDUORw3mAiqVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oAb6u/dJMcaaZqCiP/dQeZ840LZeDUORw3mAiqVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoAb6u%2FdJMcaaZqCiP%2FdQeZ840LZeDUORw3mAiqVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;458&quot; height=&quot;114&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주의 사항: 표준 에러(FD:2)는 파이프를 통과하지 않으므로 에러까지 넘기려면 2&amp;gt;&amp;amp;1 | 처리가 필요함.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특수문자(Meta Character)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 36.3935%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;기호&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;~&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;홈 디렉터리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;.&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;현재 디렉터리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;..&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;상위 디렉터리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;#&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;주석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;$&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;쉘 변수(&lt;span style=&quot;color: #409d00;&quot;&gt;$쉘변수명&lt;/span&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;&amp;amp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;백그라운드 모드로 실행(&lt;span style=&quot;color: #409d00;&quot;&gt;명령어 &amp;amp;&lt;/span&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;*&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;임의의 0개 이상 문자 대체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;?&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;임의의 1개 문자 대체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;;&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;쉘 명령 구분자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;|&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;파이프&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;&amp;lt;&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;입력 재지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.97674%;&quot;&gt;&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 29.4186%;&quot;&gt;출려 재지정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특수문자 기능 무력화&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 59.7674%;&quot; border=&quot;1&quot; data-path-to-node=&quot;4&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.62791%;&quot;&gt;기호&lt;/td&gt;
&lt;td style=&quot;width: 53.0232%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.62791%;&quot;&gt;&lt;span data-path-to-node=&quot;4,1,0,0&quot;&gt;\&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 53.0232%;&quot;&gt;&lt;span data-path-to-node=&quot;4,1,2,0&quot;&gt;바로 뒤에 오는 특수문자 1개의 기능을 무력화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.62791%;&quot;&gt;&lt;span data-path-to-node=&quot;4,2,0,0&quot;&gt;' '&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 53.0232%;&quot;&gt;&lt;span data-path-to-node=&quot;4,2,2,0&quot;&gt;따옴표 안의 모든 특수문자 기능을 무력화하고 단순 문자열로 취급&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.62791%;&quot;&gt;&lt;span data-path-to-node=&quot;4,3,0,0&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 53.0232%;&quot;&gt;&lt;span data-path-to-node=&quot;4,3,2,0&quot;&gt;묶인 문자열 중 $, `(백틱), \ 세 개를 제외한 나&lt;/span&gt;&lt;span data-path-to-node=&quot;4,3,2,0&quot;&gt;머지 특수문자만 무력화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;논리적인 명령어 제어&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 54.8837%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.86051%;&quot;&gt;기호&lt;/td&gt;
&lt;td style=&quot;width: 47.907%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.86051%;&quot;&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 47.907%;&quot;&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;앞의 명령어가 성공(정상 종료) 했을 때만 뒤의 명령어를 실행&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.86051%;&quot;&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;||&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 47.907%;&quot;&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;앞의 명령어가 실패(에러 발생) 했을 때만 뒤의 명령어를 실행&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 시스템: 논리적인 자료구조&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;597&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvxOPG/dJMcafT0b5d/OJ42rOYm2MZ83qkFSlvaB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvxOPG/dJMcafT0b5d/OJ42rOYm2MZ83qkFSlvaB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvxOPG/dJMcafT0b5d/OJ42rOYm2MZ83qkFSlvaB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvxOPG%2FdJMcafT0b5d%2FOJ42rOYm2MZ83qkFSlvaB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;606&quot; height=&quot;597&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;597&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0,0&quot;&gt;Boot Block:&lt;/b&gt; 운영체제 부팅/초기화를 위한 부트스트랩 코드 저장&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,1,0&quot;&gt;Super Block:&lt;/b&gt; 파일 시스템 전체의 메타데이터(총 블록 수, 여유 블록 수, 블록 크기 등) 관리&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,2,0&quot;&gt;Inode List:&lt;/b&gt; 각 파일 및 디렉터리의 고유한 inode 구조체들이 모여있는 구역&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,3,0&quot;&gt;Data Block:&lt;/b&gt; 실제 파일의 내용(데이터)이 저장되는 공간&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 시스템과 링크(Link, 기존 파일에 대한 또 다른 접근 포인트를 만들어주는 기능) 파일&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 175px;&quot; border=&quot;1&quot; data-path-to-node=&quot;11&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;11,1,1,0&quot;&gt;하드 링크(Hard Link)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;11,1,2,0&quot;&gt;심볼릭/소프트 링크(Symbolic Link)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0,0&quot;&gt;개념&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,1,1,0&quot;&gt;원본과 완벽히 동일한 파일(이름만 다름)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,1,2,0&quot;&gt;원본 파일의 '경로(Path)'를 담고 있는 새로운 파일&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0,0&quot;&gt;명령어&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;ln 원본 링크명&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;ln -s [원본_file | 원본_directory] 링크명&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;11,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0,0&quot;&gt;Inode&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;11,3,1,0&quot;&gt;원본과 동일한 inode 번호 공유&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span data-path-to-node=&quot;11,3,2,0&quot;&gt;원본과 다른 독립적인 inode 번호 할당&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,4,0,0&quot;&gt;디렉터리&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,4,1,0&quot;&gt;연결 불가&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,4,2,0&quot;&gt;연결 가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,5,0,0&quot;&gt;파티션 교차&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,5,1,0&quot;&gt;다른 파티션(파일 시스템)에 연결 불가능&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,5,2,0&quot;&gt;다른 파티션에도 자유롭게 연결 가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,6,0,0&quot;&gt;원본 삭제 시&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,6,1,0&quot;&gt;링크 파일로 여전히 데이터 접근 가능&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,6,2,0&quot;&gt;접근 불가 (단절된 링크, Broken Link 발생)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,7,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,7,0,0&quot;&gt;확인 방법&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,7,1,0&quot;&gt;ls -l 시 링크 카운트(Link count) 증가 확인&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;11,7,2,0&quot;&gt;ls -l 시 권한 앞자리가 l이며, -&amp;gt; 로 원본을 가리킴&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디렉터리 관리&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VJSl2/dJMcacpq0CW/4HvgLbCgqkk19i1K02rrp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VJSl2/dJMcacpq0CW/4HvgLbCgqkk19i1K02rrp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VJSl2/dJMcacpq0CW/4HvgLbCgqkk19i1K02rrp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVJSl2%2FdJMcacpq0CW%2F4HvgLbCgqkk19i1K02rrp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;519&quot; height=&quot;250&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디렉터리 내용 출력(ls 명령어)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;ls [옵션] [file_name | directory_name]&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;702&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w108l/dJMcaa6ekSt/HYWZuQ0koZ7OkKXSuQwnWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w108l/dJMcaa6ekSt/HYWZuQ0koZ7OkKXSuQwnWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w108l/dJMcaa6ekSt/HYWZuQ0koZ7OkKXSuQwnWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw108l%2FdJMcaa6ekSt%2FHYWZuQ0koZ7OkKXSuQwnWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;702&quot; height=&quot;139&quot; data-origin-width=&quot;702&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ls 옵션&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 40.6977%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.25581%;&quot;&gt;옵션&lt;/td&gt;
&lt;td style=&quot;width: 32.4419%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.25581%;&quot;&gt;-l&lt;/td&gt;
&lt;td style=&quot;width: 32.4419%;&quot;&gt;목록 형태로 자세히 보여줌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.25581%;&quot;&gt;-a&lt;/td&gt;
&lt;td style=&quot;width: 32.4419%;&quot;&gt;모든 디렉터리와 파일(숨김 포함) 보여줌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.25581%;&quot;&gt;-R&lt;/td&gt;
&lt;td style=&quot;width: 32.4419%;&quot;&gt;하위 디렉터리까지 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.25581%;&quot;&gt;-F&lt;/td&gt;
&lt;td style=&quot;width: 32.4419%;&quot;&gt;파일 종류와 기호 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.25581%;&quot;&gt;-i&lt;/td&gt;
&lt;td style=&quot;width: 32.4419%;&quot;&gt;inode number 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ls 파일 종류&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 25.5814%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.02326%;&quot;&gt;종류&lt;/td&gt;
&lt;td style=&quot;width: 17.5581%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.02326%;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;width: 17.5581%;&quot;&gt;일반 정규 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.02326%;&quot;&gt;d&lt;/td&gt;
&lt;td style=&quot;width: 17.5581%;&quot;&gt;디렉터리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.02326%;&quot;&gt;b&lt;/td&gt;
&lt;td style=&quot;width: 17.5581%;&quot;&gt;블록장치 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.02326%;&quot;&gt;c&lt;/td&gt;
&lt;td style=&quot;width: 17.5581%;&quot;&gt;문자장치 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.02326%;&quot;&gt;l&lt;/td&gt;
&lt;td style=&quot;width: 17.5581%;&quot;&gt;심볼릭 링크 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.02326%;&quot;&gt;p&lt;/td&gt;
&lt;td style=&quot;width: 17.5581%;&quot;&gt;이름 있는 파이프&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.02326%;&quot;&gt;s&lt;/td&gt;
&lt;td style=&quot;width: 17.5581%;&quot;&gt;유닉스 도메인 소켓&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;접근 권한(r, w, x의 숫자(8진수) 값)
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,1,0,0&quot;&gt;r(Read, 읽기):&lt;/b&gt; 4&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,1,1,0&quot;&gt;w(Write, 쓰기):&lt;/b&gt; 2&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,1,2,0&quot;&gt;x(Execute, 실행):&lt;/b&gt; 1&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,1,3,0&quot;&gt;예시:&lt;/i&gt; rwxr-xr-- = (4+2+1) / (4+0+1) / (4+0+0) = 754&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;cd [directory_name]&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: 디렉터리간 이동 명령어&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;mkdir [-p] directory_name&lt;/b&gt;&lt;/span&gt;: 새로운 디렉터리 생성&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-p: 계층 구조를 가지는 디렉터리 모두 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;rmdir [-p] directory_name&lt;/b&gt;&lt;/span&gt;: 기존의 빈 디렉터리 삭제&lt;span style=&quot;color: #409d00;&quot;&gt;(단, 해당 디렉터리에 아무것도 없어야함)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;rm -r directory_name&lt;/b&gt;&lt;/span&gt;: 파일이 있더라도 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;chmod [-R] 접근권한 [file_name | directory_name ...]&lt;/span&gt;&lt;/b&gt;: 파일 접근권한 변경&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-R: 하위 디렉터리와 파일의 권한까지 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 38.0214%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 38.0233%;&quot; colspan=&quot;2&quot;&gt;&lt;b&gt;접근권한(예시: u+x | g=rwx | 755 | 126 ...)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.76744%;&quot;&gt;대상&lt;/td&gt;
&lt;td style=&quot;width: 28.2559%;&quot;&gt;u(user), g(group), o(other), a(all)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.76744%;&quot;&gt;연산자&lt;/td&gt;
&lt;td style=&quot;width: 28.2559%;&quot;&gt;+(추가), -(제거), =(설정)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.76744%;&quot;&gt;접근권한&lt;/td&gt;
&lt;td style=&quot;width: 28.2559%;&quot;&gt;r(읽기, 4), w(쓰기, 2), x(실행, 1)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;chown [-hR] 소유자:소유그룹 [file_name | directory_name ...]&lt;/b&gt;&lt;/span&gt;: 파일 소유자 및 소유그룹 변경&lt;span style=&quot;color: #409d00;&quot;&gt;(root만 실행 가능)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt; chgrp [-hR] 소유그룹 [file_name | directory_name ...]&lt;/b&gt;&lt;/span&gt;: 파일 소유 그룹 변경&lt;span style=&quot;color: #409d00;&quot;&gt;(root만 실행 가능)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-h: 심볼릭 링크 파일 자체의 소유자나 소유그룹 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접근권한 마스크 설정(umask): 파일(기본값: 666) 또는 디렉터리(&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;기본값:&lt;/span&gt;&amp;nbsp;777) 생성시 설정하는 값으로 제거할 접근권한 정보가 설정됨(권장 설정 값은 mask 022)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;umask 숫자&lt;/b&gt;&lt;/span&gt;: 기본 설정 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;find path [expression] [action]&lt;/b&gt;&lt;/span&gt;: 시스템 내의 파일 중 사용자가 원하는 파일을 찾아줌&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;path: 절대경로(/: 최상위, /파일명: 해당 파일 이하) or 상대경로(.: 현재 디렉터리 이하)&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;12&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;expression 종류(옵션)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,1,0,0&quot;&gt;-n&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1,0,0&quot;&gt;ame &quot;파일명&quot;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;12,1,1,0&quot;&gt;파일명으로 검색(와일드카드 *, ? 사용 시 반드시 따옴표로 묶을 것)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,2,0,0&quot;&gt;-type 파일종류&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;12,2,1,0&quot;&gt;f(일반 파일), d(디렉터리), l(심볼릭 링크), b(블록), c(문자)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,3,0,0&quot;&gt;-user 소유자명&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;12,3,1,0&quot;&gt;특정 사용자(소유자)의 파일 검색&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,4,0,0&quot;&gt;-group 소유그룹명&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;12,4,1,0&quot;&gt;특정 그룹 소유의 파일 검색&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,5,0,0&quot;&gt;-size [+-]num[단위]&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;12,5,1,0&quot;&gt;파일 크기로 검색(단위: c(바이트), k(KB), M(MB), G(GB))&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,6,0,0&quot;&gt;-perm [-]mode&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;12,6,1,0&quot;&gt;특정 권한(퍼미션)을 가진 파일 검색&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,7,0,0&quot;&gt;-atime [+-]n&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;12,7,1,0&quot;&gt;최근 n일 기준 접근(Access)된 파일(예: +7은 7일 이전, -7은 7일 이내)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,8,0,0&quot;&gt;-ctime [+-]n&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;12,8,1,0&quot;&gt;최근 n일 기준 속성 변경(Change)된 파일&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,9,0,0&quot;&gt;-mtime [+-]n&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;12,9,1,0&quot;&gt;최근 n일 기준 내용 수정(Modify)된 파일&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,10,0,0&quot;&gt;-exec 명령어 {} \;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;12,10,1,0&quot;&gt;검색된 파일({})에 대해 지정한 명령어를 수행하고 \;로 종료&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디렉터리 관리 명령어:&lt;span style=&quot;color: #333333;&quot;&gt; &lt;b&gt;ls, cd, pwd(현재 작업 디렉터리의 절대경로 출력), mkdir, rmdir&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 관리 명령어&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;cat file_name&lt;/b&gt;&lt;/span&gt;: 파일 내용을 한 번에 출력 또는 병합&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;more file_name&lt;/b&gt;&lt;/span&gt;: 내용이 길 때 페이지 단위로 출력&lt;span style=&quot;color: #409d00;&quot;&gt;(Space: 다음 페이지, Enter: 한 줄씩) &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;head [-n 숫자] file_name&lt;/b&gt;&lt;/span&gt;: 내용의 앞부분 출력&lt;span style=&quot;color: #409d00;&quot;&gt;(default 10줄)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;tail&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;[-n 숫자 | -f]&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;: 내용의 뒷 부분 출력(default 10줄), -f: 실시간 출력&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;mv old_name [new_name | directory_name]&lt;/b&gt;&lt;/span&gt;: 이름 변경 및 위치 변경&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;cp [-r] 원본파일 새파일&lt;/b&gt;&lt;/span&gt;: 원본 파일 내용을 새 파일로 복사&lt;span style=&quot;color: #409d00;&quot;&gt;(-r: 전체 복사)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;rm [-rf] file_name | directory_name&lt;/b&gt;&lt;/span&gt;: 강제 삭제&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;ln [-s] 목표파일 link_name&lt;/b&gt;&lt;/span&gt;: 하드 링크 또는 심볼릭 링크 파일을 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 권한 관리 명령어: &lt;b&gt;chmod, chown, chgrp, touch(0Byte 파일 생성 및 파일의 시간 변경), umask&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 응용 명령어&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;wc [-l] file_name&lt;/b&gt;&lt;/span&gt;: 파일의 행(Line), 단어, 문자 수 출력&lt;span style=&quot;color: #409d00;&quot;&gt;(-l: 몇 줄인지 출력)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;cut [옵션] fime_name&lt;/b&gt;&lt;/span&gt;: 파일 내용에서 특정 필드(열, Column)나 문자를 잘라내어 추출&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;paste file_name1 file_name2&lt;/b&gt;&lt;/span&gt;: &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;두 파일의 내용을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;같은 줄(Line)끼리 옆으로 이어 붙임&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;tr &quot;기본문자&quot; &quot;치환문자&quot;&lt;/b&gt;&lt;/span&gt;: 문자를 치환하거나 삭제(-d). 예시는 소문자를 전부 대문자로 바꾸는 명령어&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;sort [-r] file_name&lt;/b&gt;&lt;/span&gt;: 파일 내용을 알파벳/숫자 순으로 정렬&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;split&lt;/b&gt;&lt;/span&gt;: 파일 분할&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;uniq&lt;/b&gt;&lt;/span&gt;: 연속된 중복 줄을 제거&lt;span style=&quot;color: #409d00; text-align: start;&quot;&gt;(예: sort test.txt | uniq)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;cmp file_name1 file_name2&lt;/b&gt;&lt;/span&gt;: &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;두 파일을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;바이트(Byte) 단위로 비교하여 처음으로 내용이 달라지는 위치를 출력&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;comm file_name1 file_name2&lt;/b&gt;&lt;/span&gt;: 두 파일을 줄 단위로 비교하여 3개의 열(1열: 1에만 있음, 2열: 2에만 있음, 3열: 공통)로 출력&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;diff file_name1 file_name2&lt;/b&gt;&lt;/span&gt;: 두 파일 간의 내용 차이점을 비교해서 출력&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;grep &quot;패턴&quot; /경로&lt;/b&gt;&lt;/span&gt;: 특정 문자열(패턴)이 포함된 줄만 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포르세스 개요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU6l1T/dJMcabjMSie/Km3CGYd1oJh7OrPkpOagHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU6l1T/dJMcabjMSie/Km3CGYd1oJh7OrPkpOagHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU6l1T/dJMcabjMSie/Km3CGYd1oJh7OrPkpOagHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU6l1T%2FdJMcabjMSie%2FKm3CGYd1oJh7OrPkpOagHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;629&quot; height=&quot;479&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스 A와 프로세스 B가 동일한 test.txt 파일을 동시에 열었다고 가정해 봅시다. 실제 파일(Vnode)은 1개지만 A와 B가 파일을 읽고 있는 위치(Offset)나 열기 모드(Read/Write)는 서로 다를 수 있습니다. 따라서 &lt;b data-index-in-node=&quot;140&quot; data-path-to-node=&quot;7,1,0&quot;&gt;Vnode는 하나만 유지하여 메모리를 아끼고 각 프로세스의 현재 상태(Offset 등)는 System Open-File Table에 따로따로 기록&lt;/b&gt;하는 효율적이고 안전한 방식을 쓰는 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Process 메모리 구조&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Code(Text) Area:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;작성한 프로그램의 실제 코드(기계어 명령어)가 저장되는 공간(Read-Only로 보호됨)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Data Area:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;전역 변수(Global)와 정적 변수(Static)가 저장되는 공간, 프로그램 시작 시 할당되고 종료 시 해제됨.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Heap Area:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;프로그래머가 필요할 때 동적으로 할당하는 메모리 공간&lt;span style=&quot;color: #409d00;&quot;&gt;(아래에서 위로&amp;nbsp;주소가 자라남)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Stack Area:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;함수 호출 시 생성되는 지역 변수, 매개변수, 리턴 주소 등이 임시로 저장되는 공간&lt;span style=&quot;color: #409d00;&quot;&gt;(위에서 아래로&amp;nbsp;주소가 자라남)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PCB(Process Control Block):&lt;/b&gt; 각 프로세스를 관리하기 위해 유지하는 정보를 담고 있음&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Process Number: PID가 저장됨&lt;/li&gt;
&lt;li&gt;Program Counter: 문맥교환 발생시 다음에 실행할 명령어 위치 저장
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;문맥 교환(Context Switching): CPU에서 실행중인 프로세스가 새로운 프로세스로 교환될 때 현재 상태 저장 후 새로운 프로세스의 상태를 복원하는 과정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Register Save Area: 문맥교환 발생시 현재 프로세스의 실행 상태 저장
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;레지스터(Register): CPU 내부의 고속 소량의 임시 기억장치&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Process State: 해당 프로세스가 현재 라이프사이클 중 어느 단계에 있는지를 나타낸다.&lt;/li&gt;
&lt;li&gt;Memory Limits: 프로세스가 사용하는 메모리 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;FDT(File Descriptor Table):&lt;/b&gt; 프로세스마다 개별적으로 가지는 파일 테이블, FD 0(입력)&amp;middot;1(출력)&amp;middot;2(에러)는 기본 할당되며 새로 파일을 열면 사용 가능한 가장 작은 숫자(3번부터)가 부여됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b data-path-to-node=&quot;16,3,0,0&quot; data-index-in-node=&quot;0&quot;&gt;System Open-File Table:&lt;/b&gt; 시스템 전체에서 열려있는 파일들의 상태를 관리&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Open Mode: 파일의 읽기/쓰기 모드&lt;/li&gt;
&lt;li&gt;Offset: 파일 입출력(I/O)을 수행하기 위한 현재 위치 값&lt;/li&gt;
&lt;li&gt;Reference Count: 해당 파일의 참조 개수&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b data-path-to-node=&quot;16,4,0,0&quot; data-index-in-node=&quot;0&quot;&gt;Active Vnode Table:&lt;/b&gt; 저장 매체(디스크)에 있는 실제 파일의 고유한 정보(inode 기반)를 메모리상에 캐싱해 둔 객체(중재자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b data-path-to-node=&quot;8,0,0&quot; data-index-in-node=&quot;0&quot;&gt;fork():&lt;/b&gt;&amp;nbsp;나랑 똑같은 복사본(자식) 만들기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b data-path-to-node=&quot;8,1,0&quot; data-index-in-node=&quot;0&quot;&gt;exec():&lt;/b&gt;&amp;nbsp;복사본(자식)의 뇌를 완전히 다른 새로운 프로그램으로 덮어씌워 실행하기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b data-path-to-node=&quot;8,2,0&quot; data-index-in-node=&quot;0&quot;&gt;wait():&lt;/b&gt;&amp;nbsp;부모가 자식이 종료될 때까지 대기하며 자식의 '종료 상태 정보'를 회수하는 함수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;sleep(n):&lt;/b&gt; &lt;span style=&quot;text-align: start;&quot;&gt;지정한 n초 동안 프로세스 실행을 일시 대기(Sleep) 상태로 전환&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PPID: 부모 프로세스의 PID&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kill -15 PID(SIGTERM): 프로세스&lt;span&gt;&amp;nbsp;정상&lt;/span&gt;&amp;nbsp;종료(기본값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kill -9 PID(SIGKILL): 프로세스&lt;span&gt;&amp;nbsp;&lt;/span&gt;강제 종료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;좀비 프로세스:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;종료 상태 정보를 부모에게 반환하지 못해서 또는 부모 프로세스 오류 등으로 소멸하지 않고 남아있는 프로세스&lt;span style=&quot;color: #409d00;&quot;&gt;(시스템 가용성의 문제 발생 &amp;rarr; 부모 프로세스 강제 종료 or 커널 정보 초기화 &amp;rarr; 고아 프로세스가 됨) &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고아 프로세스: 자식 프로세스가 살아있는 상태에서 부모 프로세스 종료시 남아있는 자식 프로세스로 이 경우 init 프로세스(PID 1)가 대리모 역할을 수행한다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;ps [옵션]&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 34.7674%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.4884%;&quot;&gt;옵션&lt;/td&gt;
&lt;td style=&quot;width: 21.279%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.4884%;&quot;&gt;-e&lt;/td&gt;
&lt;td style=&quot;width: 21.279%;&quot;&gt;모든 프로세스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.4884%;&quot;&gt;-u 사용자명&lt;/td&gt;
&lt;td style=&quot;width: 21.279%;&quot;&gt;해당 사용자의 프로세&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.4884%;&quot;&gt;-f&lt;/td&gt;
&lt;td style=&quot;width: 21.279%;&quot;&gt;상세한 정보&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.4884%;&quot;&gt;-l&lt;/td&gt;
&lt;td style=&quot;width: 21.279%;&quot;&gt;더 상세한 정보&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.4884%;&quot;&gt;-o [필드 1, ...]&lt;/td&gt;
&lt;td style=&quot;width: 21.279%;&quot;&gt;선택된 필드 정보만 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp52gO/dJMcahj0B2N/mfK1Al4aeuayqWu70TtGvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp52gO/dJMcahj0B2N/mfK1Al4aeuayqWu70TtGvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp52gO/dJMcahj0B2N/mfK1Al4aeuayqWu70TtGvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp52gO%2FdJMcahj0B2N%2FmfK1Al4aeuayqWu70TtGvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;219&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;219&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b data-path-to-node=&quot;13,1,0,0&quot; data-index-in-node=&quot;0&quot;&gt;프로세스 그룹(PGID):&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;여러 프로세스들을 하나로 묶어 관리하기 위한 집합(주로 시그널을 한 번에 보내기 위해 사용)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b data-path-to-node=&quot;13,1,1,0&quot; data-index-in-node=&quot;0&quot;&gt;세션(SID):&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;터미널과의 논리적인 연결 단위, 사용자가 로그인해서 로그아웃할 때까지 생성된 모든 프로세스 그룹의 집합.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b data-path-to-node=&quot;13,1,2,0&quot; data-index-in-node=&quot;0&quot;&gt;터미널 제어권:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;키보드 입력 및 제어 시그널(Ctrl+C 등)을 받을 수 있는 권한.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;포그라운드 모드: 터미널에 대한 제어권을 가지고 동작하는 모드, 사용자와 상호작용 가능&lt;/li&gt;
&lt;li&gt;백그라운드 모드: 터미널에 대한 제어권 없이 동작하는 모드, 키보드 시그널을 받지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;18&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.79069%;&quot;&gt;&lt;b&gt;명령어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.8837%;&quot;&gt;&lt;b&gt;문법 및 활용 예시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 67.2093%;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.79069%;&quot;&gt;&lt;span data-path-to-node=&quot;18,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,0,0&quot;&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;18,1,1,0&quot;&gt;find / -name &quot;test&quot; &amp;gt; log.txt &amp;amp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 67.2093%;&quot;&gt;&lt;span data-path-to-node=&quot;18,1,2,0&quot;&gt;명령어 맨 뒤에 붙이면 해당 작업을 처음부터 백그라운드로 실행&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.79069%;&quot;&gt;&lt;span data-path-to-node=&quot;18,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,2,0,0&quot;&gt;jobs&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;18,2,1,0&quot;&gt;jobs&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 67.2093%;&quot;&gt;&lt;span data-path-to-node=&quot;18,2,2,0&quot;&gt;현재 터미널 세션에서 백그라운드로 돌고 있거나 일시 정지된 작업들의 목록과 작업 번호(%n)를 출력&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.79069%;&quot;&gt;&lt;span data-path-to-node=&quot;18,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,3,0,0&quot;&gt;fg&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;18,3,1,0&quot;&gt;fg %1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 67.2093%;&quot;&gt;&lt;span data-path-to-node=&quot;18,3,2,0&quot;&gt;백그라운드에 있는 1번 작업을 포그라운드로 가져 온다(제어권 획득)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.79069%;&quot;&gt;&lt;span data-path-to-node=&quot;18,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,4,0,0&quot;&gt;bg&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;18,4,1,0&quot;&gt;bg %2&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 67.2093%;&quot;&gt;&lt;span data-path-to-node=&quot;18,4,2,0&quot;&gt;Ctrl+Z로 일시 정지된 2번 작업을 백그라운드에서 다시 실행(재개)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.79069%;&quot;&gt;&lt;span data-path-to-node=&quot;18,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,5,0,0&quot;&gt;nohup&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;18,5,1,0&quot;&gt;nohup ./server_start.sh &amp;amp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 67.2093%;&quot;&gt;&lt;span data-path-to-node=&quot;18,5,2,0&quot;&gt;로그아웃하여 세션(터미널)이 끊겨도 프로세스가 죽지 않고 계속 백그라운드에서 실행되도록 보장하는 명령어&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnesTE/dJMcaaFa5Jw/QXiAKxg0kgz0HM8i5YP8Xk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnesTE/dJMcaaFa5Jw/QXiAKxg0kgz0HM8i5YP8Xk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnesTE/dJMcaaFa5Jw/QXiAKxg0kgz0HM8i5YP8Xk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnesTE%2FdJMcaaFa5Jw%2FQXiAKxg0kgz0HM8i5YP8Xk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;742&quot; height=&quot;314&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;314&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #666666; text-align: start;&quot; data-path-to-node=&quot;12,0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #666666; text-align: start;&quot; data-path-to-node=&quot;12,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b data-path-to-node=&quot;12,0&quot; data-index-in-node=&quot;0&quot;&gt;프로세스 간 통신(IPC: Inter-Process Communication):&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;프로세스는 각자 독립된 메모리 공간을 가지므로 서로 직접 대화할 수 없다. 따라서 커널이 제공하는 우체국 같은 기능(파이프, 시그널, 메시지 큐, 공유 메모리 등)을 통해 통신해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-path-to-node=&quot;19&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;kill -[signal_number | signal_name] PID&lt;/b&gt;&lt;/span&gt;: PID 종료 명령어&lt;span style=&quot;color: #409d00;&quot;&gt;(기본값: SIGTERM)&lt;/span&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;Signal_name&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;Signal_number&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;SIGINT&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;Ctrl + C&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;입력 시 발생(실행 중인 포그라운드 프로세스 중지)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;SIGKILL&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;무시하거나 임의로 처리 못하는 시그널, 강제 종료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;SIGSTOP&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;무시하거나 임의로 처리 못하는 시그널, 강제 정지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;SIGTERM&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;정상 default 종료(기본값)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;SIGFPE&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;0으로 나누기 등 치명적인 산술 연산 오류 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;SIGCHLD&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;프로세스 종료시 부모 프로세스가 받는 시그널(부모에게 보내는 사망 시그널)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;SIGALRM&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;alarm() 함수로 설정한 타이머의 시간이 다 되었을 때 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;SIGQUIT&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;Ctrl + \&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;입력 시 발생(종료와 동시에 상태 정보인 Core Dump를 남김)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;SIGSEGV&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;커널에 의해 발생(잘못된 메모리 참조 오류)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.7674%;&quot;&gt;SIGHUP&lt;/td&gt;
&lt;td style=&quot;width: 15.5233%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 69.7093%;&quot;&gt;터미널 연결이 끊어진 프로세스가 받는 시그널&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보보안기사</category>
      <category>UNIX/LINUX 기본 학습</category>
      <author>Hong's_Computer</author>
      <guid isPermaLink="true">https://hongstudydiary.tistory.com/216</guid>
      <comments>https://hongstudydiary.tistory.com/216#entry216comment</comments>
      <pubDate>Fri, 1 May 2026 22:12:03 +0900</pubDate>
    </item>
    <item>
      <title>[정보보안기사 요약 1] 윈도우 기본 학습</title>
      <link>https://hongstudydiary.tistory.com/215</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;윈도우 인증 과정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;419&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/52vWz/dJMcabqa5DF/Kj3ir3ZPc036yK9tPKiaXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/52vWz/dJMcabqa5DF/Kj3ir3ZPc036yK9tPKiaXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/52vWz/dJMcabqa5DF/Kj3ir3ZPc036yK9tPKiaXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F52vWz%2FdJMcabqa5DF%2FKj3ir3ZPc036yK9tPKiaXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;667&quot; height=&quot;419&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;419&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;LSA(Local Security Authority):&lt;/b&gt; 윈도우 보안 서브시스템의 중심(핵심 프로세스), &lt;span style=&quot;color: #409d00;&quot;&gt;로컬 로그인인지 도메인 로그인인지 판단하여 적절한 인증 패키지(NTLM, Kerberos 등) 호출,&lt;/span&gt; 인증 성공 시 사용자에게 접근 토큰(Access Token) 생성 및 부여, 로컬 보안 정책 관리 및 SRM이 전달한 감사 메시지를 기반으로 보안 이벤트 로그 기록&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SAM(Security Account Manager):&lt;/b&gt; &lt;span style=&quot;color: #409d00;&quot;&gt;로컬 사용자 및 그룹 계정 정보(패스워드 해시값 등)를 저장하는 데이터베이스,&lt;/span&gt; LSA의 인증 요청을 받아 사용자가 입력한 패스워드 정보와 DB 속 해시값을 비교하여 인증 타당성 검증, 시스템 내 물리적 파일(C:\Windows\System32\config\SAM)과 레지스트리에 존재하므로 접근통제 및 암호화(Syskey 등) 관리가 필수적&lt;/li&gt;
&lt;li data-path-to-node=&quot;8&quot;&gt;&lt;b&gt;SRM(Security Reference Monitor):&lt;/b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt; 시스템 자원(파일, 디렉터리 등 객체)에 대한 실제 접근 통제 수행,&lt;/span&gt; LSA가 부여한 사용자의 접근 토큰(Access Token)과 객체에 설정된 접근 제어 목록(DACL)을 비교하여 접근 허용/거부 결정, 자원 접근 시도에 대한 감사 메시지(Audit Message)를 생성하여 LSA로 전달&lt;/li&gt;
&lt;li data-path-to-node=&quot;6&quot;&gt;&lt;b&gt;NTLM(NT Lan Manager):&lt;/b&gt; &lt;span style=&quot;color: #409d00;&quot;&gt;윈도우 환경에서 사용되는 인증 프로토콜,&lt;/span&gt; Challenge/Response (질의/응답) 방식을 사용하여 네트워크상에 평문 패스워드를 노출하지 않고 인증 수행, 현재 AD 환경의 기본 인증은 Kerberos이지만 주로 이전 시스템과의 하위 호환성을 위해 사용됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;로컬 인증 과정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/30X7p/dJMcacvQ0OY/Tb1Rk7g9dluXGlYGAVFuq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/30X7p/dJMcacvQ0OY/Tb1Rk7g9dluXGlYGAVFuq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/30X7p/dJMcacvQ0OY/Tb1Rk7g9dluXGlYGAVFuq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F30X7p%2FdJMcacvQ0OY%2FTb1Rk7g9dluXGlYGAVFuq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;406&quot; height=&quot;245&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원격 도메인 인증&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;269&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x4u4r/dJMcabDHg2f/klWffXLSkUkCJ2VHWxwrm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x4u4r/dJMcabDHg2f/klWffXLSkUkCJ2VHWxwrm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x4u4r/dJMcabDHg2f/klWffXLSkUkCJ2VHWxwrm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx4u4r%2FdJMcabDHg2f%2FklWffXLSkUkCJ2VHWxwrm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;616&quot; height=&quot;269&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;269&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20&quot;&gt;원격 도메인 인증 흐름&lt;/b&gt;: 사용자의 로그인 시도가 &lt;span style=&quot;color: #409d00;&quot;&gt;Winlogon &amp;rarr; 로컬 LSA(Kerberos SSP) &amp;rarr; 도메인 컨트롤러(DC)의 KDC 서비스 &amp;rarr; Active Directory(AD) 순으로 전달되어 중앙 데이터베이스를 통해 검증받는 과정,&lt;/span&gt; 검증 성공 시 DC가 결과를 반환하고 로컬 LSA가 접근 토큰(Access Token)을 생성&amp;middot;발급하여 로그인을 완료함&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-path-to-node=&quot;21&quot;&gt;&lt;b&gt;로컬 LSA(Local Security Authority):&lt;/b&gt; 도메인 로그인 시 내부 Kerberos SSP를 호출하여 도메인 컨트롤러(DC)와 Kerberos 프로토콜을 사용해 통신 수행, DC에서 수신한 최종 인증 결과와 PAC 정보를 기반으로 사용자에게 로컬 접근 토큰(Access Token)을 생성 및 부여&lt;/li&gt;
&lt;li data-path-to-node=&quot;22&quot;&gt;&lt;b&gt;도메인 컨트롤러 LSA(DC LSA):&lt;/b&gt; 도메인 컴퓨터에서 보낸 원격 인증 요청을 수신, 내부적으로 Active Directory와 Kerberos KDC 서비스를 활용하여 실제 인증 및 티켓 발급 처리 후 최종 결과를 로컬 LSA로 반환&lt;/li&gt;
&lt;li data-path-to-node=&quot;23&quot;&gt;&lt;b&gt;Active Directory(AD):&lt;/b&gt; 도메인 환경의 모든 사용자 계정과 비밀번호 해시, 그룹 정보 등을 중앙 집중식으로 저장하는 디렉터리 데이터베이스, DC LSA의 요청에 따라 인증 시도자의 계정 유무와 정보를 제공&lt;/li&gt;
&lt;li data-path-to-node=&quot;24&quot;&gt;&lt;b&gt;Kerberos KDC(Key Distribution Center):&lt;/b&gt; 도메인 컨트롤러 내부에서 Kerberos 프로토콜의 핵심 서비스(AS, TGS)를 수행, 사용자가 정당한지 확인하고 (AS 서비스) 보안 티켓(TGT, TGS)을 발급하여 안전한 네트워크 인증을 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SID(Security Identifier) 구조&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWpKem/dJMcajhnzj6/VOSVxkHbiys7fxDLGtrxjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWpKem/dJMcajhnzj6/VOSVxkHbiys7fxDLGtrxjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWpKem/dJMcajhnzj6/VOSVxkHbiys7fxDLGtrxjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWpKem%2FdJMcajhnzj6%2FVOSVxkHbiys7fxDLGtrxjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;134&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4&quot;&gt;윈도우 보안 식별자(SID, Security Identifier)&lt;/b&gt;: 윈도우 시스템에서 각 사용자, 그룹, 컴퓨터 계정에 부여되는 고유한 식별 번호. 사용자가 로그인 성공 시 LSA에 의해 접근 토큰(Access Token)이 발급되며 해당 토큰 내에 SID 정보가 포함되어 객체(파일, 디렉터리 등) 접근 시 권한 제어 기준으로 사용됨.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-path-to-node=&quot;5&quot;&gt;S(SID): 해당 문자열 체계가 보안 식별자(SID) 구조임을 나타내는 선행 지시자.&lt;/li&gt;
&lt;li data-path-to-node=&quot;6&quot;&gt;1(버전): SID 구조의 리비전(Revision) 레벨 또는 버전 정보. (현재 윈도우 시스템에서는 항상 1을 사용)&lt;/li&gt;
&lt;li data-path-to-node=&quot;7&quot;&gt;5(기관 식별, Identifier Authority): SID를 발급한 최상위 기관. '5'는 윈도우 보안 기관(NT Authority)에서 발급하고 관리함을 의미함.&lt;/li&gt;
&lt;li data-path-to-node=&quot;8&quot;&gt;21 및 고유 식별자(Subauthority): 시스템이 설치된 로컬 컴퓨터나 도메인을 고유하게 식별하는 고유 식별 대역. 21 뒤에 이어지는 3개의 난수 값 블록으로 구성되어 서로 다른 시스템 간의 SID 충돌을 방지함.&lt;/li&gt;
&lt;li data-path-to-node=&quot;9&quot;&gt;RID(Relative ID, 상대 식별자): SID 구조의 가장 마지막 블록으로 해당 도메인이나 로컬 시스템 내에서 특정 사용자나 그룹을 고유하게 구분 짓는 사용자 식별자.
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0,0&quot;&gt;RID 500&lt;/b&gt;: 시스템 최고 관리자(Administrator) 계정&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0&quot;&gt;RID 501&lt;/b&gt;: 게스트(Guest) 계정&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0&quot;&gt;RID 1000 이상&lt;/b&gt;: 일반 사용자 계정(운영체제 버전에 따라 다르나 일반적으로 새 계정 생성 시 1000번부터 순차적으로 부여됨)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우 인증 구조(Challenge&amp;amp;Response 방식)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rGhY9/dJMcafe3VKb/3qNnK6ZUwtcuKUupQb85y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rGhY9/dJMcafe3VKb/3qNnK6ZUwtcuKUupQb85y1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rGhY9/dJMcafe3VKb/3qNnK6ZUwtcuKUupQb85y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrGhY9%2FdJMcafe3VKb%2F3qNnK6ZUwtcuKUupQb85y1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;623&quot; height=&quot;272&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4&quot;&gt;Challenge&amp;amp;Response 인증 방식&lt;/b&gt;: 네트워크상에 사용자의 패스워드를 평문으로 전송하지 않기 위해 고안된 안전한 인증 프로토콜(스니핑 및 재전송 공격 방어 목적)&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;5&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;인증 요청:&lt;/b&gt; 클라이언트(사용자)가 서버(윈도우 시스템)에 로그인을 요청&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Challenge 전달:&lt;/b&gt; 서버는 클라이언트에게 매번 바뀌는 임의의 난수 값인 'Challenge(도전)'를 생성하여 전송&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Response 전송:&lt;/b&gt; 클라이언트는 사용자가 입력한 패스워드의 해시값을 암호화 키로 사용하여 서버가 보낸 Challenge 값을 암호화한 후 이를 'Response(응답)'로 서버에 전송&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인증 확인:&lt;/b&gt; 서버는 로컬 SAM 파일(또는 도메인 컨트롤러)에 저장된 사용자 패스워드 해시값으로 동일하게 Challenge 값을 암호화해 보고 클라이언트가 보낸 Response 값과 일치하는지 비교하여 인증을 승인&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6&quot;&gt;LM(LAN Manager) 해시&lt;/b&gt;: 윈도우 초기 버전에서 사용되던 패스워드 해시 알고리즘. 패스워드를 대소문자 구분 없이 최대 14자로 제한하고 7자리씩 두 블록으로 나눈 뒤 DES 알고리즘으로 암호화함. 구조적으로 매우 취약하여 무차별 대입 공격(Brute-force)에 쉽게 뚫리므로 현재는 사용이 권장되지 않음.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7&quot;&gt;NTLM(NT LAN Manager) 해시&lt;/b&gt;: LM 해시의 보안 취약점을 해결하기 위해 등장한 알고리즘. 대소문자를 구분하고 길이에 제한이 없는 패스워드를 UTF-16LE(유니코드) 방식으로 인코딩한 후 MD4 알고리즘을 사용하여 해시값을 생성함.&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8&quot;&gt;NTLMv2 해시&lt;/b&gt;: 현재 윈도우 시스템에서 사용되는 향상된 기본 NTLM 인증 프로토콜. 사용자 패스워드의 NTLM 해시값에 서버와 클라이언트가 생성한 난수, 타임스탬프 등을 결합하고 HMAC-MD5 알고리즘을 적용하여 생성함. 기존 NTLM 방식보다 암호화 수준이 높아 재전송 공격(Replay Attack) 등에 대해 강력한 보안성을 제공함.&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패스워드 크래킹(Password Cracking) 기법&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;무차별 대입 공격(Brute-force Attack):&lt;/b&gt; 패스워드에 사용될 수 있는 문자, 숫자, 특수문자의 가능한 '모든 경우의 수'를 조합하여 일치할 때까지 무작위로 대입하는 공격. 이론상 시간과 자원만 충분하다면 100% 성공하지만 패스워드의 길이가 길고 복잡도가 높을수록 크래킹에 소요되는 시간이 기하급수적으로 증가함.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;레인보우 테이블 공격(Rainbow Table Attack):&lt;/b&gt; 평문 패스워드들을 해시(Hash) 함수와 R(Reduction) 함수를 수없이 반복 적용하여 가능한 모든 평문 패스워드와 그에 매칭되는 해시값들을 미리 계산해 놓은 거대한 데이터베이스인 '레인보우 테이블(해시 체인)'을 사용하여 탈취한 해시값과 일치하는 평문을 빠르게 역산하는 공격.
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;이 공격을 무력화하기 위한 가장 대표적인 방어 기법은 패스워드를 해싱하기 전에 임의의 문자열을 추가하는 솔팅(Salting) 기법과 해시 함수를 여러 번 반복 수행하는 키 스트레칭(Key Stretching)임.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-path-to-node=&quot;6&quot;&gt;&lt;b&gt;혼합 공격(Hybrid Attack):&lt;/b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt; 사전 공격 + 무차별 대입 공격.&lt;/span&gt; 일반적으로 사전 파일에 있는 의미 있는 단어의 앞뒤에 기호나 숫자를 무작위로 추가하여 대입함.(예: 사전에 있는 'apple'이라는 단어에 '123'이나 '!' 등을 덧붙여 'apple123!' 등으로 변형하여 공격)&lt;/li&gt;
&lt;li data-path-to-node=&quot;4&quot;&gt;&lt;b&gt;사전 대입 공격(Dictionary Attack):&lt;/b&gt; 사용자들이 자주 쓰는 단어, 이름, 생일 등이 저장된 '사전(Dictionary) 파일'을 만들어두고 이를 하나씩 대입하여 해시값을 비교하는 공격. 무차별 대입보다 속도는 빠르지만 사전 파일 목록에 없는 복잡한 패스워드는 알아낼 수 없다는 한계가 있음.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>정보보안기사</category>
      <category>Challenge&amp;amp;Response</category>
      <category>LSA</category>
      <category>SID</category>
      <category>패스워드 크래킹</category>
      <author>Hong's_Computer</author>
      <guid isPermaLink="true">https://hongstudydiary.tistory.com/215</guid>
      <comments>https://hongstudydiary.tistory.com/215#entry215comment</comments>
      <pubDate>Thu, 2 Apr 2026 08:44:04 +0900</pubDate>
    </item>
    <item>
      <title>정보보안기사 취득(2025.12.19)</title>
      <link>https://hongstudydiary.tistory.com/214</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byoCYf/dJMcaadIjtx/nRKGLkwMBVig36vEsYBr51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byoCYf/dJMcaadIjtx/nRKGLkwMBVig36vEsYBr51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byoCYf/dJMcaadIjtx/nRKGLkwMBVig36vEsYBr51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyoCYf%2FdJMcaadIjtx%2FnRKGLkwMBVig36vEsYBr51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;957&quot; height=&quot;326&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정보처리기사 취득후 빅데이터분석기사 vs 정보보안기사 고민을 하다가 공부할 시간의 여유가 좀 있는 편이여서 정보보안기사를 취득했다.&lt;br /&gt;&lt;br /&gt;필기가 오히려 어려웠고 실기는 쉬웠던거 같다.&lt;br /&gt;&lt;br /&gt;알기사? 책으로 공부했었는데&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnQ4PC/dJMcabRcu3C/SueniISr2sJLF8yrCP3Hmk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnQ4PC/dJMcabRcu3C/SueniISr2sJLF8yrCP3Hmk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnQ4PC/dJMcabRcu3C/SueniISr2sJLF8yrCP3Hmk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnQ4PC%2FdJMcabRcu3C%2FSueniISr2sJLF8yrCP3Hmk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;510&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 1200문제중 대략 600문제정도 푸니까 바로 합격할 수 있다.(실기, 필기 둘 다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-path-to-node=&quot;18&quot;&gt;&lt;b data-path-to-node=&quot;18&quot; data-index-in-node=&quot;0&quot;&gt;  이렇게 공부했습니다&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-path-to-node=&quot;19&quot;&gt;&lt;b data-path-to-node=&quot;19&quot; data-index-in-node=&quot;0&quot;&gt;첫째, 필기는 접수와 동시에 시작하기.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;필기 원서를 넣은 날부터 바로 책을 폈다. 대충 암기하고 넘어가기보다는 머릿속으로 완벽히 이해가 될 때까지 꽤 세세하게 파고들며 공부했던 게 큰 도움이 됐다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-path-to-node=&quot;20&quot;&gt;&lt;b data-path-to-node=&quot;20&quot; data-index-in-node=&quot;0&quot;&gt;둘째, 필기 가합격을 확인했다면 바로 실기 모드로 전환하기.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;필기시험 후 가채점으로 합격을 확인한 순간, 쉬지 않고 곧바로 실기 공부를 시작했다. 흐름을 놓치지 않는 게 포인트다.&lt;/p&gt;</description>
      <category>정보보안기사</category>
      <category>공부법</category>
      <category>정보보안기사</category>
      <category>합격</category>
      <author>Hong's_Computer</author>
      <guid isPermaLink="true">https://hongstudydiary.tistory.com/214</guid>
      <comments>https://hongstudydiary.tistory.com/214#entry214comment</comments>
      <pubDate>Wed, 1 Apr 2026 09:12:24 +0900</pubDate>
    </item>
    <item>
      <title>[Level.0] 옹알이(1)</title>
      <link>https://hongstudydiary.tistory.com/213</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;문제 설명: 머쓱이는&amp;nbsp;태어난&amp;nbsp;지&amp;nbsp;6개월&amp;nbsp;된&amp;nbsp;조카를&amp;nbsp;돌보고&amp;nbsp;있습니다.&amp;nbsp;조카는&amp;nbsp;아직&amp;nbsp;&quot;aya&quot;,&amp;nbsp;&quot;ye&quot;,&amp;nbsp;&quot;woo&quot;,&amp;nbsp;&quot;ma&quot;&amp;nbsp;네&amp;nbsp;가지&amp;nbsp;발음을&amp;nbsp;최대&amp;nbsp;한&amp;nbsp;번씩&amp;nbsp;사용해&amp;nbsp;조합한(이어&amp;nbsp;붙인)&amp;nbsp;발음밖에&amp;nbsp;하지&amp;nbsp;못합니다.&amp;nbsp;문자열&amp;nbsp;배열&amp;nbsp;babbling이&amp;nbsp;매개변수로&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;머쓱이의&amp;nbsp;조카가&amp;nbsp;발음할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;단어의&amp;nbsp;개수를&amp;nbsp;return하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요. &lt;br /&gt;&lt;br /&gt;제한사항&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le; babbling의 길이 &amp;le; 100&lt;/li&gt;
&lt;li&gt;1 &amp;le; babbling[i]의 길이 &amp;le; 15&lt;/li&gt;
&lt;li&gt;babbling의 각 문자열에서 &quot;aya&quot;, &quot;ye&quot;, &quot;woo&quot;, &quot;ma&quot;는 각각 최대 한 번씩만 등장합니다.&lt;/li&gt;
&lt;li&gt;즉, 각 문자열의 가능한 모든 부분 문자열 중에서 &quot;aya&quot;, &quot;ye&quot;, &quot;woo&quot;, &quot;ma&quot;가 한 번씩만 등장합니다.&lt;/li&gt;
&lt;li&gt;문자열은&amp;nbsp;알파벳&amp;nbsp;소문자로만&amp;nbsp;이루어져&amp;nbsp;있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 해결&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;def solution(babbling):&lt;br /&gt;&amp;nbsp; &amp;nbsp; answer = 0&lt;br /&gt;&amp;nbsp; &amp;nbsp; arr=['aya', 'ye', 'woo', 'ma']&lt;br /&gt;&amp;nbsp; &amp;nbsp; for bab in babbling:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; temp = bab&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for ar in arr:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; temp = temp.replace(ar, ' ')&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; temp = temp.replace(' ', '')&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if not temp:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer += 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; return answer&lt;br /&gt;&lt;br /&gt;import re&lt;br /&gt;def solution(babbling):&lt;br /&gt;&amp;nbsp; &amp;nbsp; answer = 0&lt;br /&gt;&amp;nbsp; &amp;nbsp; pattern = re.compile(r'^(aya|ye|woo|ma)+$')&lt;br /&gt;&amp;nbsp; &amp;nbsp; for bab in babbling:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if pattern.match(bab):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer += 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; return answer&lt;/blockquote&gt;</description>
      <category>코딩_Python(Level.0)</category>
      <category>Python</category>
      <category>옹알이(1)</category>
      <author>Hong's_Computer</author>
      <guid isPermaLink="true">https://hongstudydiary.tistory.com/213</guid>
      <comments>https://hongstudydiary.tistory.com/213#entry213comment</comments>
      <pubDate>Wed, 25 Mar 2026 14:14:09 +0900</pubDate>
    </item>
    <item>
      <title>[Level.0] 정수를 나선형으로 배치하기</title>
      <link>https://hongstudydiary.tistory.com/212</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;문제 설명: 양의&amp;nbsp;정수&amp;nbsp;n이&amp;nbsp;매개변수로&amp;nbsp;주어집니다.&amp;nbsp;n&amp;nbsp;&amp;times;&amp;nbsp;n&amp;nbsp;배열에&amp;nbsp;1부터&amp;nbsp;n2&amp;nbsp;까지&amp;nbsp;정수를&amp;nbsp;인덱스&amp;nbsp;[0][0]부터&amp;nbsp;시계방향&amp;nbsp;나선형으로&amp;nbsp;배치한&amp;nbsp;이차원&amp;nbsp;배열을&amp;nbsp;return&amp;nbsp;하는&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;작성해&amp;nbsp;주세요. &lt;br /&gt;&lt;br /&gt;제한사항&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le; n &amp;le; 30&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 해결&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;def solution(n):&lt;br /&gt;&amp;nbsp; &amp;nbsp; answer = [[0] * n for _ in range(n)]&lt;br /&gt;&amp;nbsp; &amp;nbsp; dx = [0, 1, 0, -1]&lt;br /&gt;&amp;nbsp; &amp;nbsp; dy = [1, 0, -1, 0]&lt;br /&gt;&amp;nbsp; &amp;nbsp; x, y, direction = 0, 0, 0&lt;br /&gt;&amp;nbsp; &amp;nbsp; for cnt in range(1, n**2 + 1):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer[x][y] = cnt&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nx, ny = x + dx[direction], y + dy[direction]&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if not (0 &amp;lt;= nx &amp;lt; n and 0 &amp;lt;= ny &amp;lt; n) or answer[nx][ny] != 0: &lt;span style=&quot;color: #409d00;&quot;&gt;# () 계산후 not을 수행, 그 다음 or 수행&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; direction = (direction + 1) % 4&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nx, ny = x + dx[direction], y + dy[direction]&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; x, y = nx, ny&lt;br /&gt;&amp;nbsp; &amp;nbsp; return answer&lt;/blockquote&gt;</description>
      <category>코딩_Python(Level.0)</category>
      <category>Python</category>
      <category>정수를 나선형으로 배치하기</category>
      <author>Hong's_Computer</author>
      <guid isPermaLink="true">https://hongstudydiary.tistory.com/212</guid>
      <comments>https://hongstudydiary.tistory.com/212#entry212comment</comments>
      <pubDate>Wed, 25 Mar 2026 13:36:40 +0900</pubDate>
    </item>
    <item>
      <title>[Level.0] 평행</title>
      <link>https://hongstudydiary.tistory.com/211</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;문제 설명: 점&amp;nbsp;네&amp;nbsp;개의&amp;nbsp;좌표를&amp;nbsp;담은&amp;nbsp;이차원&amp;nbsp;배열&amp;nbsp;&amp;nbsp;dots가&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;매개변수로&amp;nbsp;주어집니다. &lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[[x1, y1], [x2, y2], [x3, y3], [x4, y4]] &lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진&amp;nbsp;네&amp;nbsp;개의&amp;nbsp;점을&amp;nbsp;두&amp;nbsp;개씩&amp;nbsp;이었을&amp;nbsp;때,&amp;nbsp;두&amp;nbsp;직선이&amp;nbsp;평행이&amp;nbsp;되는&amp;nbsp;경우가&amp;nbsp;있으면&amp;nbsp;1을&amp;nbsp;없으면&amp;nbsp;0을&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해보세요. &lt;br /&gt;&lt;br /&gt;제한사항&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;dots의 길이 = 4&lt;/li&gt;
&lt;li&gt;dots의 원소는 [x, y] 형태이며 x, y는 정수입니다.&lt;/li&gt;
&lt;li&gt;0 &amp;le; x, y &amp;le; 100&lt;/li&gt;
&lt;li&gt;서로 다른 두개 이상의 점이 겹치는 경우는 없습니다.&lt;/li&gt;
&lt;li&gt;두 직선이 겹치는 경우(일치하는 경우)에도 1을 return 해주세요.&lt;/li&gt;
&lt;li&gt;임의의&amp;nbsp;두&amp;nbsp;점을&amp;nbsp;이은&amp;nbsp;직선이&amp;nbsp;x축&amp;nbsp;또는&amp;nbsp;y축과&amp;nbsp;평행한&amp;nbsp;경우는&amp;nbsp;주어지지&amp;nbsp;않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 해결&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;def get_dots(dot1, dot2):&lt;br /&gt;&amp;nbsp; &amp;nbsp; return (dot2[1]-dot1[1]) / (dot2[0]-dot1[0]) &lt;span style=&quot;color: #409d00;&quot;&gt;# 기울기를 구하는 공식임, (y2-y1)/(x2-x1)&lt;/span&gt;&lt;br /&gt;def solution(dots):&lt;br /&gt;&amp;nbsp; &amp;nbsp; if get_dots(dots[0], dots[1]) == get_dots(dots[2], dots[3]):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; if get_dots(dots[0], dots[2]) == get_dots(dots[1], dots[3]):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; if get_dots(dots[0], dots[3]) == get_dots(dots[1], dots[2]):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; return 0&lt;/blockquote&gt;</description>
      <category>코딩_Python(Level.0)</category>
      <category>Python</category>
      <category>평행</category>
      <author>Hong's_Computer</author>
      <guid isPermaLink="true">https://hongstudydiary.tistory.com/211</guid>
      <comments>https://hongstudydiary.tistory.com/211#entry211comment</comments>
      <pubDate>Wed, 25 Mar 2026 13:01:17 +0900</pubDate>
    </item>
    <item>
      <title>[Level.0] 겹치는 선분의 길이</title>
      <link>https://hongstudydiary.tistory.com/210</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;문제 설명: 선분&amp;nbsp;3개가&amp;nbsp;평행하게&amp;nbsp;놓여&amp;nbsp;있습니다.&amp;nbsp;세&amp;nbsp;선분의&amp;nbsp;시작과&amp;nbsp;끝&amp;nbsp;좌표가&amp;nbsp;[[start,&amp;nbsp;end],&amp;nbsp;[start,&amp;nbsp;end],&amp;nbsp;[start,&amp;nbsp;end]]&amp;nbsp;형태로&amp;nbsp;들어있는&amp;nbsp;2차원&amp;nbsp;배열&amp;nbsp;lines가&amp;nbsp;매개변수로&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;두&amp;nbsp;개&amp;nbsp;이상의&amp;nbsp;선분이&amp;nbsp;겹치는&amp;nbsp;부분의&amp;nbsp;길이를&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해보세요. &lt;br /&gt;&lt;br /&gt;제한사항 &lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;lines의 길이 = 3&lt;/li&gt;
&lt;li&gt;lines의 원소의 길이 = 2&lt;/li&gt;
&lt;li&gt;모든 선분은 길이가 1 이상입니다.&lt;/li&gt;
&lt;li&gt;lines의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 끝점 입니다.&lt;/li&gt;
&lt;li&gt;-100&amp;nbsp;&amp;le;&amp;nbsp;a&amp;nbsp;&amp;lt;&amp;nbsp;b&amp;nbsp;&amp;le;&amp;nbsp;100&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 해결&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;def solution(lines):&lt;br /&gt;&amp;nbsp; &amp;nbsp; dicti = {}&lt;br /&gt;&amp;nbsp; &amp;nbsp; for start, end in lines:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for i in range(start, end):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dicti[i] = dicti.get(i, 0) + 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; return sum(1 for val in dicti.values() if val &amp;gt; 1)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주석: 각 선분이 차지하는 정수 단위 구간을 딕셔너리에 기록하고 중복 횟수가 2 이상인 구간의 총 개수를 반환&lt;/p&gt;</description>
      <category>코딩_Python(Level.0)</category>
      <category>Python</category>
      <category>겹치는 선분의 길이</category>
      <author>Hong's_Computer</author>
      <guid isPermaLink="true">https://hongstudydiary.tistory.com/210</guid>
      <comments>https://hongstudydiary.tistory.com/210#entry210comment</comments>
      <pubDate>Wed, 25 Mar 2026 11:15:38 +0900</pubDate>
    </item>
    <item>
      <title>[Level.0] 주사위 게임(3)</title>
      <link>https://hongstudydiary.tistory.com/209</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;문제 설명: 1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네 주사위에서 나온 숫자가 모두 p로 같다면 1111 &amp;times; p점을 얻습니다.&lt;/li&gt;
&lt;li&gt;세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p &amp;ne; q)라면 (10 &amp;times; p + q)2 점을 얻습니다.&lt;/li&gt;
&lt;li&gt;주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p &amp;ne; q)라고 한다면 (p + q) &amp;times; |p - q|점을 얻습니다.&lt;/li&gt;
&lt;li&gt;어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q &amp;ne; r)이라면 q &amp;times; r점을 얻습니다.&lt;/li&gt;
&lt;li&gt;네&amp;nbsp;주사위에&amp;nbsp;적힌&amp;nbsp;숫자가&amp;nbsp;모두&amp;nbsp;다르다면&amp;nbsp;나온&amp;nbsp;숫자&amp;nbsp;중&amp;nbsp;가장&amp;nbsp;작은&amp;nbsp;숫자&amp;nbsp;만큼의&amp;nbsp;점수를&amp;nbsp;얻습니다. &lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네&amp;nbsp;주사위를&amp;nbsp;굴렸을&amp;nbsp;때&amp;nbsp;나온&amp;nbsp;숫자가&amp;nbsp;정수&amp;nbsp;매개변수&amp;nbsp;a,&amp;nbsp;b,&amp;nbsp;c,&amp;nbsp;d로&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;얻는&amp;nbsp;점수를&amp;nbsp;return&amp;nbsp;하는&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;작성해&amp;nbsp;주세요. &lt;br /&gt;&lt;br /&gt;제한사항&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;a, b, c, d는 1 이상 6 이하의 정수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 해결&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;def solution(a, b, c, d):&lt;br /&gt;&amp;nbsp; &amp;nbsp; array = sorted([a, b, c, d])&lt;br /&gt;&amp;nbsp; &amp;nbsp; dicti = {}&lt;br /&gt;&amp;nbsp; &amp;nbsp; for arr in array:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dicti[arr] = array.count(arr)&lt;br /&gt;&amp;nbsp; &amp;nbsp; keys = sorted(dicti.keys(), key=lambda x: dicti[x], reverse=True) &lt;span style=&quot;color: #409d00;&quot;&gt;# 빈도수가 높은 순서대로 키를 정렬&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if len(keys) == 1:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 1111 * keys[0]&lt;br /&gt;&amp;nbsp; &amp;nbsp; elif len(keys) == 2:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if dicti[keys[0]] == 3: &lt;span style=&quot;color: #409d00;&quot;&gt;# keys[0] == 3이라는 것은 keys[1] == 1임&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (10 * keys[0] + keys[1])**2&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else:&lt;span style=&quot;color: #409d00;&quot;&gt; # keys[0] != 3이 아니라면 이는 keys[0] == 2라는 의미&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (keys[0] + keys[1]) * abs(keys[0] - keys[1])&lt;br /&gt;&amp;nbsp; &amp;nbsp; elif len(keys) == 3:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return keys[1] * keys[2]&lt;br /&gt;&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return array[0]&lt;/blockquote&gt;</description>
      <category>코딩_Python(Level.0)</category>
      <category>Python</category>
      <category>주사위 게임(3)</category>
      <author>Hong's_Computer</author>
      <guid isPermaLink="true">https://hongstudydiary.tistory.com/209</guid>
      <comments>https://hongstudydiary.tistory.com/209#entry209comment</comments>
      <pubDate>Wed, 25 Mar 2026 10:08:42 +0900</pubDate>
    </item>
    <item>
      <title>[Level.0] 안전지대</title>
      <link>https://hongstudydiary.tistory.com/208</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;문제 설명: 다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다. 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가&amp;nbsp;매설된&amp;nbsp;지역의&amp;nbsp;지도&amp;nbsp;board가&amp;nbsp;매개변수로&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;안전한&amp;nbsp;지역의&amp;nbsp;칸&amp;nbsp;수를&amp;nbsp;return하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요. &lt;br /&gt;&lt;br /&gt;제한사항&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;board는 n * n 배열입니다.&lt;/li&gt;
&lt;li&gt;1 &amp;le; n &amp;le; 100&lt;/li&gt;
&lt;li&gt;지뢰는 1로 표시되어 있습니다.&lt;/li&gt;
&lt;li&gt;board에는&amp;nbsp;지뢰가&amp;nbsp;있는&amp;nbsp;지역&amp;nbsp;1과&amp;nbsp;지뢰가&amp;nbsp;없는&amp;nbsp;지역&amp;nbsp;0만&amp;nbsp;존재합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 해결&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;def solution(board):&lt;br /&gt;&amp;nbsp; &amp;nbsp; row = len(board)&lt;br /&gt;&amp;nbsp; &amp;nbsp; col = len(board[0])&lt;br /&gt;&amp;nbsp; &amp;nbsp; answer = [[0] * col for _ in range(row)]&lt;br /&gt;&amp;nbsp; &amp;nbsp; for i in range(row):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for j in range(col):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if board[i][j] == 1:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer[i-1 if i&amp;gt;0 else i][j-1 if j&amp;gt;0 else j] = 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer[i-1 if i&amp;gt;0 else i][j] = 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer[i-1 if i&amp;gt;0 else i][j+1 if j&amp;lt;col-1 else j] = 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer[i][j-1 if j&amp;gt;0 else j] = 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer[i][j] = 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer[i][j+1 if j&amp;lt;col-1 else j] = 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer[i+1 if i&amp;lt;row-1 else i][j-1 if j&amp;gt;0 else j] = 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer[i+1 if i&amp;lt;row-1 else i][j] = 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer[i+1 if i&amp;lt;row-1 else i][j+1 if j&amp;lt;col-1 else j] = 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; count = 0&lt;br /&gt;&amp;nbsp; &amp;nbsp; for answe in answer:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for answ in answe:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if answ == 0:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; count += 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; return count&lt;br /&gt;&lt;br /&gt;def solution(board):&lt;br /&gt;&amp;nbsp; &amp;nbsp; n = len(board)&lt;br /&gt;&amp;nbsp; &amp;nbsp; danger_zones = set()&lt;br /&gt;&amp;nbsp; &amp;nbsp; for row in range(n):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for col in range(n):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if board[row][col] == 1:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for dr in [-1, 0, 1]:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for dc in [-1, 0, 1]:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nr, nc = row + dr, col + dc&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if 0 &amp;lt;= nr &amp;lt; n and 0 &amp;lt;= nc &amp;lt; n:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; danger_zones.add((nr, nc))&lt;br /&gt;&amp;nbsp; &amp;nbsp; return n * n - len(danger_zones)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주석: 지뢰 위치 기준 8방향 좌표를 생성하여 유효한 인덱스만 set에 저장한 뒤 전체 격자 크기에서 제외함&lt;/p&gt;</description>
      <category>코딩_Python(Level.0)</category>
      <category>Python</category>
      <category>안전지대</category>
      <author>Hong's_Computer</author>
      <guid isPermaLink="true">https://hongstudydiary.tistory.com/208</guid>
      <comments>https://hongstudydiary.tistory.com/208#entry208comment</comments>
      <pubDate>Wed, 25 Mar 2026 09:15:39 +0900</pubDate>
    </item>
    <item>
      <title>[Level.0] 연속된 수의 합</title>
      <link>https://hongstudydiary.tistory.com/207</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;문제 설명: 연속된&amp;nbsp;세&amp;nbsp;개의&amp;nbsp;정수를&amp;nbsp;더해&amp;nbsp;12가&amp;nbsp;되는&amp;nbsp;경우는&amp;nbsp;3,&amp;nbsp;4,&amp;nbsp;5입니다.&amp;nbsp;두&amp;nbsp;정수&amp;nbsp;num과&amp;nbsp;total이&amp;nbsp;주어집니다.&amp;nbsp;연속된&amp;nbsp;수&amp;nbsp;num개를&amp;nbsp;더한&amp;nbsp;값이&amp;nbsp;total이&amp;nbsp;될&amp;nbsp;때,&amp;nbsp;정수&amp;nbsp;배열을&amp;nbsp;오름차순으로&amp;nbsp;담아&amp;nbsp;return하도록&amp;nbsp;solution함수를&amp;nbsp;완성해보세요. &lt;br /&gt;&lt;br /&gt;제한사항&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le; num &amp;le; 100&lt;/li&gt;
&lt;li&gt;0 &amp;le; total &amp;le; 1000&lt;/li&gt;
&lt;li&gt;num개의&amp;nbsp;연속된&amp;nbsp;수를&amp;nbsp;더하여&amp;nbsp;total이&amp;nbsp;될&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;테스트&amp;nbsp;케이스는&amp;nbsp;없습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 해결&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;def solution(num, total):&lt;br /&gt;&amp;nbsp; &amp;nbsp; start = (2*total//num - num+1)//2&lt;br /&gt;&amp;nbsp; &amp;nbsp; return [start + i for i in range(num)]&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주석: total = (num * (2 * start + num - 1)) / 2 == &lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;start = (&lt;/span&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;*total//num - num+&lt;/span&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;)//&lt;/span&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;2&lt;/span&gt;,&amp;nbsp; 등차수열의 합 공식을 변형하여 첫 번째 항을 구한 뒤 range 함수로 연속된 수열을 생성&lt;/p&gt;</description>
      <category>코딩_Python(Level.0)</category>
      <category>Python</category>
      <category>연속된 수의 합</category>
      <author>Hong's_Computer</author>
      <guid isPermaLink="true">https://hongstudydiary.tistory.com/207</guid>
      <comments>https://hongstudydiary.tistory.com/207#entry207comment</comments>
      <pubDate>Tue, 24 Mar 2026 10:25:00 +0900</pubDate>
    </item>
  </channel>
</rss>