반응형

전체 글 2987

umask 값을 설정하여 파일 접근 권한 모드를 안전하게

4.5 umask 리눅스(유닉스) 시스템은 개인이 사용하는 PC를 운용하기 위한 O/S가 아니라 서버를 운용하기 위한 O/S 입니다. 이에 시스템 관리자는 일반 사용자가 보안 정책에 관심을 갖지 않아도 기본적인 보안 정책을 세울 수 있는 방안을 제공하고 있으며 그 중 가장 기본적인 것이 umask 입니다. 시스템 관리자는 파일의 접근 허가를 불허하는 최소한의 값을 설정할 수 있으며 이를 umask 값이라고 말합니다. 예를 들어 일반 사용자가 실행 파일에 접근 권한을 0777로 설정하면 소유자와 소유그릅, OTHER 모두 읽기, 쓰기, 실행 권한을 갖습니다. 이는 자신도 모르게 다른 사용자에 의해 파일을 삭제할 수 있다는 것을 의미합니다. 이러한 맹점을 없애기 위해 일반적으로 시스템 관리자는 umask값을..

chmod 명령의 또 다른 기능 스티키 비트와 set user id bit

4.4 chmod 명령의 또 다른 기능 스티키 비트와 set user id bit chmod 명령은 파일의 접근 허가 모드를 설정할 때 사용합니다. 그리고 이 외에도 chmod 명령은 스티키 비트와 set user id bit를 설정할 수 있습니다. 스티키 비트를 설정한 프로그램 파일을 한 번 실행하면 사용한 프로그램의 Text 세그먼트(코드를 기계어로 번역한 영역)를 스왑 파티션에 배치하여 빠르게 실행할 수 있게 하였습니다. 하지만 가상 메모리 처리로 지금은 스왑 파티션에 배치하지 않아도 속도 차이가 나지 않습니다. 지금은 스티키 비트를 설정하면 사용 권한은 부여하지만 파일의 삭제를 하지 못하게 할 때 스티키 비트를 설정합니다. 그리고 스티키 비트를 설정할 때는 t 옵션을 추가합니다. 예를 들어 chm..

chmod, fchmod 시스템 호출로 파일의 접근 권한 변경

4.3 chmod, fchmod 이번에는 존재하는 파일에 접근 권한을 변경하는 chmod와 fchmod 함수를 살펴봅시다. /*********************************************************************** * ex_chmod.c * * example source - change file access mode * ***********************************************************************/ #include #include int main(int argc,char **argv) { if(argc != 3) { fprintf(stderr,"usage: %s [file name]\n",argv[0]); retur..

access 시스템 호출

4.2 access 리눅스 시스템에서는 사용자 계정에 따라 파일 접근 권한을 다르게 부여할 수 있습니다. 그리고 사용자 계정은 크게 사용자 ID와 그룹 ID가 있습니다. 사용자 ID는 로긴한 ID를 의미하는 실제 사용자 ID(Real User ID)와 프로세스 실행 상태에서 권한 기준인 유효 사용자 ID(Effective User ID)가 있습니다. 일반적으로 실제 사용자 ID는 유효 사용자 ID와 같지만 프로그램에 saved set user id가 있을 때 유효 사용자 ID는 실제 사용자 ID와 다를 수 있습니다. 그룹 ID도 실제 로긴한 사용자의 그룹 ID와 보조 그룹 ID들과 프로세스 실행 상태에서 권한 기준인 유효 그룹 ID가 있습니다. 마찬가지로 실제 그룹 ID와 유효 그룹 ID는 일반적으로 같..

stst 시스템 호출로 파일 종류 확인

4.1 파일 종류 확인 리눅스 시스템에서는 파일을 정규 파일, 디렉토리 파일, 블록 파일, 문자 파일, FIFO 파일, 기타 파일 등으로 구분합니다. 블록 파일과 문자 파일은 장치와 대응하는 파일로 블록 파일은 메모리 장치와 대응하고 문자 파일은 터미널 장치와 대응합니다. FIFO 파일은 프로세스와 프로세스 간의 통신에 사용하는 파일이며 이 외에도 링크 파일이나 소켓 등이 있습니다. 그리고 리눅스 시스템에서는 파일의 종류를 확인하는 매크로 함수들을 제공하고 있습니다. /*********************************************************************** * ex_filetype.c * * example source - about file type * ******..

파일의 상태, fstat, lstat, stat 시스템 호출

4. 파일의 상태 이번 장에서는 파일의 상태에 관해 알아봅시다. 리눅스(유닉스) 시스템에서는 파일의 상태를 stat 구조체로 정의하고 있습니다. 그리고 파일의 상태를 확인할 수 있는 여러 가지 시스템 호출을 제공합니다. ls 명령어는 파일의 상태를 확인하는 명령입니다. 리눅스 시스템에서는 파일의 상태를 구조체 stat으로 정의하고 있습니다. struct stat{ mode_t st_mode; //파일 타입과 퍼미션 ino_t st_ino;//i-node 번호 dev_t st_dev; //장치 번호 dev_t st_rdev; //특수 파일의 장치 번호 nlink_t st_nlink; //링크 수 uid_t st_uid;//소유자의 USER ID gid_t st_gid; //소유자의 GROUP ID off_..

9. 접근성 평가 도구 만들기 - 12. EvalManager 클래스 구현

9.2.9 EvalManager 클래스 접근성 평가 도우미는 사용자와 상호작용하는 폼과 평가에 필요한 개체를 관리하는 부분의 관계를 느슨하게 작성합니다. EvalManager 클래스는 폼의 명령을 받아 필요한 작업을 수행하거나 폼의 필요한 정보를 제공하는 역할을 하는 클래스입니다. EvalManager 개체는 접근성 평가 도우미에 하나만 있으면 되므로 단일체 패턴을 적용합시다. class EvalManager { static EvalManager singleton; public static EvalManager Manager { get { return singleton; } } static EvalManager() { singleton = new EvalManager(); } EvalManager() {..

9. 접근성 평가 도구 만들기 - 11. MakeProjectEvent 핸들러와 인자 클래스 구현

9.2.8 MakeProjectEvent 핸들러와 인자 클래스 접근성 평가 프로젝트를 생성 과정에서 선택한 프로세스의 메인 창의 자동화 요소를 검색을 비롯하여 평가에 필요한 정보를 수집하여 접근성 평가 프로젝트 개체를 생성할 때 이를 통보하는 이벤트 핸들러와 인자 클래스를 정의합시다. using System;using System.Data; namespace 예제_9_접근성_평가_도우미{ public delegate void MakeProjectEventHandler( object sender,MakeProjectEventArgs e); public class MakeProjectEventArgs:EventArgs { public AccEvalProject AccEvalProject { get; priv..

9. 접근성 평가 도구 만들기 - 10. AccEvalProject 클래스 구현

9.2.7 AccEvalProject 클래스 접근성 평가 프로젝트의 주요 정보를 수집하고 이를 관리하는 클래스를 정의합시다. 클래스의 이름은 AccEvalProject라고 정할게요. AccEvalProject에서는 자동화 요소를 수집하여 계층적인 형태로 보관하는 부분이 있습니다. 그리고 폼에서 특정 노드를 선택하면 해당 노드와 매핑하는 자동화 요소를 찾을 수 있어야 하는데 여기서는 자동화 요소를 구분할 수 있는 문자열과 트리 노드를 쌍으로 하는 사전을 멤버로 선언할게요. Dictionary node_dic = null; 그리고 평가 프로젝트를 종료할 때 이 사실을 통보하기 위한 이벤트와 평가 대상 창의 사각 영역이 변경되었을 때 통보하기 위한 이벤트를 선언할게요. public event EventHand..

9. 접근성 도구 만들기 - 8. FindAutoElemEvent 핸들러와 인자 클래스 구현

9.2.6 FindAutoElemEvent 핸들러와 인자 클래스 접근성 평가 프로젝트를 생성 과정에서 선택한 프로세스의 메인 창의 자동화 요소를 검색하는 부분이 필요합니다. 이 때 검색한 자동화 요소의 정보를 시각화하는 등의 정보가 필요한 곳에서는 자동화 요소를 검색이 이루어질 때마다 검색한 정보를 알 필요가 생깁니다. 이에 래핑한 자동화 요소를 참조할 수 있는 인자 클래스를 정의하고 이벤트를 발생한 개체와 인자를 입력 인자로하는 대리자를 정의할게요. using System; namespace 예제_9_접근성_평가_도우미{ public delegate void FindAutoElemEventHandler(object sender, FindAutoElemEventArgs e); public class Fi..

반응형