[Linux] ์ ธ ์ข ๋ฅ, ์ ธ ์คํฌ๋ฆฝํธ
์ (์ ธ)
- ๋ช ๋ น์ด์ ์ปค๋์ด ๋ํ๋ฅผ ํ ์ ์๊ฒ ๋์์ฃผ๋ ์ผ์ข ์ ์ธํฐํ์ด์ค
- ๋ช ๋ น์ด ํด์๊ธฐ๋ผ๊ณ ๋ด๋๋จ
์ ์ ๊ฐ ์ ธ(๋ช ๋ น์ด ํด์๊ธฐ)์ ๋ช ๋ น์ ์ ๋ฌํ๋ฉด ์ ธ์ด ์ปค๋ํํ ๋ถํํ๊ณ , ์ปค๋์ด ๋ด๋ถ์ ์ธ ์์ ์ ์คํํ ํ ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ ธ์ ํตํด ์ ์ ์๊ฒ๋ก ์ ๋ฌ
์ ธ(shell)์ ๊ป์ง์ด๋ผ๋ ๋ป์ผ๋ก ์ปค๋์ ๊ฐ์ธ๊ณ ์์ด์ ๊ทธ๋ฐ ์ด๋ฆ์ด ๋์๋ค.
์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ : ์์คํ ์ฝ(syscall), ์ ธ, ์ปค๋๋ชจ๋ vs ์ ์ ๋ชจ๋
์ ธ ์ข ๋ฅ
์ฌ์ฉ์ ํ๋กฌํํธ๊ฐ $์ด๋ฉด ๋ณธ ์ ธ ๊ณ์ด, %์ด๋ฉด C์ ธ ๊ณ์ด์ด๋ค.
- Bourne-Shell(/bin/sh) - ์ ๋์ค์ ์ค๋ฆฌ์ง๋ ์. ์ํธ ๋ํํ ๋ฐฉ์ ๋ถ๊ฐ๋ฅ
- C shell(/bin/csh) - C ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง. ๋น ์กฐ์ด(vi ์๋ํฐ ๋ง๋ ์ฌ๋)๊ฐ ๋ง๋ค์์.
- Bourne-agin shell(/bin/bash) - ๋ฆฌ๋ ์ค์ ํ์ค ์. GNU ๊ฐ๋ฐํ ๋ ๋ง๋ค์ด์ง. ksh+csh๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ
- Korn Shell (/bin/ksh) - ๋ณธ์ ํ์ฅํ. AT&T์ ๋ฐ์ด๋น๋ ์ฝ์ด ๋ง๋ฆ.
- TENEX C shell (/bin/tcsh)
์ฌ์ฉ์ค์ธ ์ ํ์ธ
echo $SHELL
SHELL์ ํ์ฌ ์ฌ์ฉ์ค์ธ ์์ ๋ํ๋ด๋ ํ๊ฒฝ ๋ณ์์ด๋ค.
๋ํ /etc/passwd ํ์ผ์์๋ ํ์ธํ ์ ์๋ค. (์ฐธ๊ณ : [Linux] /etc ๋๋ ํ ๋ฆฌ)
๋ํ /etc/shells์์ ์ฌ์ฉํ ์ ์๋ ์๋ค์ ์ข ๋ฅ๋ ํ์ธํ ์ ์๋ค
์ ๋ณ๊ฒฝ
chsh [์ต์
] ๊ณ์ ๋ช
์
ธ
#์ต์
# -s : ์ง์ ํ๋ ์
ธ์ ์์ผ๋ก ๋ก๊ทธ์ธํ ์
ธ๋ก ๋ณ๊ฒฝ (์ฌ๋ถํ
ํด์ผ์ง ๋ช
๋ น์ด ์ธ์๋จ)
# -l : /etc/shells ํ์ผ ์์ ์ง์ ํ ์
ธ์ ๋์ด
usermod [์ต์
] ๊ณ์ ๋ช
#์ต์
-s ๋ณ๊ฒฝ ์
ธ : ์๋ก์ด ์
ธ๋ก ๋ณ๊ฒฝ ์ ์ฌ์ฉ
์ ์คํฌ๋ฆฝํธ (Shell Script)
์ ๋ช ๋ น์ด๋ค์ ์งํฉ์ ๋ชจ์๋ ํ์ผ์ ์ ์คํฌ๋ฆฝํธ๋ผ๊ณ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
์ฆ Unix ์ปค๋งจ๋ ๋ฑ์ ๋์ดํด์ ์คํํ๋ ๊ฒ์ด๋ค.
[ ์์ ]
์ ์์ฒด๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค.
#!/bin/bash #/bin/bash๋ฅผ ์คํํ๊ฒ ๋ค๋ ์๋ฏธ. ์๋ฅผ shebang์ด๋ผ๊ณ ํ๋ค.
#compile.sh
echo "gcc -o $1 $1.c" #๋งค๊ฐ๋ณ์๋ $๋ฅผ ๋ถ์ธ๋ค.
gcc -o $1 $1.c
์ ์คํฌ๋ฆฝํธ์์ ์ถ๋ ฅ์ echo, ์ ๋ ฅ์ read๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ ์คํฌ๋ฆฝํธ ํ์ผ์ ์คํํ๋ ค๋ฉด ์์ bash ๋ช ๋ น์ด๋ฅผ ๋ถ์ด๊ฑฐ๋ +x ๊ถํ์ ์ฃผ๋ฉด ๋๋ค.
bash compile.sh
chmod +x compile.sh
์ ํ๊ฒฝ ์ค์
์๋ ๋ณผ๋ ์ณ๋ ํ์ผ๋ค์ ๋ค ์ ์คํฌ๋ฆฝํธ ํ์ผ์ผ๋ก, CTF์์ Dockerfile์ ์ค ๋ ๋ง์ด ์ ํด๋ดค์ ๊ฒ์ด๋ค.
bash ์์ด ๋ํ์ ๋ก๊ทธ์ธ ์๋ก ์คํ๋๋ฉด ์ฐ์ /etc/profile์ ์คํํ๋ค. ๋ง์ฝ์ ์์ผ๋ฉด ~/.bash_profile, ~/.bash_login, ~/profile์ ์ฐจ๋ก๋ก ์ฐพ์ ํ์ ๊ฐ์ฅ ๋จผ์ ๋ฐ๊ฒฌํ ํ์ผ ์ค์์ ์ฝ์ด์ฌ ์ ์๋ ํ์ผ์ ์คํํ๊ฒ ๋๋ค.
๋ก๊ทธ์ธ ์์ด ์ข ๋ฃ๋๋ฉด ~/.bash_logout ํ์ผ์ด ์๋ค๋ฉด ์๋ฅผ ์คํํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ์ธ ์์ด ์๋ ๋ํ์ ์๋ก ์คํ๋ ๊ฒฝ์ฐ ~/.bashrc ํ์ผ์ ์คํํ๊ฒ ๋๋ค.
Reference
[์ฑ ] UNIX ์์คํ ํ๋ก๊ทธ๋๋ฐ