레이블이 sudo인 게시물을 표시합니다. 모든 게시물 표시
레이블이 sudo인 게시물을 표시합니다. 모든 게시물 표시

centos6 gcc 4.8 이상 설치

centos 6.x 의 기본 gcc 버전은 4.4.x 다.
최근의 프로그램들은 gcc 4.8 이상에서 빌드되는 경우가 많은데 os 업그레이드 없이 gcc 버전을 업데이트 해보자.

# repo 추가
# 혹시 보안상의 이유로 proxy 가 필요하다면 proxy 설정을 export 한다.
# sudo 에서 export 된 proxy 설정을 사용하기 위해 -E 추가
sudo -E wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo

# 패키지 설치
sudo -E yum install centos-release-scl-rh
sudo -E yum install devtoolset-3-gcc devtoolset-3-gcc-c++

# gcc, g++ 위치
/opt/rh/devtoolset-3/root/usr/bin/

# devtoolset 활성화
# .bashrc 에 추가해서 사용하자.
source /opt/rh/devtoolset-3/enable

zsh file exist 에러 처리, heredoc 사용하기

# zsh 쉘을 사용중에 파일을 오버라이트 하는 경우 다음과 같이 에러가 발생힌다.
cat a.txt > ysoftman.txt
zsh: file exists:
ysoftman.txt

# 해결방법1
# >! 로 강제 오버라이트 되도록 할 수 있다.
cat a.txt >! ysoftman.txt

# 해결방법2
# 현재 noclobber 상태 파악
set -o | grep noclobber

# noclobber off 로 설정(clobber on)
set -o clobber
cat a.txt > ysoftman.txt

# 참고
# set -o 옵션명 : 옵션 활성화(on)
# set -o no옵션명 : 옵션 비활성화(off)

#####

# heredoc 사용하기
# zzz 를 입력되기 까지 모든 내용을 cat 입력(<<)으로 받고
# cat 은 입력받은 내용을 stdout으로 출력하는데 > 를 통해 파일에 쓴다.
cat > redirect.test.sh << 'zzz'
#!/bin/sh
var1="ysoftman"
echo "$var1"
zzz

# heredoc 은 2단계로 수행된다.
# 1. open file.txt
# 2. cat (> or >>) file.txt
# sudo 명령이 필요한 경우
# sudo cat > /etc/redirect.test.sh << 'zzz' ...
# 1. /etc/redirect.test.sh 파일은 현재 사용자 계정으로 오픈하고
# 2. 그 후에 sudo cat 명령을 실행하게 되어 permission denied 가 된다.
# 그래서 다음과 같이 bash -c 로 묶어 처리해야 한다.
sudo bash -c "cat > /etc/redirect.test.sh" << 'zzz'
#!/bin/sh
var1="ysoftman"
echo "$var1"
zzz

# heredoc 의 내용을 파이프(|)로 전달 할 수 도 있다.
cat << zzz | xargs echo "args->$*"
apple
lemon
banana
123
orange
zzz

# <<< $'' 을 사용하면 명령에 stdin 을 전달할 수 있다.
# 다음 pipe 이용 방법과 같다.
# echo -e 'bill\npassword123' | bash read_password_test.sh
bash read_password_test.sh <<< $'bill\npassword123'

Linux 일반유저에게 sudo 권한 부여하기

# root 계정에서 설정 파일 쓰기모드로 전환
chmod +w /etc/sudoers

# 설정 파일 수정
sudo vi /etc/sudoers

# 설정 파일을 다시 440(r--r-----) 모드로 전환
chmod 440 /etc/sudoers

# 또는
# visudo 를 실행하면 쓰기 모드 변환없이 /etc/sudoers 수정할 수 있다.
sudo visudo

# 참고로 ubuntu 에서 visudo 는 기본으로 nano 에디터를 사용하는데,
# 다음 명령으로 vim 으로 변경할 수 있다.
sudo update-alternatives --config editor
대체 항목 editor에 대해 (/usr/bin/editor 제공) 5개 선택이 있습니다.

  선택       경로              우선순 상태
------------------------------------------------------------
* 0            /bin/nano            40        자동 모드
  1            /bin/ed             -100       수동 모드
  2            /bin/nano            40        수동 모드
  3            /usr/bin/mcedit      25        수동 모드
  4            /usr/bin/vim.basic   30        수동 모드
  5            /usr/bin/vim.tiny    15        수동 모드

Press <enter> to keep the current choice[*], or type selection number: 4
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode

# ysoftman 유저에게 sudo 를 사용할수 있게 함
# NOPASSWD: 를 설정하면 sudo 수행시 암호를 물어보지 않는다.
ysoftman ALL=(ALL) NOPASSWD: ALL

# 이제 ysoftman 계정에서 sudo 실행을 할 수 있고, 암호도 물어보지 않는다.
# 추가로 sudo su - 로 root 계정으로 전환등 특정 명령을 막기
ysoftman ALL=NOPASSWD: ALL, !/bin/su, !/sbin/reboot, !/usr/bin/reboot, !/sbin/shutdown, !/sbin/halt, !/usr/bin/halt, !/sbin/poweroff, !/usr/bin/poweroff, !/sbin/init, !/usr/sbin/adduser, !/usr/sbin/useradd, !/usr/sbin/userdel, !/sbin/iptables, !/usr/bin/passwd

sudo and su

# -i, --login 옵션으로 다른 계정으로 변경할 수 있다.
# -u 가 없으면 기본 root
# root 계정으로 변경
sudo -i

# ysoftman2 계정으로 변경
sudo -i -u ysoftman2

#####

# 우분투를 설치할때 root 가 아닌 다른 이름(예 ysoftman)의 계정을 만들게 된다.
# ysoftman 도 관리자 계정이긴 하지만 꼭 root 계정을 사용할 때가 있다.
# su 로 루트 권한을 바꾸려고 하면 암호를 몰라 계정을 바꿀 수 없다.
# 이럴땐 아래처럼 root 의 암호를 새로 설정하면 된다.
# 참고로 ysoftman 는 sudo(설정:/etc/sudoers)를 사용할 수 있는 상태다.
sudo passwd root

# 위에서 root 암호를 새로 설정후 su 로 root 로 로그인 하면 된다.
su

# mac 의 경우
# su 로 root 전환시 su:Sorry 에러가 발생하면
su 

# root 패스워드를 설정한다.
sudo passwd root

# 그래도 su:Sorry 에러가 발생하면 sudo su 로 실행한다.
sudo su

# login 환경으로 /etc/profile(내부에서 /etc/bashrc 로딩)을 로딩할 경우
sudo su -
# 또는
sudo su -l

Linux 경로(PATH) 설정하기

# 자주 사용하는 실행파일이 있는 경로를 미리 설정해 두면 어디서나 실행가능하여 편하다.
# bash 를 사용한다면 다음과 같이 원하는 경로를 추가해 주자.
# 참고로 전체 사용자에게 공통으로 적용하려면 /etc/profile 에 추가한다.
vi ~/.bashrc 또는 vi ~/.bash_profile
ysoftman_path=/home1/ysoftman/a/b/c
PATH=$PATH:$HOME:$ysoftman_path
export PATH

# 저장하고 로그아웃 했다가 다시 로그인 하던가 다시 로딩한다.
source ~/.bashrc 또는 source ~/.bash_profile

# 참고로
# ~/.bashrc, ~/.zshrc 는 
# sudo -s 나 bash script.sh 처럼 id,pw 입력이 없는(비로그인) non-interactive 쉘 시작시 로딩하는 파일이다.

# ~/.profile(sh, bourne shell), ~/.bash_profile, ~/.zprofile 는 
# ssh 처럼 id,pw 입력하는(로그인) interactive 쉘 시작할때 로딩하는 파일이다.
# 보통 ~/.bash_profile 에서
다음과 같이 .bashrc 도 같이 로딩하고 있어 .bashrc 에만 필요한 설정을 한다.
if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

#####


# interactive mode 은 tty 에 입력된 사용자 명령을 읽는다.
# 스크립트는 기본 non-interactive 로 실행되고 -i 옵션을 붙일대만 강제로 interactive 모드로 동작한다.
# bash -l : 로그인쉘 /etc/profile > /etc/bashrc > ~/.profile 로딩
# bash -i or bash : interactive 쉘 ~/.bashrc 로딩