251121 TIL
2025. 11. 21. 18:08ㆍCourses/아이티윌 오라클 DBA 과정
파일 접근 권한 관리(Cont.)
chmod(Cont.)
숫자로 권한 설정
- 8진수(0~7) 각 숫자는 권한 패턴
| 8진수 | 2진수 | rwx |
|---|---|---|
| 0 | 000 | --- |
| 1 | 001 | --x |
| 2 | 010 | -w- |
| 3 | 011 | -wx |
| 4 | 100 | r-- |
| 5 | 101 | r-x |
| 6 | 110 | rw- |
| 7 | 111 | rwx |
| 유저 | 그룹 | 기타 사용자 |
|---|---|---|
| rwx | rwx | rwx |
| 7 | 7 | 7 |
# test1/test2/test3 디렉터리 생성
[ora3@oracle ~]$ mkdir -p test1/test2/test3
[ora3@oracle ~]$ ls -lR
.:
total 4
-rwxrwxrwx. 1 ora3 ora3 2427 Nov 20 03:13 passwd
drwxrwxr-x. 3 ora3 ora3 19 Nov 20 03:54 test1
./test1:
total 0
drwxrwxr-x. 3 ora3 ora3 19 Nov 20 03:54 test2
./test1/test2:
total 0
drwxrwxr-x. 2 ora3 ora3 6 Nov 20 03:54 test3
./test1/test2/test3:
total 0
# test1 안에 모든 파일 및 디렉터리 권한 변경
[ora3@oracle ~]$ chmod -R 755 test1
[ora3@oracle ~]$ ls -lR
.:
total 4
-rwxrwxrwx. 1 ora3 ora3 2427 Nov 20 03:13 passwd
drwxr-xr-x. 3 ora3 ora3 19 Nov 20 03:54 test1
./test1:
total 0
drwxr-xr-x. 3 ora3 ora3 19 Nov 20 03:54 test2
./test1/test2:
total 0
drwxr-xr-x. 2 ora3 ora3 6 Nov 20 03:54 test3
./test1/test2/test3:
total 0
# test1 디렉터리 삭제
[ora3@oracle ~]$ rm -r test1
기본 접근 권한
- 리눅스에서 파일이나 디렉터리를 생성할 때 기본 접근 권한이 자동으로 설정됨
# 파일 생성
[ora3@oracle ~]$ ls -al > test
[ora3@oracle ~]$ ls -l
total 4
-rw-rw-r--. 1 ora3 ora3 507 Nov 20 04:00 test
# 디렉터리 생성
[ora3@oracle ~]$ mkdir new
[ora3@oracle ~]$ ls -l
total 4
drwxrwxr-x. 2 ora3 ora3 6 Nov 20 04:01 new
-rw-rw-r--. 1 ora3 ora3 507 Nov 20 04:00 test
# mask 값
[ora3@oracle ~]$ umask
0002
# mask값을 문자로 출력
[ora3@oracle ~]$ umask -S
u=rwx,g=rwx,o=rx
- 리눅스에서 기본적으로 파일을 생성하면 실행 권한(x)를 갖지 않음
| 파일 기본 권한(문자) | rw- | rw- | rw- |
|---|---|---|---|
| 파일 기본 권한(숫자) | 111(6) | 111(6) | 111(6) |
| mask 값 | 000(0) | 000(0) | 010(2) |
| 실제 파일 기본 권한 | 111(6) | 111(6) | 100(4) |
| 디렉터리 기본 권한(문자) | rwx | rwx | rwx |
|---|---|---|---|
| 디렉터리 기본 권한(숫자) | 111(7) | 111(7) | 111(7) |
| mask 값 | 000(0) | 000(0) | 010(2) |
| 실제 디렉터리 기본 권한 | 111(7) | 111(7) | 100(5) |
- mask 값 변경
# 기존 mask 값 조회
[ora3@oracle ~]$ umask
0002
[ora3@oracle ~]$ umask -S
u=rwx,g=rwx,o=rx
# mask 값 변경
[ora3@oracle ~]$ umask 022
# 변경된 mask 값 조회
[ora3@oracle ~]$ umask -S
u=rwx,g=rx,o=rx
[ora3@oracle ~]$ umask
0022
# 파일 생성
[ora3@oracle ~]$ cal > cal_print
# 폴더 생성
[ora3@oracle ~]$ mkdir fri
# 권한 확인
[ora3@oracle ~]$ ls -l
total 8
-rw-r--r--. 1 ora3 ora3 150 Nov 20 04:17 cal_print # 644
drwxr-xr-x. 2 ora3 ora3 6 Nov 20 04:17 fri # 755
drwxrwxr-x. 2 ora3 ora3 6 Nov 20 04:01 new
-rw-rw-r--. 1 ora3 ora3 507 Nov 20 04:00 test
- root 계정의 기본 mask 값은 0022
chown
- 파일이나 디렉터리의 소유자와 소유 그룹을 변경하는 명령어
chown 소유자:소유그룹 파일(디렉터리)
# root에서 ora3에 파일 생성
[root@oracle ~]# cp -v /etc/group /home/ora3
‘/etc/group’ -> ‘/home/ora3/group’
# ora3에서 파일 권한 조회 : group 파일의 소유자와 소유 그룹이 root
[ora3@oracle ~]$ ls -l
total 12
-rw-r--r--. 1 ora3 ora3 150 Nov 20 04:17 cal_print
drwxr-xr-x. 2 ora3 ora3 6 Nov 20 04:17 fri
-rw-r--r--. 1 root root 1034 Nov 20 04:27 group
drwxrwxr-x. 2 ora3 ora3 6 Nov 20 04:01 new
-rw-rw-r--. 1 ora3 ora3 507 Nov 20 04:00 test
# root에서 /home/ora3/group 파일의 소유자와 소유자 그룹 변경
[root@oracle ~]# chown ora3:ora3 /home/ora3/group
# ora3에서 파일 권한 조회 : group 파일의 소유자와 소유 그룹이 ora3
[ora3@oracle ~]$ ls -l
total 12
-rw-r--r--. 1 ora3 ora3 150 Nov 20 04:17 cal_print
drwxr-xr-x. 2 ora3 ora3 6 Nov 20 04:17 fri
-rw-r--r--. 1 ora3 ora3 1034 Nov 20 04:27 group
drwxrwxr-x. 2 ora3 ora3 6 Nov 20 04:01 new
-rw-rw-r--. 1 ora3 ora3 507 Nov 20 04:00 test
chown -R 소유자:소유그룹 파일(디렉터리): 디렉터리 안에 있는 모든 파일과 서브 디렉터리에 대해 변경
# root에서 ora3에 디렉터리 및 파일 생성
[root@oracle ~]# mkdir -p /home/ora3/test1/test2
[root@oracle ~]# cp -v /etc/passwd /home/ora3/test1
‘/etc/passwd’ -> ‘/home/ora3/test1/passwd’
[root@oracle ~]# ls -l /home/ora3
total 12
-rw-r--r--. 1 ora3 ora3 150 Nov 20 04:17 cal_print
drwxr-xr-x. 2 ora3 ora3 6 Nov 20 04:17 fri
-rw-r--r--. 1 ora3 ora3 1034 Nov 20 04:27 group
drwxrwxr-x. 2 ora3 ora3 6 Nov 20 04:01 new
-rw-rw-r--. 1 ora3 ora3 507 Nov 20 04:00 test
drwxr-xr-x. 3 root root 33 Nov 20 04:37 test1
[root@oracle ~]# ls -lR /home/ora3/test1
/home/ora3/test1:
total 4
-rw-r--r--. 1 root root 2427 Nov 20 04:37 passwd
drwxr-xr-x. 2 root root 6 Nov 20 04:37 test2
/home/ora3/test1/test2:
total 0
# ora3의 test1 디렉터리의 모든 파일 및 서브 디렉터리에 대해 소유자 및 소유 그룹 변경
[root@oracle ~]# chown -R ora3:ora3 /home/ora3/test1
[root@oracle ~]# ls -l /home/ora3
total 12
-rw-r--r--. 1 ora3 ora3 150 Nov 20 04:17 cal_print
drwxr-xr-x. 2 ora3 ora3 6 Nov 20 04:17 fri
-rw-r--r--. 1 ora3 ora3 1034 Nov 20 04:27 group
drwxrwxr-x. 2 ora3 ora3 6 Nov 20 04:01 new
-rw-rw-r--. 1 ora3 ora3 507 Nov 20 04:00 test
drwxr-xr-x. 3 ora3 ora3 33 Nov 20 04:37 test1
[root@oracle ~]# ls -lR /home/ora3/test1
/home/ora3/test1:
total 4
-rw-r--r--. 1 ora3 ora3 2427 Nov 20 04:37 passwd
drwxr-xr-x. 2 ora3 ora3 6 Nov 20 04:37 test2
/home/ora3/test1/test2:
total 0
chown 소유자 파일(디렉터리): 소유자만 변경
[root@oracle ~]# chown root /home/ora3/group
[root@oracle ~]# ls -l /home/ora3
total 12
-rw-r--r--. 1 ora3 ora3 150 Nov 20 04:17 cal_print
drwxr-xr-x. 2 ora3 ora3 6 Nov 20 04:17 fri
-rw-r--r--. 1 root ora3 1034 Nov 20 04:45 group
drwxrwxr-x. 2 ora3 ora3 6 Nov 20 04:01 new
-rw-rw-r--. 1 ora3 ora3 507 Nov 20 04:00 test
drwxr-xr-x. 3 ora3 ora3 33 Nov 20 04:37 test1
chown :소유그룹 파일(디렉터리): 그룹만 변경
[root@oracle ~]# chown :root /home/ora3/group
[root@oracle ~]# ls -l /home/ora3
total 12
-rw-r--r--. 1 ora3 ora3 150 Nov 20 04:17 cal_print
drwxr-xr-x. 2 ora3 ora3 6 Nov 20 04:17 fri
-rw-r--r--. 1 ora3 root 1034 Nov 20 04:45 group
drwxrwxr-x. 2 ora3 ora3 6 Nov 20 04:01 new
-rw-rw-r--. 1 ora3 ora3 507 Nov 20 04:00 test
drwxr-xr-x. 3 ora3 ora3 33 Nov 20 04:37 test1
chgrp
- 소유 그룹 변경
chown :소유그룹 파일(디렉터리)와 동일
# 소유 그룹 변경
[root@oracle ~]# chgrp ora3 /home/ora3/group
[root@oracle ~]# ls -l /home/ora3/group
-rw-r--r--. 1 ora3 ora3 1034 Nov 20 04:45 /home/ora3/group
# 디렉터리 안의 파일 및 서브 디렉터리까지 모두 소유 그룹 변경
[root@oracle ~]# chgrp -R root /home/ora3/test1
[root@oracle ~]# ls -lR /home/ora3/test1
/home/ora3/test1:
total 4
-rw-r--r--. 1 ora3 root 2427 Nov 20 04:37 passwd
drwxr-xr-x. 2 ora3 root 6 Nov 20 04:37 test2
/home/ora3/test1/test2:
total 0
파일 압축
tar
- 파일을 압축하고, 압축 해제하는 명령어
# ora3 의 모든 디렉터리 및 파일 삭제
[ora3@oracle ~]$ rm -r *
# 테스트를 위한 샘플 디렉터리 및 파일 생성
[ora3@oracle ~]$ mkdir test
[ora3@oracle ~]$ cal > ./test/ex1.txt
[ora3@oracle ~]$ date > ./test/ex2.txt
[ora3@oracle ~]$ ls -al > ./test/ex3.txt
[ora3@oracle ~]$ cp -v /etc/passwd ./test
‘/etc/passwd’ -> ‘./test/passwd’
[ora3@oracle ~]$ cp -v /etc/group ./test
‘/etc/group’ -> ‘./test/group’
[ora3@oracle ~]$ cd test
[ora3@oracle test]$ ls -l
total 20
-rw-r--r--. 1 ora3 ora3 150 Nov 20 05:08 ex1.txt
-rw-r--r--. 1 ora3 ora3 29 Nov 20 05:08 ex2.txt
-rw-r--r--. 1 ora3 ora3 507 Nov 20 05:08 ex3.txt
-rw-r--r--. 1 ora3 ora3 1034 Nov 20 05:08 group
-rw-r--r--. 1 ora3 ora3 2427 Nov 20 05:08 passwd
# tar cvf : 압축할 파일 모으기
[ora3@oracle test]$ tar cvf all.tar *
ex1.txt
ex2.txt
ex3.txt
group
passwd
[ora3@oracle test]$ ls -lh
total 32K
-rw-r--r--. 1 ora3 ora3 10K Nov 20 05:10 all.tar
-rw-r--r--. 1 ora3 ora3 150 Nov 20 05:08 ex1.txt
-rw-r--r--. 1 ora3 ora3 29 Nov 20 05:08 ex2.txt
-rw-r--r--. 1 ora3 ora3 507 Nov 20 05:08 ex3.txt
-rw-r--r--. 1 ora3 ora3 1.1K Nov 20 05:08 group
-rw-r--r--. 1 ora3 ora3 2.4K Nov 20 05:08 passwd
# tar zcvf : 압축할 파일 모은 후 압축
[ora3@oracle test]$ tar zcvf all.tar.gz *
all.tar
ex1.txt
ex2.txt
ex3.txt
group
passwd
[ora3@oracle test]$ ls -lh
total 36K
-rw-r--r--. 1 ora3 ora3 10K Nov 20 05:10 all.tar
-rw-r--r--. 1 ora3 ora3 2.0K Nov 20 05:11 all.tar.gz
-rw-r--r--. 1 ora3 ora3 150 Nov 20 05:08 ex1.txt
-rw-r--r--. 1 ora3 ora3 29 Nov 20 05:08 ex2.txt
-rw-r--r--. 1 ora3 ora3 507 Nov 20 05:08 ex3.txt
-rw-r--r--. 1 ora3 ora3 1.1K Nov 20 05:08 group
-rw-r--r--. 1 ora3 ora3 2.4K Nov 20 05:08 passwd
# home으로 이동
[ora3@oracle test]$ cd
# new 폴더 생성
[ora3@oracle ~]$ mkdir new
[ora3@oracle ~]$ ls
new test
# test에서 생성한 all.tar.gz 압축 파일을 new 디렉터리 안에서 압축 해제
[ora3@oracle ~]$ tar zxvfC ./test/all.tar.gz ./new
all.tar
ex1.txt
ex2.txt
ex3.txt
group
passwd
[ora3@oracle ~]$ ls -l new
total 32
-rw-r--r--. 1 ora3 ora3 10240 Nov 20 05:10 all.tar
-rw-r--r--. 1 ora3 ora3 150 Nov 20 05:08 ex1.txt
-rw-r--r--. 1 ora3 ora3 29 Nov 20 05:08 ex2.txt
-rw-r--r--. 1 ora3 ora3 507 Nov 20 05:08 ex3.txt
-rw-r--r--. 1 ora3 ora3 1034 Nov 20 05:08 group
-rw-r--r--. 1 ora3 ora3 2427 Nov 20 05:08 passwd
c: create, 여러 개의 파일을 하나로 묶음v: view, 압축되는 과정을 화면에 출력f: file, 생성될 파일명을 지정z: gzip, 압축 적용x: extract, 묶여 있는 파일 해제C: Change, 압축이 풀릴 위치 지정
zip
- 압축 하는 명령어
# 압축
[ora3@oracle test]$ zip all.zip *
adding: all.tar (deflated 82%)
adding: all.tar.gz (stored 0%)
adding: ex1.txt (deflated 33%)
adding: ex2.txt (stored 0%)
adding: ex3.txt (deflated 60%)
adding: group (deflated 47%)
adding: passwd (deflated 61%)
[ora3@oracle test]$ ls -lh
total 44K
-rw-r--r--. 1 ora3 ora3 10K Nov 20 05:10 all.tar
-rw-r--r--. 1 ora3 ora3 2.0K Nov 20 05:11 all.tar.gz
-rw-r--r--. 1 ora3 ora3 6.5K Nov 20 06:59 all.zip
-rw-r--r--. 1 ora3 ora3 150 Nov 20 05:08 ex1.txt
-rw-r--r--. 1 ora3 ora3 29 Nov 20 05:08 ex2.txt
-rw-r--r--. 1 ora3 ora3 507 Nov 20 05:08 ex3.txt
-rw-r--r--. 1 ora3 ora3 1.1K Nov 20 05:08 group
-rw-r--r--. 1 ora3 ora3 2.4K Nov 20 05:08 passwd
unzip
- 압축을 푸는 명령어
# 압축을 풀 폴더 생성
[ora3@oracle ~]$ mkdir test1
# 압축 해제
[ora3@oracle ~]$ unzip ./test/all.zip -d ./test1
Archive: ./test/all.zip
inflating: ./test1/all.tar
extracting: ./test1/all.tar.gz
inflating: ./test1/ex1.txt
extracting: ./test1/ex2.txt
inflating: ./test1/ex3.txt
inflating: ./test1/group
inflating: ./test1/passwd
Java 프로그램 실행
MobaXterm
- FTP를 통한 파일 전송을 위해 사용




- jdk 압축 폴더 /root 로 드래그



JDK 압축 해제
# /usr/java 디렉터리 생성
[root@oracle ~]# mkdir -p /usr/java
[root@oracle ~]# cd /usr/java
[root@oracle java]# pwd
/usr/java
[root@oracle java]# ls
# root 홈 디렉터리로 이동
[root@oracle java]# cd
[root@oracle ~]# pwd
/root
# jdk 압축 파일을 /usr/java로 이동
[root@oracle ~]# mv -v jdk-8u131-linux-x64.tar.gz /usr/java
‘jdk-8u131-linux-x64.tar.gz’ -> ‘/usr/java/jdk-8u131-linux-x64.tar.gz’
# /usr/java로 이동 및 jdk 파일 확인
[root@oracle ~]# cd /usr/java
[root@oracle java]# ls
jdk-8u131-linux-x64.tar.gz
# jdk 파일 압축 해제
[root@oracle java]# tar xvfz jdk-8u131-linux-x64.tar.gz
...
[root@oracle java]# ls -l
total 181196
drwxr-xr-x. 8 10 143 4096 Mar 15 2017 jdk1.8.0_131
-rw-r--r--. 1 root root 185540433 Nov 20 07:13 jdk-8u131-linux-x64.tar.gz
java 환경 변수 설정(root)
# java 환경 변수 설정
[root@oracle ~]# vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export JAVA_HOME=/usr/java/jdk1.8.0_131
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export PATH
# 변경 사항 적용
[root@oracle ~]# source .bash_profile
# java 환경 변수 출력
[root@oracle ~]# echo $JAVA_HOME
/usr/java/jdk1.8.0_131
# java 버전 확인 -> 여전히 openjdk 사용 중
[root@oracle ~]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
JDK 후보 설정
# java 명령어 실행 경로 출력
[root@oracle ~]# which java
/usr/bin/java
# /usr/bin/java는 /etc/alternatives/java를 가리키는 심볼릭 링크
[root@oracle ~]# ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 22 Nov 20 11:00 /usr/bin/java -> /etc/alternatives/java
# /etc/alternatives/java는 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/bin/java를 가리키는 심볼릭 링크
[root@oracle ~]# ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 71 Nov 20 11:00 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/bin/java
# java 명령어를 실행할 jdk 후보 목록에 새 jdk 추가
[root@oracle ~]# update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.8.0_131/bin/java" 1
# java 명령어를 실행할 jdk 선택
[root@oracle ~]# update-alternatives --config java
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/bin/java)
2 /usr/java/jdk1.8.0_131/bin/java
Enter to keep the current selection[+], or type selection number: 2
# 새로 설치한 jdk로 변경됨
[root@oracle ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
# /usr/bin/java는 /etc/alternatives/java를 가리키는 심볼릭 링크
[root@oracle ~]# ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 22 Nov 20 11:02 /usr/bin/java -> /etc/alternatives/java
# /etc/alternatives/java는 /usr/java/jdk1.8.0_131/bin/java를 가리키는 심볼릭 링크
[root@oracle ~]# ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 31 Nov 20 11:02 /etc/alternatives/java -> /usr/java/jdk1.8.0_131/bin/java
java 명령어를 실행할 jdk 후보 목록에서 특정 jdk 제거
[root@oracle ~]# update-alternatives --remove java "/usr/java/jdk1.8.0_131/bin/java"
java 프로그램 컴파일 및 실행(ora3)
# 자바 파일 작성
[ora3@oracle ~]$ vi Hello.java
class Hello{
public static void main(String arg[]){
System.out.println("Hello Java");
}
}
# 자바 파일 컴파일 -> 오류: ora3에는 java 환경 변수가 설정되어 있지 않음
[ora3@oracle ~]$ javac Hello.java
bash: javac: command not found...
Similar command is: 'java'
# 사용자 홈 디렉터리마다 .bash_profile 존재
# root계정에서 환경변수를 설정했더라도 다른 일반 사용자까지 적용되지 않음
# 환경변수 설정
[ora3@oracle ~]$ vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export JAVA_HOME=/usr/java/jdk1.8.0_131
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_HOME/bin
export PATH
# 변경 사항 적용
[ora3@oracle ~]$ source .bash_profile
# 자바 환경 변수 출력
[ora3@oracle ~]$ echo $JAVA_HOME
/usr/java/jdk1.8.0_131
# java 파일 컴파일 -> 클래스 파일 생성
[ora3@oracle ~]$ javac Hello.java
[ora3@oracle ~]$ ls -l
total 16
-rw-r--r--. 1 ora3 ora3 414 Nov 20 08:47 Hello.class
-rw-r--r--. 1 ora3 ora3 94 Nov 20 08:42 Hello.java
drwxr-xr-x. 2 ora3 ora3 4096 Nov 20 06:59 test
drwxr-xr-x. 2 ora3 ora3 4096 Nov 20 07:01 test1
# 자바 프로그램 실행
[ora3@oracle ~]$ java Hello
Hello Java'Courses > 아이티윌 오라클 DBA 과정' 카테고리의 다른 글
| 251120 TIL (0) | 2025.11.20 |
|---|---|
| 251119 TIL (0) | 2025.11.19 |
| 251118 TIL (0) | 2025.11.18 |
| 251117 TIL (0) | 2025.11.17 |
| 251114 TIL (0) | 2025.11.14 |