TIL

TIL 46: [Linux] ์‹ฌํ™”

Deviloper๐Ÿ˜ˆ 2021. 10. 5. 21:44

์˜ค๋Š˜์€ ๋ฆฌ๋ˆ…์Šค์— ๋Œ€ํ•ด ๋” ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. 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 ์‚ฌ์šฉ์ž๋ช…)

sudo ์งค

 

root: ํ•ด๋‹น ์‹œ์Šคํ…œ ์ „์ฒด์˜ ๊ด€๋ฆฌ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์ „์ง€์ „๋Šฅํ•œ ์Šˆํผ ์œ ์ €

admin: ์ผ๋ฐ˜ ์œ ์ €์ธ๋ฐ root๊ฐ€ ๊ด€๋ฆฌ ๊ถŒํ•œ์„ ์ค„ ์ˆ˜ ์žˆ์Œ

user: ๊ทธ๋ƒฅ ์ผ๋ฐ˜ ์œ ์ €

 

๋ฆฌ๋ˆ…์Šค ์ž˜ ๋ฐฐ์›Œ๋‘๋ฉด ํ•˜๋‚˜์˜ ๋ฌธ์„œ ์•ˆ์— ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ผ๋ จ์˜ ๋ช…๋ น์–ด๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ