TIL 46: [Linux] ์ฌํ
์ค๋์ ๋ฆฌ๋ ์ค์ ๋ํด ๋ ๊ณต๋ถํ๋ ์๊ฐ์ ๊ฐ์ก์ต๋๋ค. HA2 ์ค๋นํ๋ฉด์ .env ๊ฐ ๋ฌด์์ธ์ง ๊ถ๊ธํ์๋๋ฐ ์ด๋ฒ ๊ธฐํ๋ก ์ ๋๋ก ๊ณต๋ถํด๋ณผ ์ ์์์ต๋๋ค.
์ฌ์ฉ๊ถํ
ls -l
๋ช
๋ น์ด ls -l
์ ์ฌ์ฉํ๋ฉด ์ง์ ์์น์ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๊ฐ ๋์ด๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ผ์ชฝ์๋ ์ฒซ ์์์ด -
๋๋ d
๋ก ๋์ด์๋๋ฐ์. ์ด๋ ๊ฐ๊ฐ not directory์ directory๋ฅผ ๋ํ๋
๋๋ค. ํด๋์ด๋ฉด d
๋ก, ํ์ผ์ด๋ฉด -
๋ก ๋ํ๋
๋๋ค. ์ด์ด์ง๋ r, w, x๋ ๊ฐ๊ฐ read permission, write permission, execute permission์ผ๋ก ์ฝ๊ธฐ ๊ถํ, ์ฐ๊ธฐ ๊ถํ, ์คํ ๊ถํ์ ๋ํ๋
๋๋ค. 3๋ฒ์ ๊ฑธ์ณ ๋ํ๋๋ ์ด์ ๋ ์ฌ์ฉ์ (user), ๊ทธ๋ฃน (group), ๋๋จธ์ง (other)์ ๋ํ ๊ถํ์ ํ์ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ฃน์ด ์๋ ์ด์ ๋ ๋ง์ ์ฌ๋์ด ํ์ผ์ ์์ธ์ค ํด์ผํ๋ ํ๋ก์ ํธ๊ฐ ์์ ๋ ์ผ์ผ์ด ๊ถํ์ ํ ๋นํ์ง ์์๋ ๋๋ ํธ๋ฆฌํจ ๋๋ถ์
๋๋ค.
chmod
๋ช
๋ น์ด chmod
๋ฅผ ํตํด ํ์ผ์ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์คํ ๊ถํ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ chmod ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด์ ๊ถํ ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋ ์ด์ ๋ ๋ด๊ฐ ๋ง๋ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ค๋ฅธ ์ฌ๋์ด ๋ง์๋๋ก ์์ ํ๊ฑฐ๋ ์ญ์ ํ์ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ ๋์๊ฐ ์์คํ
ํดํน๊ณผ๋ ์ฐ๊ด๋์ด์๋ ๋ช
๋ น์ด์
๋๋ค.
๋ณ๊ฒฝ ๋ฐฉ์์ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
Symbolic method
Access Class, Operator, Access Type์ผ๋ก ๋๋์ด ์ฌ์ฉํด์ ๊ถํ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
Access Class์๋ ์์ ๋ดค๋ User, Group, Other, ๊ทธ๋ฆฌ๊ณ ๋ชจ๋๋ฅผ ์ง์นญํ๋ All์ด ์์ต๋๋ค. ์ฝ์๋ก u, g, o, a๋ก ํํํฉ๋๋ค.
Operator๋ + (์ถ๊ฐ), - (์ ๊ฑฐ), = (๋์ผํ ์ค์ ) ์ผ๋ก ๋๋์ด์ง๋๋ค.
Access Type์๋ r (read), w (write), x (execute)๊ฐ ์์ต๋๋ค.
์ ์ธ ๊ฐ์ง ์ฌํญ์ ์กฐํฉํด์ ์๋์ ๊ฐ์ด ํํํ ์ ์์ต๋๋ค.
chmod a=rw helloworld.js # -rw-rw-rw-
chmod u= helloworld.js # ----rw-rw-
chmod a+rx helloworld.js # -r-xrwxrwx
chmod go-wx helloworld.js # -r-xr--r--
chmod a= helloworld.js # ----------
chmod u+rwx helloworld.js # -rwx------
Absolute form
4(r) 2(w) 1(x). ์ด๋ ๊ฒ ์ด์ง๋ฒ์ ํ์ฉํด์ chmod๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
chmod 744 helloworld.js # -rwxr--r--
ํ๊ฒฝ๋ณ์
ํ๊ฒฝ๋ณ์๋ ํ๋ก์ธ์ค๊ฐ ์ปดํจํฐ์์ ๋์ํ๋ ๋ฐฉ์์ ์ํฅ์ ๋ฏธ์น๋, ๋์ ์ธ ๊ฐ๋ค์ ๋ชจ์์ ๋๋ค. ์ฆ, ์ด์์ฒด์ ๊ฐ ๊ตด๋ฌ ๊ฐ๋๋ฐ ํ์ํ ๋ณ์๋ค์ ๋ชจ์์ ๋๋ค. ํ๊ฒฝ๋ณ์๋ฅผ ์ด์ฉํด API key, DB password์ ๊ฐ์ด ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๊ทธ ๋ฟ๋ง ์๋๋ผ ์๋ก ๋ค๋ฅธ PC ๋๋ ์ฌ๋ฌ .env ํ์ผ์์, ๊ฐ์ ๋ณ์ ์ด๋ฆ์ ๋ค๋ฅธ ๊ฐ์ ํ ๋นํ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ์ ํ์ ์ ๊ณตํ๋ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ APIํค๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ, ํ๊ฒฝ ๋ณ์๋ฅผ ์ด์ฉํด ํ๊ฒฝ์ ๊ตฌ๋ถํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ํด์ค๋๋ค. ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก ์งํ๋ฉ๋๋ค.
export
Linux ์ด์์ฒด์ ์๋ ์ด๋ฏธ ๋ง์ ํ๊ฒฝ๋ณ์๊ฐ ์ค์ ๋์ด ์์ต๋๋ค. export๋ฅผ ํตํด ํ๊ฒฝ๋ณ์ ํ์ธ ๋ฐ ์์ ์ ์ฉํ ์ ์์ต๋๋ค.
export urclass="is good" // ์๋ก์ด ํ๊ฒฝ๋ณ์ ์ถ๊ฐ, = ์๋ค์๋ ๋ฐ๋์ ๊ณต๋ฐฑ์ด ์์ด์ผ ํจ.
echo $urclass // is good -> ํ๊ฒฝ๋ณ์์ ๊ฐ ํ์ธ
dotenv
npm ๋ชจ๋ dotenv๋ฅผ ์ฌ์ฉํ๋ฉด, Java Script์์ ํ๊ฒฝ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
mkdir environment_variable // ๋๋ ํ ๋ฆฌ ์์ฑ
cd environment_variable // ๋๋ ํ ๋ฆฌ ์ด๋
npm init //์ด๊ธฐํ ๋ฒ์ ์ธ package.json ํ์ผ ์์ฑ
npm i dotenv // dotenv ๋ชจ๋ ์ค์น
nano index.js //์๋ก์ด ํ์ผ ์์ฑ ํ 'console.log(process.env);' ์
๋ ฅ
cat index.js //console.log(process.env)
node index.js //export์ ๊ฐ์ด ํ๊ฒฝ๋ณ์๋ค ๋ณด์ฌ์ค
.env
export๋ก ํ๊ฒฝ๋ณ์๋ฅผ ๋ง๋ค๋ฉด ํ์ฌ ์ฌ์ฉ ์ค์ธ ํฐ๋ฏธ๋์์๋ง ์์๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. ํ๊ฒฝ๋ณ์๋ฅผ Linux ์ด์์ฒด์ ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ต๋๋ค. ๊ทธ ์ค node.js์์๋ .env ํ์ผ์ ๋ง๋ค์ด ์ ์ฅํฉ๋๋ค.
mkdir environment_variable // ๋๋ ํ ๋ฆฌ ์์ฑ
cd environment_variable // ๋๋ ํ ๋ฆฌ ์ด๋
npm init //์ด๊ธฐํ ๋ฒ์ ์ธ package.json ํ์ผ ์์ฑ
npm i dotenv // dotenv ๋ชจ๋ ์ค์น
nano .env //.env ํ์ผ์ ์์ฑ ํ, ์ฌ์ฉํ๊ณ ์ ํ๋ ํ๊ฒฝ๋ณ์๋ฅผ ์
๋ ฅํ ๋ค ์ ์ฅ
cat .env //myname=deviloper
๋ชจ๋ dotenv๋ฅผ ์ด์ฉํ๋ฉด, ํ์ผ .env์ ์ ์ฅํ ํ๊ฒฝ๋ณ์๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
const dotenv = require("dotenv");
dotenv.config();
console.log(process.env.myname);
Sprint Review
sudo: ์ผ๋ฐ ์ฌ์ฉ์๊ฐ root ๊ถํ(๊ด๋ฆฌ์ ๊ถํ)์ ๋น๋ ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ ํ์ฉํ ์ ์๋ ์ปค๋งจ๋
su: ๊ณ์ ์ ํ(su ์ฌ์ฉ์๋ช )
root: ํด๋น ์์คํ ์ ์ฒด์ ๊ด๋ฆฌ ๊ถํ์ ๊ฐ์ง ์ ์ง์ ๋ฅํ ์ํผ ์ ์
admin: ์ผ๋ฐ ์ ์ ์ธ๋ฐ root๊ฐ ๊ด๋ฆฌ ๊ถํ์ ์ค ์ ์์
user: ๊ทธ๋ฅ ์ผ๋ฐ ์ ์
๋ฆฌ๋ ์ค ์ ๋ฐฐ์๋๋ฉด ํ๋์ ๋ฌธ์ ์์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ผ๋ จ์ ๋ช ๋ น์ด๋ฅผ ๋ฐ๋ก ์คํํ ์ ์์