묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결리눅스 시스템 프로그래밍
17분 2초에
17분 2초 쯤printf("%s\n", inbuf);의 출력 결과가 hello, world #1 이고 나머지 데이터가 안 찍힌 이유로 개행이 없다고 설명해 주셨는데이 부분이 조금 애매한 것 같습니다. inbuf 에는 아래와 같이hello, world #1\0hello, world #2\0hello, world #3입력한 데이터가 다 들어있고 널문자까지 있습니다.그걸 printf("%s\n" ...) 출력하다 보니버퍼 중간의 null 을 만나서 문자열 끝으로 인식해서 출력이 종료된고 write 함수로 MSGSIZE 대신 null 문자를 제외한 사이즈 MSGSIZE - 1 로 출력하면printf 가 msg1, msg2, mg3을 다 찍네요null 이 없어서 이상한 문자가 출력되지만요...
-
미해결리눅스 커널의 구조와 원리: 프로세스 [저자 직강 1부-4]
강의영상 확인요청
섹션 4. 프로세스 주요 동작-유저 프로세스14. 유저 프로세스-생성 과정 13:17 15. 커널 소스 분석-프로세스 생성 13:17 위 두 영상이 동일한 영상 같습니다. 확인 부탁드립니다.감사합니다.
-
해결됨리눅스 시스템 프로그래밍
혹시 고급과정의 경우 하반기 몆월쯤 나올까요?
명강의를 빨리 듣고싶습니다ㅎㅎ..
-
미해결리눅스 커널 해킹. A부터 Z까지
cred 구조체에 __randomize_layout이 적용된건가요?
cred 구조체 소스코드를 elixir를 통해 확인해보니 다음과 같았습니다. (실습 버전인 5.8.5 기준)struct cred { atomic_t usage; #ifdef CONFIG_DEBUG_CREDENTIALS atomic_t subscribers; /* number of processes subscribed */ void *put_addr; unsigned magic; #define CRED_MAGIC 0x43736564 #define CRED_MAGIC_DEAD 0x44656144 #endif kuid_t uid; /* real UID of the task */ kgid_t gid; /* real GID of the task */ kuid_t suid; /* saved UID of the task */ kgid_t sgid; /* saved GID of the task */ kuid_t euid; /* effective UID of the task */ kgid_t egid; /* effective GID of the task */ kuid_t fsuid; /* UID for VFS ops */ kgid_t fsgid; /* GID for VFS ops */ unsigned securebits; /* SUID-less security management */ kernel_cap_t cap_inheritable; /* caps our children can inherit */ kernel_cap_t cap_permitted; /* caps we're permitted */ kernel_cap_t cap_effective; /* caps we can actually use */ kernel_cap_t cap_bset; /* capability bounding set */ kernel_cap_t cap_ambient; /* Ambient capability set */ #ifdef CONFIG_KEYS unsigned char jit_keyring; /* default keyring to attach requested * keys to */ struct key *session_keyring; /* keyring inherited over fork */ struct key *process_keyring; /* keyring private to this process */ struct key *thread_keyring; /* keyring private to this thread */ struct key *request_key_auth; /* assumed request_key authority */ #endif #ifdef CONFIG_SECURITY void *security; /* subjective LSM security */ #endif struct user_struct *user; /* real user ID subscription */ struct user_namespace *user_ns; /* user_ns the caps and keyrings are relative to. */ struct group_info *group_info; /* supplementary groups for euid/fsgid */ /* RCU deletion */ union { int non_rcu; /* Can we skip RCU deletion? */ struct rcu_head rcu; /* RCU deletion hook */ }; } __randomize_layout;이 중 마지막 __randomize_layout 이 뭔지 찾아보니 커널에서 정의한 매크로이고 구조체의 순서를 랜덤화하는 일종의 보호 기법이라는 것을 알았습니다. 실습을 따라가보니 uid, gid, suid, sgid를 순서대로 덮기 때문에 현재 커널에서 이 보호 기법이 적용되지 않았다는 것을 알 수 있었습니다. 이 매크로의 정의 부분은 총 두 부분이고 다음과 같았습니다.#if defined(RANDSTRUCT_PLUGIN) && !defined(__CHECKER__) #define __randomize_layout __attribute__((randomize_layout)) #define __no_randomize_layout __attribute__((no_randomize_layout)) /* This anon struct can add padding, so only enable it under randstruct. */ #define randomized_struct_fields_start struct { #define randomized_struct_fields_end } __randomize_layout; #endif #ifndef __randomize_layout # define __randomize_layout __designated_init #endif첫 번째 부분에서는 flag처럼 보이는 RANDSTRUCT_PLUGIN 과 __CHECKER__ 에 cross reference(?)가 더이상 안돼서 확인은 못했습니다만, 이게 define 되어있으면 __randomize_layout 매크로를 정의하는 것 같아보입니다. 반대로 flag가 켜져있지 않아 첫 번째 부분에서 매크로 선언이 이뤄지지 않으면 두 번째 부분에서 __designated_init 으로 어쨌든 선언은 되는 것 같습니다. 마지막으로 __designated_init 의 선언 부분을 보면 다음과 같습니다.#if __has_attribute(__designated_init__) # define __designated_init __attribute__((__designated_init__)) #else # define __designated_init #endif첨부는 했지만 어떻게 동작하는건지 잘 모르겠어서 여기부터 이해가 안됐습니다... 제 질문은 다음과 같습니다. 구조체 멤버 랜덤화가 적용되어야 할 것 같은데 강의자님께서 일부러 커널을 빌드할 때 소스코드를 수정하신건가요?아니라면 __designated_init__ 이 없기 때문에 빈 매크로가 할당된 것 같은데, 이게 어떤 플래그이며 어떻게 키고 끌 수 있는건가요?커널 소스코드를 확인할 때 RANDSTRUCT_PLUGIN 과 __CHECKER__ 같이 더 이상 cross reference가 불가능한 경우는 어떻게 값을 확인할 수 있나요?정작 __randoimze_layout 이 붙었을 때 어떻게 메모리 레이아웃을 변경하는지에 대한 로직은 못찾았는데, 이런 부분은 어디서 확인할 수 있을까요?강의자님 경험상 대회나 리얼월드 커널에서 구조체 멤버 랜덤화가 잘 적용되어있는 편인가요? 질문이 길어졌는데, 답변주시면 큰 도움이 될 것 같습니다. 감사합니다.
-
해결됨시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script
컨테이너에서 다른 컨테이너 접속시
[root@cent1 /]# scp -rp /root/SHELL/monitor cent3:/root/SHELLWarning: Permanently added '172.18.1.93' (ECDSA) to the list of known hosts.Load key "/root/.ssh/id_rsa": invalid formatroot@172.18.1.93's password:ssh cent3 "mkdir ~~~~"를 해도 똑같이 password를 입력하라고 뜨네요 ㅠ왜 이런걸까요
-
해결됨시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script
실습 주소에 172.18.1.91를 접속하니 접속이 되지 않습니다
질문을 찾아서 제어판 - 네트워크 설정 - 어댑터 설정에서vEthernet(WSL (Hyper-V firewall))이라는 것의 주소를 확인해보니IPv4 주소가 다르게 되어 있어서 그 주소로 했더니 접속이 됩니다 서버 설정은 다른건 하지 않고 docker만으로 실행했습니다.
-
해결됨리눅스 커널 해킹. A부터 Z까지
ppt자료 문의
강의 내용을 복습하며 정리하던 중, 수업 중 사용하신 PPT 자료를 참고하고 싶어 이렇게 문의드립니다.혹시 가능하시다면 해당 PPT자료를 공유해주실 수 있을까요?학습 목적으로만 활용하겠습니다.감사합니다.
-
미해결리눅스 커널의 구조와 원리: 인터럽트 [저자 직강 1부-5]
강의안 자료는 따로 제공이 안 되나요?
안녕하세요1부-4,5,6 강의가 전부다 강의안 제공이 안 되고 있는데추후 업로드 예정이신지 질문 드립니다.(혹시 1부-1 강의도 강의안 업로드 예정이 있나요?)
-
미해결리눅스 입문 - 개념으로 탄탄히!!
터미널 창의 프롬프트가 너무 깁니다. 짧게 하고 싶습니다.
안녕하세요?virtual box 최신 버전에 문제가 있는지 설치가 안되어서vmware로 설치하고 로그인 해 보니aaschool@aaschool-VMware-Virtual-Platform:~/Desktop$라고 프롬프트가 뜹니다. 이 프롬프트 강의에서 처럼 짭게 만들려면 어떻게 해야 하는지요?답변 부탁드립니다.
-
미해결리눅스 쉘 스크립트
강의 순서
안녕하세요! 해당 강의를 수강예정인데이 강의를 먼저 듣는게 좋을까요?리눅스 시스템 프로그래밍 - 이론과 실습 이 강의를 먼저 듣는게 좋을까요?
-
미해결리눅스 소개와 리눅스 커널 Overview [저자직강 1부-1]
혹시 리눅스 커널 강의는 할인 쿠폰 발행하실 생각 없으신가요?
혹시 리눅스 커널 강의는 할인 쿠폰 발행하실 생각 없으신가요? 전체 코스를 다 구매하고 싶은데... ARM 강의는 할인 쿠폰이 제공되고 있어서 질문드립니다!
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
왜 전 오류가 뜨나요??
오타난건 없는것 같고 파일은 그대로 복붙했는데 왜 이런 오류가 뜨는지 잘 모르겠네요..ㅠㅠ
-
미해결리눅스 입문 - 개념으로 탄탄히!!
core 생성이 안됩니다.
-
미해결리눅스 입문 - 개념으로 탄탄히!!
cd /home/pig 권한 거부가 발생합니다.
-
미해결리눅스 입문 - 개념으로 탄탄히!!
강의에 관한 잘문은 아니고 궁금한게 있어서 여쭙고자 합니다.
제가 최근에 c쉘 스크립트 쓰는 회사로 취업을 했거든요. 회사에서는 유닉스를 쓰는데 제가 런잇 강사님 로드맵을 쭉 수강하려고 하는데요.. 혹시 도움이 되는지 궁금해서 여줍고자 합니다.
-
미해결리눅스 입문 - 개념으로 탄탄히!!
리눅스 가상머신
안녕하세요, 이제 막 강의를 수강하고 있는 수강생입니다. 지금 1장에서 가상머신으로 리눅스 설치하는 내용을 보고있는데혹시 제가 접속해서 사용할 수 있는 리눅스 서버가 존재한다면 굳이 가상머신을 만들지 않아도 될까요??강의에서 터미널창만 활용해서 강의가 진행되는지 아니면 데스크탑 ui와 관련된 내용이 있는 건지 궁금합니다.
-
미해결리눅스 입문 - 개념으로 탄탄히!!
설치 속도가 심각하게 느립니다
안녕하세요.다름이 아니라, 강의를 보면서 강의와 동일한 환경으로 진행하려고, 20.04 우분트를 설치 진행 중인데, 설치가 1시간이 넘어도 화면이 먹통된거처럼 진행이 되지 않습니다.이게 너무 오래된 버전 설치 때문에 일어나는 현상인지 뭐가 문제인지 모르겠네요..호스트pc성능이 낮진 않거든요.
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
고아(?) 프로세스의 부모 선정이 어떻게 되는지 궁금합니다
안녕하세요java 프로세스를 생성하니 생각대로 sshd로 접속한 프로세스 하위로 java 프로세스가 생성되는걸 볼 수 있었습니다. 996 996 996 ? 00:04:20 sshd 279106 279106 279106 ? 00:00:00 sshd-session 279140 279106 279106 ? 00:00:00 sshd-session 279141 279141 279141 pts/0 00:00:00 bash 279253 279253 279141 pts/0 00:00:37 java여기서 java 프로세스를 백그라운드로 실행한 상태였는데 접속한 sshd 프로세스를 끊어버리니 systemd 하위로 간 것을 볼 수 있었습니다. 1 1 1 ? 00:01:25 systemd 996 996 996 ? 00:04:20 sshd 279309 279309 279309 ? 00:00:00 sshd-session 279343 279309 279309 ? 00:00:00 sshd-session 279344 279344 279344 pts/0 00:00:00 bash 279362 279362 279344 pts/0 00:00:00 ps 279253 279253 279141 ? 00:00:37 java여기서 java 프로세스의 부모가 sshd 하위가 아니라 systemd 하위로 간 이유가 궁금하네요좀 더 정확히는 부모가 결정되는게 어떤 기준으로 결정되는지 궁금합니다부모가 죽었으면 그 바로 위 부모가 새로운 부모가 되는 것인지요..? 시간이 날 때마다 보고있습니다감사합니다
-
미해결리눅스 입문 - 개념으로 탄탄히!!
mv /tmp/pineapple . 명령어 입력했는데 다음과 같이 나타납니다.
뭐가 문제점이 있는지 알고 싶습니다.
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
학습자료가 없어요
- 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.)- 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.