센트OS(영어: CentOS)는 센트OS 프로젝트에서 레드햇 제휴로 개발한 컴퓨터 운영 체제이다. 업스트림 소스인 레드햇 엔터프라이즈 리눅스와 완벽하게 호환되는 무료 기업용 컴퓨팅 플랫폼을 제공할 목적으로 만들어진 리눅스계 운영 체제 가운데 하나다. 6.4 버전부터 베타 버전은 파워PC에서 사용가능할 것으로 예상되지만, 공식적으로 물리 주소 확장 기능을 가진 x86과 x86-64 아키텍처를 지원한다.
레드햇 엔터프라이즈 리눅스의 소스 코드를 그대로 가져와 빌드해 내놓으며 이 과정에서 이루어지는 변형은 레드햇의 상표가 잘리고 그 자리에 CentOS의 상표가 붙는(상표권 분쟁을 피하기 위해) 정도뿐이다. 판수 또한 레드햇 엔터프라이즈 리눅스의 판수를 그대로 가져오며(소수점 아래 숫자는 업데이트 차수를 가리킨다) 오늘날에는 레드햇 엔터프라이즈 리눅스의 행보를 가장 잘 따라가는 운영 체제라고 알려져 있다. 사용하는 꾸러미 형식은 RPM이다. 1위키백과에서 발췌
sudo 명령어는 유닉스 및 유닉스 계열 운영 체제에서, 다른 사용자의 보안 권한, 보통 슈퍼유저로서 프로그램을 구동할 수 있도록 하는 프로그램이다. 명칭은 본래 슈퍼유저로서의 실행에 사용되던 것에서 “superuser do”에서 유래하였으나, 후에 프로그램의 기능이 확장되며 “substitute user do”(다른 사용자의 권한으로 실행)의 줄임말로 해석되게 되었다. 기본적으로 Sudo는 사용자 비밀번호를 요구하지만 루트 비밀번호(root password)가 필요할 수도 있고, 한 터미널에 한번만 입력하고 그 다음부터는 비밀번호가 필요 없다. Sudo는 각 명령줄에 사용할 수 있으며 일부 상황에서는 관리자 권한을 위한 슈퍼유저 로그인(superuser login)을 완벽히 대신하며, 주로 우분투, 리눅스와 애플의 OS X 에서 볼 수 있다. 1위키백과에서 발췌
이 명령(기능)이 필요한 이유는 이렇게 생각해 볼 수있겠다. – 시스템 관리자 A가 있다. root 패스워드는 A만 알고 있다. – DBA B B는 ‘가’서버의 DB만 관리한다. 서비스의 재 시작등이 필요할 때엔 A에게 요청해야 한다. – A가 휴가를 갔다. – A가 휴가를 간 사이 DBMS 서비스에 이상이 생겼고 서비스를 재시작해야 하는 상황이 발생했다. – 서비스 재시작에는 root 권한이 필요하다. 이 때 A가 취할 수 있는 조치는 B에게 root의 패스워드를 알려주는 방법이 있다. 하지만 A는 A가 관리하는 ‘가’,’나’,’다’모든 서버의 패스워드를 동일하게 설정해서 관리 하고 있었다. B는 A가 관리하는 모든 서버의 패스워드를 획득한 것과 다름이 없다.
이런 상황이 예가 될 수 있겠다. 사실 B는 신뢰할 수 있는 사람이겠지만, 위 상황은 이미 권한 없는 사용자가 모든 권한을 획득한 보안 사고라 할 수 있겠다. 여기서 sudo는 아래와 같이 동작한다. – 시스템 관리자 A는 ‘가’서버에신뢰할 수 있는 사용자 B를 sudo 명령 허용 목록에 추가하였다. – A가 휴가를 갔다. – B는 ‘가’ 서버에서 sudo 명령을 사용한다. sudo 명령은 B의 패스워드를 묻는다. B의 패스워드가 정상적으로 입력 되었을 경우 권한을 상승시킨다.
여기서 B가 B로 로그인 해 있는데 B의 패스워드를 왜 확인해? 이게 무슨 소용이야? 하고 질문할 수 있겠지만 B의 계정은 이미 신뢰하는 계정이라 했으니, 작업을 하는 시점에 다시 B가 맞는지 확인 하는 것이다. 즉, B가 로그인 후 자리를 비웠다거나 하는 등 B를 대체 하더라도 B의 패스워드는 B만 알고 있으니 패스워드를 한번 더 입력 받고 B가 맞는지 확인한 뒤 권한을 상승 시킨다는 말이다.
설정
/etc/sudoers 파일에 권한을 부여할 사용자를 넣으면 된다. ※만약 설정파일의 문법을 틀리거나 하면 아런 에러를 만날 수 있다. (sudo가 동작하지 않는다!!!!)
[centos7:/home/haedong:]$ sudo -i
>>> /etc/sudoers: 문법 오류 near line 94 <<<
sudo: /etc/sudoers 94번째 줄에서 해석 오류
sudo: 올바른 sudoers 설정 원본이 없습니다. 나갑니다.
sudo: 정책 플러그인을 초기화할 수 없습니다
사용자 추가
## 기본적으로 root는 포함되어있다. root ALL=(ALL) ALL 을 찾아서 아래에 사용자를 추가한다.
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
# 여기부터 선택적으로 추가한다.
# 기본.
# haedong 계정으로 sudo 명령 사용 시 패스워드 확인 후 권한을 부여한다.
# 모든 명령 사용이 가능하다.
haedong ALL=(ALL) ALL
# haedong 계정으로 sudo 명령 사용 시 패스워드 확인 후 권한을 부여한다. /usr/bin/vi,/usr/bin/vim 만 사용 가능하다.
haedong ALL= /usr/bin/vi,/usr/bin/vim
# haedong 계정으로 모든 명령 사용 시 패스워드 확인을 하지 않는다.
haedong ALL=(ALL) NOPASSWD: ALL
# vi, vim 커맨드 사용 시 패스워드 확인을 하지 않고 권한을 상승시킨다.
haedong ALL=NOPASSWD: /usr/bin/vi,/usr/bin/vim
환경변수 설정 현재 사용자의 환경변수를 sudo 명령 사용 시 승계 하고자 하는경우
# "" 안에 추가하고자 하는 환경 변수를 추가한다.
Defaults env_keep += "LD_LIBRARY_PATH"
PATH 변수 설정
# : 로 구분하여 경로를 추가한다.
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
옵션 및 사용법 자세한 옵션은 man 을 참조하자
# 일반적인 사용 예
[centos7:/home/haedong:]$ sudo vi
[sudo] haedong의 암호:
[centos7:/root:]# sudo -h
sudo - 다른 사용자 권한으로 명령을 실행합니다
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] file ...
옵션:
-A, --askpass 암호 질문에 보조 프로그램 활용
-b, --background 백그라운드에서 명령 실행
-C, --close-from=num num 보다 크거나 같은 모든 파일 서술자를 닫습니다
-E, --preserve-env 명령을 실행할 때 사용자 환경을 유지합니다
-e, --edit 명령을 실행하는 대신 파일을 편집합니다
-g, --group=group 지정 그룹 이름 또는 ID로 명령을 실행합니다
-H, --set-home 대상 사용자의 내 폴더에 HOME 변수를 지정합니다
-h, --help 도움말을 보여주고 빠져나갑니다
-h, --host=host (플러그인에서 지원한다면)호스트에서 명령을 실행합니다
-i, --login 대상 사용자 자격으로 셸에 로그인합니다. 명령도 지정할 수 있습니다.
-K, --remove-timestamp 타임스탬프 파일을 완전히 제거합니다
-k, --reset-timestamp 타임스탬프 파일을 초기화합니다
-l, --list 사용자 권한을 보여주거나 지정 명령을 확인합니다. 긴 형식으로 보려면 옵션을 두 번 사용하십시오
-n, --non-interactive 비대화형 모드. 프롬프트를 사용하지 않습니다
-P, --preserve-groups 대상을 설정하는 대신 그룹 벡터를 유지합니다
-p, --prompt=prompt 지정 암호 프롬프트를 활용합니다
-r, --role=role 지정 역할을 지닌 SELinux 보안 컨텍스트를 만듭니다
-S, --stdin 표준 입력으로 암호를 입력 받습니다
-s, --shell 셸을 대상 사용자 명의로 실행합니다. 명령도 지정합니다.
-t, --type=type 지정 유형의 SELinux 보안 컨텍스트를 만듭니다
-U, --other-user=user 목록 모드에서 사용자 권한을 보여줍니다
-u, --user=user 지정한 사용자 이름 또는 ID로 명령을 실행(또는 파일 편집)
-V, --version 버전 정보를 보여주고 나갑니다
-v, --validate 명령을 실행하지 않고 사용자 타임스탬프를 업데이트합니다
-- 명령행 인자 처리를 멈춥니다
댓글을 달려면 로그인해야 합니다.