π‘ λ³Έ λ¬Έμλ 'chmod νμΌ κΆν λ° νΉμ κΆν μ€μ 'μ λν΄ μ 리ν΄λμ κΈμ λλ€.
Linux OSμμλ νμΌ λ° ν΄λμ μ κ·Ό κΆνμ΄ μ‘΄μ¬ν©λλ€. μ΄λ‘ μΈν΄ νΉμ νμΌμ μ κ·Όν λ 'permissionError', 'Permission denied'μ κ°μ μλ¬κ° λ°μν μ μλλ°, μ΄λ νμΌμ μ κ·Ό κΆν μ€μ μ λν΄ μκ³ μλ€λ©΄ λ§μ λμμ΄ λ κ² κ°μ μ 리νμμΌλ μ°Έκ³ νμκΈ° λ°λλλ€.
1. Linuxμμ κΆνμ΄λ?
1.1 ν΄λ μ κ·Ό κΆν νμΈνκΈ°
'ls -al', 'll' μ λͺ λ Ήμ΄μ κ²½λ‘λ₯Ό λΆμ΄λ©΄ ν΄λΉ κ²½λ‘μ μμΉν νμΌλ€μ μ κ·Ό κΆν(e.g. drwxr-xr-x)μ νμΈν μ μμ΅λλ€.
$ ll /
total 2097252
drwxr-xr-x 21 root root 4096 8μ 31 13:50 ./
drwxr-xr-x 21 root root 4096 8μ 31 13:50 ../
lrwxrwxrwx 1 root root 7 7μ 26 2022 bin -> usr/bin/
drwxr-xr-x 4 root root 4096 1μ 17 06:40 boot/
drwxr-xr-x 3 root root 4096 8μ 31 13:50 build/
drwxrwxr-x 2 root root 4096 7μ 26 2022 cdrom/
drwxr-xr-x 19 root root 4600 1μ 25 12:39 dev/
drwxr-xr-x 146 root root 12288 1μ 26 09:04 etc/
drwxr-xr-x 9 root root 4096 1μ 25 16:44 home/
lrwxrwxrwx 1 root root 7 7μ 26 2022 lib -> usr/lib/
...
drwxrwxrwt 38 root root 12288 1μ 26 12:00 tmp/
drwxr-xr-x 14 root root 4096 2μ 4 2021 usr/
drwxr-xr-x 14 root root 4096 2μ 4 2021 var/
λͺ λ Ήμ΄λ₯Ό ν΅ν΄ νμΈνλ©΄ ν΄λλ§λ€ λ€μν μ κ·ΌκΆνμ κ°λ κ²μ λ³Ό μ μμ΅λλ€. μλμμ μ΄λ¬ν μ κ·Ό κΆνμ΄ λ¬΄μ¨μλ―Έλ₯Ό κ°λμ§ νμΈν΄λ³΄λλ‘ νκ² μ΅λλ€.
1.2 ν΄λ μ κ·Ό κΆν λΆμνκΈ°
drwxrwxrwx κΆνμ d/rwx/rwx/rwx μ κ°μ΄ λλμ΄ ν΄μν μ μμ΅λλ€.
μ¬κΈ°μ d λ directoryμ μ½μλ‘ ν΄λΉ νμΌ μμ²΄κ° ν΄λμμ λνλ λλ€.
μ΄ν rwx λ±μ λ¬Έμμ΄μ΄ 3λ² λ°λ³΅λλλ°, μνλ²³ κ°κ°μ read(r), write(w), execute(x)λ₯Ό μλ―Έν©λλ€. λν 3λ² λ°λ³΅λλ μ΄μ λ μμλλ‘ μ μ κΆν(user), κ·Έλ£ΉκΆν(group), κ·ΈμΈ κΆν(other)λ₯Ό μλ―Έν©λλ€. λ°λΌμ drwxrwxrwxμ μλ―Έλ λ€μκ³Ό κ°μ΅λλ€.
- d=> directory(ν΄λ)μ΄λ©°
- μμ μ μ κ° μ½κ³ (r), μ°κ³ (w), μ€ν(x)μ ν μ μκ³
- μ μ κ° μν κ·Έλ£Ήμ΄ μ½κ³ (r), μ°κ³ (w), μ€ν(x)μ ν μ μκ³
- μμ ν μ μ μ΄μΈμ μ μ κ° μ½κ³ (r), μ°κ³ (w), μ€ν(x)μ ν μ μμ
μΆκ°λ‘ κ° bit μ리μλ₯Ό κ³μ°νμ¬ r κΆν(4) w κΆν(2) x κΆν(1) = μ΄ν© 7λ‘ λνλΌ μ μμΌλ©° μ΄λ₯Ό μ΄μ©νμ¬ κΆν μ€μ μ λ³κ²½ν μ μμ΅λλ€. κΆν μ€μ λ°©λ²μ λν΄μλ μλμμ μΈκΈνμμΌλ μ°Έκ³ νμκΈ° λ°λλλ€.
2. νμΌ κΆν μ€μ
2.1 μΌλ°μ μΈ νμΌ κΆν μ€μ
μΌλ°μ μΌλ‘ κΆν μ€μ λ°©λ²μ chmodλ₯Ό μ΄μ©νμ¬ μ§μ ν μ μμ΅λλ€.
$ chmod 777 /test
test ν΄λμ rwxrwxrwx κΆν λΆμ¬
$ chmod +r /test
test ν΄λμ rκΆν λΆμ¬
$ chmod -x /test
test ν΄λμ xκΆν νμ
κ·Έλ°λ° μ΄λ₯Ό μμ£Ό μ¬μ©νλ€λ³΄λ©΄ νΉμ΄ν κΆνμ λ³Ό μ μμ΅λλ€. μλ₯Ό λ€μ΄ λ€μκ³Ό κ°μ΅λλ€.
$ ll / | grep tmp
drwxrwxrwt 38 root root 12288 1μ 26 12:12 tmp/
μμμ 보μ΄λ κΆνμ λ§μ§λ§ bitλ tλ‘ μμμ μΈκΈν rwxμ ν΄λΉνμ§ μμ΅λλ€. μ΄λ₯Ό sticky bitλΌ νλ©° μ΄μ λΉμ·ν μ νμ κΆνμ νΉμ κΆνμ΄λΌ ν©λλ€.
2.2 νΉμ κΆν μ€μ
κΈ°μ‘΄ κΆνμ user, group, other μ΄λ κ² μΈκ°μ§λ‘ λλμ΄μ Έ μμ£ ? μ΄λ κ² λλ κΆν μ€ νΉμ ν λ¬Έμκ° λ€μ΄κ°λ©΄ νΉμν κΆνμ΄ λ§λ€μ΄μ§λλ° νΉμκΆνμ μ’ λ₯λ λ€μκ³Ό κ°μ΅λλ€.
2.2.1 SETUID
μΌμμ μΈ μ¬μ©μ κΆνμΌλ‘ μμ μλ§ μ κ·Ό κ°λ₯ν νμΌμ μΌλ° μ μ λ‘ μ κ·Όμ΄ νμν λ μ¬μ©ν©λλ€. user μ μ κ·ΌκΆν x μ리μ s κ° λμ λ€μ΄κ°λ©΄ setuidμ΄λ©°, λλ¬Έμ Sκ° λ€μ΄κ°λ©΄ μΌλ° κΆνμ -(μ κ·Ό κΆν μμ)κ³Ό κ°μ μλ―Έλ₯Ό κ°μ§λλ€. κΆν μ€μ μ μμ΄μ 맨 μμ μ«μ 4λ₯Ό λΆμ΄λ©΄ μ€μ λ©λλ€.
- e.g. rws rwx rwx (4777)
2.2.2 SETGID
μΌμμ μΈ κ·Έλ£Ή κΆνμΌλ‘ μμ μλ§ μ κ·Ό κ°λ₯ν νμΌμ μΌλ° μ μ λ‘ μ κ·Όμ΄ νμν λ μ¬μ©ν©λλ€. group μ μ κ·ΌκΆν x μ리μ s κ° λμ λ€μ΄κ°λ©΄ setgidμ΄λ©°, λλ¬Έμ Sκ° λ€μ΄κ°λ©΄ μΌλ° κΆνμ -(μ κ·Ό κΆν μμ)κ³Ό κ°μ μλ―Έλ₯Ό κ°μ§λλ€. κΆν μ€μ μ μμ΄μ 맨 μμ μ«μ 2λ₯Ό λΆμ΄λ©΄ μ€μ λ©λλ€.
- e.g. rwx rws rwx (2777)
2.2.3 STICKY BIT(t)
sticky bit(t) λ λ μ΄μΈμ μ μ νΉμ κ·Έλ£Ήμ κΆνμ΄ λΆμ¬λμ λ, λ°μν μ μλ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν bitμ λλ€.
777κΆνμ ν΄λμ λͺ¨λ μ¬μ©μλ€μ΄ μ κ·Όν μ μκΈ° λλ¬Έμ, λ€λ₯Έ μ¬μ©μκ° μ¬μ©νλ κ²μ λͺ¨λ₯΄κ³ μ§μ°κ² λλ μΌμ΄ λ°μν μ μλ€. μ΄μ κ°μ νμμ λ°©μ§νκΈ° μν΄ sticky bit κ°λ μ΄ μ겨λ¬μ΅λλ€.
sticky bitλ₯Ό λλ ν°λ¦¬μ μ€μ νλ©΄ λλ ν°λ¦¬ λ΄μ νμΌμ rootμ νμΌμμ μ(μμ ν΄λμ wκΆνμ κ°μ§ μ¬μ©μ)λ§ μμ κ°λ₯νμ¬, νμΌμ 보νΈνκΈ° μν λͺ©μ μΌλ‘ λλ ν°λ¦¬μλ§ μ€μ κ°λ₯ν©λλ€. μΌλ°μ μΌλ‘ λͺ¨λ μ¬μ©μκ° μ κ·Όν μ μλ /tmp /var/tmp λ±μ΄ sticky bit κΆνμΌλ‘ μ§μ ν©λλ€.
- e.g. rwx rwx rwt (1777)
2.3 κΆν λΆμ¬ μμ
$ chmod 1777 /test
$ chmod +t /test
μ΄λ κ² κΆνμ λΆμ¬νλ©΄ μλμ κ°μ΄ sticky bitκ° μ μ©λ κ²μ νμΈν μ μμ΅λλ€.
$ ls -ld /tmp
drwxrwxrwt 21 root root 12288 Apr 28 16:18 /tmp
μΆκ°λ‘, linux κΈ°λ³Έ λλ ν 리 μ€ sticky bitκ° μ μ©λ ν΄λλ /tmp μ /var/tmp μ λλ€.
μ°Έκ³
- [Blog] linux νΉμκΆν: https://websecurity.tistory.com/14
- [Blog] κΈ°λ³Έ λλ ν 리 μ€μ λ° κΈ°λ₯: https://novice-data.tistory.com/32
- [Blog] UNIX / Linux : What is the correct permission of /tmp and /var/tmp directories: https://www.thegeekdiary.com/unix-linux-what-is-the-correct-permission-of-tmp-and-vartmp-directories/