# OS ํ™•์ธ

uname -a

cat /etc/issue
cat /etc/redhat-release
cat /etc/*release*

rpm --query centos-release

# OS bit ํ™•์ธ

getconf LONG_BIT

# ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ํ™•์ธ

rpm -qa

# ์—ด๋ฆฐ ํฌํŠธ ํ™•์ธ

netstat -tnlp

# list open files

lsof -i -nP | grep LISTEN | awk '{print $(NF-1)" "$1}' | sort -u
nmap localhost

# nginx ์‚ฌ์šฉ์—ฌ๋ถ€ ํ™•์ธ

systemctl status ngin bx

# chmod chown chcon

ls -l ๋กœ ๊ฐ ํŒŒ์ผ์˜ ๊ถŒํ•œ์„ ํ™•์ธ

# ํŒŒ์ผ์— ๊ถŒํ•œ์„ค์ •

chmod 777 test.txt

# ํด๋”์— ๊ถŒํ•œ์„ค์ •

chmode -R 777 folder
drwxrwxrwx

# nginx

cd /etc/nginx/conf.d

# ์žฌ์‹œ์ž‘

sudo service nginx stop
sudo service nginx start
sudo service nginx reload

# ์ƒํƒœํ™•์ธ

systemctl status nginx
telnet -tnlp

# list open files

lsof -i -nP | grep LISTEN | awk '{print $(NF-1)" "$1}' | sort -u
nmap localhost

# ๋””๋ ‰ํ† ๋ฆฌ ์šฉ๋Ÿ‰ํ™•์ธ

du -a directory

# ์••์ถ•

zip -r test.zip ./\*
unzip test.zip
unzip test.zip -d /home/oseongryu

# ํด๋” ๋ณต์ œ cp

cp -R repo backup_repo

# ์ƒˆ๋กœ์šด ์œ ์ € ์ƒ์„ฑ ํ›„, home์— nginx ์„œ๋น„์Šค ๋ฐฐํฌ์‹œ

useradd test
# ํ•ด๋‹น ํ™ˆ์— ๋Œ€ํ•ด์„œ ์ ‘๊ทผ๊ถŒํ•œ์„ ์ค˜์•ผํ•จ
cd /home/
chmod 755 test

# ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
ps -ef |grep nginx
# ํฌํŠธํ™•์ธ
netstat -tnlp

# ์ ‘์†๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ
curl http://localhost: 8086

# nginx์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ํ™•์ธ
tail -f /var/log/nginx/error.log

# userdel

# ๊ณ„์ •, ํ™ˆํด๋” ์‚ญ์ œ
userdel -r testuser
#  ๊ณ„์ • ์‚ญ์ œ
userdel testuser

cat /etc/passwd | grep testuser
ll /home | grep testuser

# linux Embeded Tomcat SSL

keytool -genkeypair -alias tomcat-localhost -storetype jks -keyalg RSA -keysize 2048 -validity 3650 -keystore <your project path>/<your project class path>/keystore.jks

server:
  port: 8443
  ssl:
    enabled: true
    key-alias: tomcat-localhost
    key-password: <your key password>
    key-store: classpath:keystore.jks
    key-store-type: PKCS12
    key-store-password: <your store key password>
    key-store-provider: SUN

# CentOS Default ์„ค์ •

# 1. ๊ณ„์ • ์ƒ์„ฑ
useradd testuser
passwd testuser

# 2. ์ผ๋ฐ˜๊ณ„์ • SUDO ์‚ฌ์šฉ
* sudoers ์„ค์ • ํŒŒ์ผ์— ์—†์Šต๋‹ˆ๋‹ค.
su
visudo -f /etc/sudoers

* Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
test ALL=(ALL)     ALL

# 3. Setting

sudo yum update
sudo yum install wget -y
sudo yum install vim -y
sudo yum install java-1.8.0-openjdk-devel.x86_64 -y

sudo yum install git
sudo yum install net-tools
netstat -tnlp
sudo yum install curl


# 4. firewalld ์„ค์ •
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

# UTC, KST

sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
date
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date

# CMD History

/home/.bash_history

history
history | less
history | tail
history 25
history | grep -i searchterm | less

# nc, nmap (Scan IP ranges)

nmap 127.0.0.1
nc -v 127.0.0.1 8080

# telnet

sudo yum install telnet
telnet 127.0.0.1 8080

# crontab

# 1. script

touch script_crontab_log.sh
chmod +x script_crontab_log.sh

---
#!/bin/bash
# Config Option
log_path="/home/user/logs"
expire_day=7

# Execute
find ${log_path}/* -type f -mtime +${expire_day} -exec rm -f {} \;
find /home/user/logs/* -type f -mtime +7 -exec rm -f {} \;
find /home/user/logs/* -name "filename*"
---

# 2. crontab
crontab -l
crontab -e
---
SHELL=/bin/bash
0 0 * * * /home/user/script_crontab_log.sh
---

//๋งค๋ถ„
* * * * * /home/user/script_crontab_log.sh

// ๋งค๋ถ„ + ๋กœ๊ทธ
* * * * * /home/user/script_crontab_log.sh > /home/user/cron/cron.log 2>&1

3. crontab log
 /var/log/cron

# ssh connect

# 1. Client
ssh-keygen -t rsa
ssh-copy-id user@192.168.0.1

# ํŠน์ • ssh-copy
ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.0.1

# ssh-copy-id ์ˆ˜๋™
ssh ์—ฐ๊ฒฐํ•  ์„œ๋ฒ„์˜ .ssh ํด๋”์—์„œ
touch authorized_keys
chmod 600 authorized_keys
vi authorized_keys
ํด๋ผ์ด์–ธํŠธ์—์„œ ์ƒ์„ฑํ•œ id_rsa.pub์˜ ํ…์ŠคํŠธ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ๊ธฐํ›„ ์ €์žฅ

# ~/.ssh/config
---
Host rootserv
    HostName 192.168.0.1
    Port 22
    IdentityFile ~/.ssh/id_rsa_root
    User root
---

2. Server
systemctl restart sshd
chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys

# ssh proxyjump

Host root-proxy
    HostName 192.168.0.99
    Port 22
    User root

Host root-was1
    HostName 192.168.0.1
    Port 22
    User root
    ProxyJump root-proxy

# systemd

# 0. ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ chmod
chmod +x start_server.sh
chmod +x stop_server.sh


# 1. systemd์— ์„œ๋น„์Šค ํŒŒ์ผ ์ƒ์„ฑ

sudo vi /usr/lib/systemd/system/api_service.service

---
[Unit]
// systemctl status ๋ช…๋ น์–ด์— ํ‘œ์‹œ๋˜๋Š” ์ƒ์„ธ ์„ค๋ช…
Description=api_service
// ์œ ๋‹›์ด ์‹œ์ž‘๋˜๋Š” ์ˆœ์„œ๋ฅผ ์กฐ์ •ํ•˜์—ฌ After์— ์ง€์ •๋œ ์œ ๋‹›์ด ์‹คํ–‰๋œ ์ดํ›„ ์‹œ์ž‘๋œ๋‹ค.
After=network.target

[Service]
// ExecStart์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์œ ๋‹› ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜๋ฉฐ, simple, forking, oeshot, idle ๋“ฑ์ด ์žˆ๋‹ค.
Type=forking
User=serviceadmin
Group=serviceadmin
// syslog์—์„œ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฆ„
SyslogIdentifier=api_service
// ์‹คํ–‰๋œ ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์„ค์ •
WorkingDirectory=/home/serviceadmin
// systemctl ๋ช…๋ น์–ด๋กœ ์ธํ•œ ์ค‘์ง€๋ฅผ ์ œ์™ธํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ ํ›„ ์žฌ์‹œ์ž‘ํ•œ๋‹ค.
Restart=always
// Restart ์˜ต์…˜๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ๋ช‡ ์ดˆ์— ์‹คํ–‰ํ• ์ง€ ๊ฒฐ์ •
RestartSec=0s
// ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ
ExecStart=/home/serviceadmin/start_server.sh start
// ์„œ๋น„์Šค๊ฐ€ ์ •์ง€๋  ๋•Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ
ExecStop=/home/serviceadmin/stop_server.sh stop

[Install]
// ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰๋  ํƒ€๊ฒŸ ์„ค์ •
WantedBy=multi-user.target
---

# 2. systemd ์ ์šฉ์„ ์œ„ํ•ด ์žฌ์‹œ์ž‘
sudo systemctl daemon-reload

# 3. use
sudo systemctl start api_service.service
sudo systemctl stop api_service.service
sudo systemctl restart api_service.service
sudo systemctl status api_service.service

# * ์—๋Ÿฌ๋ฐœ์ƒ์‹œ
sudo systemctl reset-failed api_service.service
sudo systemd-analyze verify api_service.service

# 4. ์„œ๋ฒ„ ์žฌ๋ถ€ํŒ…์‹œ ์„œ๋น„์Šค ์‹คํ–‰
sudo systemctl enable api_service.service
systemctl status api_service.service

# connect: Network is unreachable

ping 8.8.8.8

# ๋‚ด๋ถ€๋ง ์„ค์น˜

# YUM์ด์šฉ์‹œ ๋‹ค์šด๋กœ๋“œ๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ (์ด๋ฏธ ์„ค์น˜๋˜์–ด์žˆ์—ˆ์Œ)
yum -y install yum-plugin-downloadonly
# ๋ ˆํฌ๋ฐ์ดํ„ฐ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜
yum -y install createrepo
# repository ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
mkdir /test
# ํ•„์š”ํ•œ RPM์„ ๋‹ค์šด๋กœ๋“œ
vi /etc/yum.repos.d/MariaDB.repo
---
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
---

# yum downloadonly์˜ ๊ฒฝ์šฐ ๋‹ค์šด๋กœ๋“œ๋ฐ›์„ ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์น˜๋˜์–ด์žˆ์œผ๋ฉด ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์ง€์ง€์•Š์Œ
# ๋‹ค์šด๋กœ๋“œ ๋ฐ›์œผ๋ ค๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‚ญ์ œํ•˜๊ณ ๋‚˜ ๋‹ค๋ฅธํ™˜๊ฒฝ์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์•ผํ•จ
yum -y install [์„ค์น˜ํ•  ํ”„๋กœ๊ทธ๋žจ๋ช…] --downloadonly --downloaddir=/test
yum -y install MariaDB-server --downloadonly --downloaddir=/test

# Repo MetaData๋ฅผ ์ƒ์„ฑํ•œ๋‹ค
createrepo /test
---
[mariadb]
name = MariaDB
baseurl = file:///test/
enabled=1
gpgcheck=0
---

# ์™ธ๋ถ€๋ง์—์„œ ์ง„ํ–‰ํ•œ /test ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‚ด๋ถ€๋ง ์„œ๋ฒ„ /test์— ๋ณต์‚ฌ
vi /etc/yum.repo.d/MaraiDB.repo
# yum ์ €์žฅ์†Œ๋ฅผ ์ž˜ ์ฝ์–ด์˜ค๋Š”์ง€ ํ™•์ธ
yum repolist
# MariaDB YUM์„ค์น˜ ์‹คํ–‰
yum -y install MariaDB

# SFTP ์„ค์ •

# 1. SFTP๋ฅผ ์œ„ํ•œ SSH์„ค์น˜
rpm -qa|grep ssh

# 2. SFTP ๊ตฌ์„ฑํ•˜๊ธฐ (SFTP ๊ถŒํ•œ์„ ์–ป์„ user์™€ group๋งŒ๋“ค๊ธฐ)
sudo mkdir -p /data/sftp
sudo chmod 701 /data

# 3. ๊ทธ๋ฃน ๋ฐ ์œ ์ € ์ƒ์„ฑ
3-1. ๊ทธ๋ฃน๋ช… sftpgroup ์ƒ์„ฑ
sudo groupadd sftpgroup

3-2. ์œ ์ € ์ƒ์„ฑ
-g : ๊ทธ๋ฃน sftpgroup ํฌํ•จ์‹œํ‚ด
-d : ์œ ์ €๊ฐ€  /upload ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋„๋ก ์„ค์ •, (/data/sftpgroup/upload)
-s : ์œ ์ €(sftpuser01)๊ฐ€ ssh ํ”„๋กœํ† ์ฝœ์ด ์•„๋‹ˆ๊ณ , sftp ํ”„๋กœํ† ์ฝœ๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ์ œํ•œ
 
useradd -g sftpgroup -s /sbin/nologin sftpuser01
passwd sftpuser01

# 4. upload ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งŒ๋“ค๊ณ , ๊ถŒํ•œ ์„ค์ •ํ•˜๊ธฐ
mkdir -P : ๊ฒฝ๋กœ์— ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์—†์œผ๋ฉด ๋งŒ๋“ค๊ณ  ์žˆ์œผ๋ฉด ๋ƒ…๋‘ 
chown -R : ๊ฒฝ๋กœ ํ•˜์œ„ ํŒŒ์ผ์„ ๋ชจ๋‘ ๊ถŒํ•œ ๋ณ€๊ฒฝ

mkdir -p /data/sftpuser01/upload
chown -R root:sftpgroup /data/sftpuser01
chown -R sftpuser01:sftpgroup /data/sftpuser01/upload

# 5. SSH ConfigureํŒŒ์ผ ์ˆ˜์ •ํ•˜๊ธฐ
vi /etc/ssh/sshd_config

---
Match Group sftpgroup
    ChrootDirectory /data/%u
    ForceCommand internal-sftp
---
# 6. SSH ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ ๋ฐ ์žฌ์‹œ์ž‘
service sshd status
service sshd restart

# 7. SFTP ์ž‘๋™ ํ…Œ์ŠคํŠธ
yum list nmap
yum install nmap -y
nmap -n 192.168.0.1

# 8. ์›๊ฒฉ์—์„œ ์ ‘์† ํ…Œ์ŠคํŠธ
ssh sftpdev01@192.168.0.1
sftp -oPort=22 -i ~/.ssh/id_rsa_sftpdev01 sftpdev01@192.168.0.1

# ์„œ๋ฒ„ ์žฌ์‹œ์ž‘, ์„œ๋ฒ„ ์ข…๋ฃŒ

# 10๋ถ„ ๋’ค ์ข…๋ฃŒ (halt)
shutdown -h +10
# 13์‹œ ์žฌ๊ฐ€๋™ (reboot)
shutdown -r 13:00
# ์ฆ‰์‹œ ์žฌ๊ฐ€๋™
shutdown -r now

# ์žฌ๋ถ€ํŒ…
reboot

# CentOS ์„œ๋ฒ„ ์„ค์ • ํ™•์ธ

#
ip addr show

#
echo > /dev/tcp/127.0.0.1/22
echo $?

ping 127.0.0.1
curl 127.0.0.1:80

telnet 127.0.0.1 80
traceroute 127.0.0.1 -p 80

# oracle ๊ณผ Locale ๋งž์ถ”๊ธฐ

SELECT * FROM nls_session_parameters WHERE PARAMETER LIKE '%DATE%' OR PARAMETER LIKE '%LANG%';

# ํ˜„์žฌ ์–ธ์–ด์…‹ํ™•์ธ
locale
cat /etc/locale.conf
sudo vi /etc/locale.conf
# centos6
sudo vi /etc/sysconfig/i18n

# ์‚ฌ์šฉ๊ฐ€๋Šฅ ์–ธ์–ด์…‹ํ™•์ธ
localectl list-locales | grep -i ko_kr
# localectl list-locales | grep -i en_us

# ์–ธ์–ด์…‹๋ณ€๊ฒฝ
sudo localectl set-locale LANG=ko_KR.utf8
# sudo localectl set-locale LANG=en_US.utf8
cat /etc/locale.conf

# ๋ณ€๊ฒฝ์™„๋ฃŒ ํ›„ reboot
sudo reboot

# reboot ํ›„ ํ™•์ธ
locale
date

# timezone ๋ณ€๊ฒฝ
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# sshfs

sudo yum install -y epel-release
sudo yum install -y fuse-sshfs

mkdir /upload
sudo chmod -R 777 /upload
sudo sshfs devuser@192.168.0.1:/data/upload /upload -o allow_other

# nfs

https://it-serial.tistory.com/entry/Linux-NFS-%EC%84%9C%EB%B2%84-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%B6%95%EC%84%A4%EC%B9%98

# font error

# https://logical-code.tistory.com/191
# https://www.lesstif.com/lpt/linux-font-font-config-93127497.html
sudo yum install fontconfig -y
sudo yum install freetype fontconfig -y

# mem check

cat /proc/meminfo | grep Mem

# ํ†ฐ์บฃ ๊ตฌ๋™์ค‘ catalina.out ์‚ญ์ œ

# ํ†ฐ์บฃ ๊ตฌ๋™์ค‘ catalina.out ์‚ญ์ œ ์‹œ ํ†ฐ์บฃ ์žฌ๊ธฐ๋™ ์ „๊นŒ์ง€ ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ
cd tomcatsetupfolder/logs

#!/bin/bash
curr_date=$(date +%Y%m%d)
# ์˜ค๋Š˜๋‚ ์งœ๋กœ ๋ฐฑ์—…
cp catalina.out catalina.out-$curr_date
# ๋ณต์ œํ›„ ๋กœ๊ทธ ์ดˆ๊ธฐํ™”
cat /dev/null > catalina.out

# find

# 7์ผ ์ „ ํŒŒ์ผ ๋ชฉ๋ก ํ™•์ธ
find /home/user/logs/* -type f -mtime +7
# 7์ผ ์ „ ํŒŒ์ผ ๋ชฉ๋ก ํ™•์ธ ํ›„ ์‚ญ์ œ
find /home/user/logs/* -type f -mtime +7 -exec rm -f {} \;
# ํŠน์ •์ด๋ฆ„ ๋“ค์–ด๊ฐ„ ํŒŒ์ผ ๋ชฉ๋ก ํ™•์ธ
find /home/user/logs/* -name "filename*"

# centos GUI

systemctl get-default
systemctl set-default graphical.target
systemctl get-default

# GUI package setting
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"


yum -y groupinstall "GNOME Desktop" && systemctl set-default graphical.target && shutdown -r now
sudo yum install xrdp tigervnc-server

#https://medium.com/tech-guides/google-cloud-platform-gcp-access-linux-server-using-gui-running-in-gcp-instance-using-windows-201e315925a6
sudo su
passwd
systemctl start xrdp
systemctl enable xrdpCreated symlink from /etc/systemd/system/multi-user.target.wants/xrdp.service to /usr/lib/systemd/system/xrdp.service.

# logrotate

# ๋กœ๊ทธ์˜ ๋น„๋Œ€ํ™”๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋กœ๊ทธ ๋กœํ…Œ์ด์…˜


# /etc/logrotate.conf
weekly
rotate 4
create
dateext
compress
include /etc/logrotate.d
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# /etc/logrotate.d
/app/logs/shorts.log {
    daily
    missingok
    dateext
    dateformat -%Y-%m-%d_%s
    size 100M
    rotate 30
    notifempty
    create 644 tomcat tomcat
    copytruncate
}

# References

https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%A1%9C%EC%BB%AC%EC%84%9C%EB%B2%84_%EC%97%B4%EB%A6%B0_%ED%8F%AC%ED%8A%B8_%ED%99%95%EC%9D%B8
https://woonizzooni.tistory.com/entry/tcping-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%95
https://bkjeon1614.tistory.com/658
https://unix.stackexchange.com/questions/242782/centos-7-systemd-active-failed-result-start-limit
https://unix.stackexchange.com/questions/484431/allowing-non-root-users-to-manage-systemd-service-is-not-working
https://askubuntu.com/questions/692701/allowing-user-to-run-systemctl-systemd-services-without-password
https://sleeplessbeastie.eu/2021/03/03/how-to-manage-systemd-services-remotely/
https://serverfault.com/questions/841306/authentication-is-required-to-manage-system-services-or-units
sshfs: https://blog.sonim1.com/226
nfs: https://it-serial.tistory.com/entry/Linux-NFS-%EC%84%9C%EB%B2%84-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%B6%95%EC%84%A4%EC%B9%98
Last Updated: 4/13/2025, 11:14:44 PM