/etc/profile ~/.bash_profile : User specific environment and startup programs ~/.bashrc : User specific aliases and functions /etc/bashrc
Shell의 숨은 파일
/etc/skel 에서 계성 생성시 복사 됨 (bash_history 는 로그아웃 될때 생성)
.bash_history : exit 할 때 메모리에 가지고 있는 history 정보 저장
.bash_profile
.bashrc
.bash_logout : logout 시 실행하는 스크립트
Shell script 구동 원리
확장자는 의미 없음 : myjob.sh
$? : 이전명령 성공 여부
자식 shell 이 구동되며 실행
1 2
# bash myjob.sh bash --> bash --> 명령들..
실행 권한을 허용하려면
1 2 3 4 5
# mysum.sh -bash: mysum.sh: command not found # ./mysum.sh -bash: ./mysum.sh: 허가 거부됨 # chmod 755 myjob.sh
명령으로 실행 할때 어떤 쉘인지 알려주려면
1 2
# vi myjob.sh #! /bin/bash <-- 제일 앞에 쉘 정보 알려줌
현재 쉘에서 실행하려면
1 2
# . .bashrc # source .bashrc
리눅스의 종료와 재시작
종료
halt
sutdown -h +10[0,now,hh:mm]
init 0
재시작
reboot
sutdown -r +10[0,now,hh:mm]
init 6
Run Level
1 2 3 4 5 6 7
# /etc/inittab 0 - halt (Do NOT set initdefault to this) 1 - Single user mode <-- network 안됨 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 3 - Full multiuser mode 4 - unused 5 - X11 <-- GUI
1) # rpm -qa|grep quota 2) # mkdir /userHome 3) # vi /etc/fstab /dev/sdb1 /userHome ... defaults,usrquota ... # mount /userHome 혹은 # mount -o usrquota /dev/sdb1 /userHome # mount /dev/sdb1 on /userHome type ext3 (rw,usrquota) 4) 테스트 user 생성 # useradd -d /userHome/john john # useradd -d /userHome/bann bann # passwd john # passwd bann
5) # cd /userHome # quotacheck -aum (all, user, mount) <-- quota check 를 위한 db 생성
6) # edquota -u john <--- Block 크기 or Inode(파일) 개수 제한 Disk quotas for user john (uid 507): Filesystem blocks soft hard inodes soft hard /dev/sdb1 40 0 0 10 0 0
umask : 0022 -> 000 010 010 허용하고 싶지 않은 비트 설정 (rw-r–r–)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
type u g o [0000][000][000][000][000] set user id bit : rws : owner uid 권한으로 실행 가능 set group id bit : rws : owner gid 권한으로 실행 가능 sticky bit : rwt : swap 공간에 남아 있음. root 만 설정 가능
$ ll /usr/bin/chsh -rws--x--x 1 root root 19096 9월 4 2009 /usr/bin/chsh $ chsh -> /etc/passwd 수정해야 됨 [ps table] * set user id bit == 1 real user id : 일반 유저 : uid effective user id : 권한 체크 유저 : owner uid * set group id bit == 1 real group id : 일반 그룹 : uid effective group id : 권한 체크 그룹 : owner gid
# at now + 3minutes at> date > /root/at.out at> cal >> /root/at.out at> <EOT> job 2 at 2017-02-22 14:35
# at -l <==> atq 1 2017-02-22 15:29 a root # at -d 1 [작업번호] <==> atrm 1
1 2
/etc/at.deny : 사용 제한 /etc/at.allow : 사용 허용
반복적인 작업 : crontab
1 2 3
crond 실행되면서 /etc/crontab 참조 분 시 일 월 요일 사용자 실행명령 01 * * * * root run-parts /etc/cron.hourly
1 2 3 4 5 6 7 8 9
* /var/spool/cron/user_name 으로 크론테이블 생성됨 but root만 접근 가능 $ ll /usr/bin/crontab <-- set user id bit -rwsr-sr-x 1 root root 315416 2월 27 2009 /usr/bin/crontab
# kill 8018 <- pid # kill %2 <- job number # kill -l # kill $$ <- default -15. bash 가 무시함 9) SIGKILL 19)SIGSTOP 무시할 수 없음. 커널이 무조건 전달 함
Service
service network restart # status, start, stop
데몬, 서버프로세스
시스템과 독자적으로 구동되어 제공되는 프로세스
하드디스크 추가하기
fdisk : 파티션 나누기
1 2 3 4 5 6 7 8 9
# fdisk /dev/sdb n -> p -> 1 -> enter -> enter -> p -> w # fdisk -l /dev/sdb Disk /dev/sdb: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sdb1 1 130 1044193+ 83 Linux
# mkfs -t ext3 /dev/sdb1 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 130560 inodes, 261048 blocks 13052 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 16320 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376
/etc/sysconfig/network-scripts/ifcfg-eth0 : 네트워크 정보
/etc/nsswitch.conf : 정책 > hosts: files dns
/etc/hosts :
/etc/resolv.con : DNS 서버 정보
DNS(Domain Name System) 서버 : #53
캐싱 전용 네임 서버 : URL의 IP 주소를 알려주는 네임 서버
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# yum install caching-nameserver # vi /etc/named.caching-nameserver.conf <-- 상위 버전에서는 /etc/named.conf 127.0.0.1 -> any localhost -> any # named-checkconf /etc/named.caching-nameserver.conf # service named start # nslookup <-- nameserver 테스트 > server 192.168.214.100 Default server: 192.168.214.100 Address: 192.168.214.100#53 > www.naver.com ...
# vi /etc/resolv.conf nameserver 192.168.214.100
# chkconfig --list named # chkconfig --level 235 named on
마스터 네임 서버 : 도메인에 속한 컴퓨터들의 이름을 관리하고, 외부에서 해당 컴퓨터 IP주소를 알기 원할 때 알려주는 네임 서버
# vi /etc/named.rfc1912.zones <-- 상위 버전에서는 /etc/named.conf 에 같이 관리 zone "test.com" IN { type master; file "test.com.db"; allow-update { none; }; };
# vi /var/named/chroot/var/named/test.com.db $TTL 3H @ SOA @ root. ( 2 1D 1H 1W 1H ) IN NS @ IN A 192.168.214.100 www IN A 192.168.214.200 ftp IN A 192.168.214.100 blog IN A 192.168.214.150 ==> TTL : time to live @ : zone name
# named-checkzone test.com /var/named/chroot/var/named/test.com.db zone test.com/IN: loaded serial 2 OK
# service named restart
FTP 서버구축 : vsftpd
설치 여부 확인
1
# rpm -qa|grep vsftpd
설치
1 2 3
# yum install vsftpd` # service vsftpd start [ stop, start, restart, status ] # netstat -a|grep ftp
# system-config-securitylevel or system-config-firewall # iptables -F
root로도 연결하려면
1 2 3
* root 주석처리 /etc/vsftpd/ftpusers <-- not allowed to login /etc/vsftpd/user_list <-- denied user
Anonymous User 연결
1 2 3 4 5 6 7 8 9
# grep ^ftp /etc/passwd ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin # cd /var/ftp <-- ftp의 home directory # ls -l drwxr-xr-x 2 root root 4096 9월 4 2009 pub
# vi /etc/vsftpd/vsftpd.conf anon_upload_enable=YES <-- upload 허용 # chmod 777 /var/ftp/pub or chown ftp.ftp /var/ftp/pub
xinetd 형태로 설치
1 2 3 4 5 6 7 8
# service vsftpd stop # vi /etc/vsftpd/vsftpd.conf listen=NO # cp /usr/share/doc/vsftpd2.x.x/vsftpd.xinetd /etc/xinetd.d/vsftpd # vi /etc/xinetd.d/vsftpd disable=no # service xinetd restart
# getenforce Enforcing # getsebool -a | grep ftp allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off ftp_home_dir --> off ftpd_connect_db --> off ftpd_use_fusefs --> off ftpd_use_passive_mode --> off httpd_enable_ftp_server --> off tftp_anon_write --> off tftp_use_cifs --> off tftp_use_nfs --> off # setsebool -P allow_ftpd_full_access 1
# vi /etc/sysconfig/seLinux # setenforce 0 # getenforce Permissive
# vi /etc/auto.master /net -hosts : /net 아래에서 호스트명으로 접속(cd)시 자동 마운트 /misc /etc/auto.misc : auto.misc 에 설정된 정보로 자동 마운트 # vi /etc/auto.misc data -fstype=nfs 192.168.214.100:/share
Sharename Type Comment --------- ---- ------- ADMIN$ Disk 원격 관리 C$ Disk 기본 공유 IPC$ IPC 원격 IPC samShare Disk session request to 192.168.214.1 failed (Called name not present) session request to 192 failed (Called name not present) session request to *SMBSERVER failed (Called name not present) NetBIOS over TCP disabled -- no workgroup available
# mount -t cifs //192.168.214.1/smbShare /sambaMount -o username=linuxuser
Command
1 2 3 4 5 6 7
- 일반명령 : /bin/ or /usr/bin - 관리명령 : /sbin/ or /usr/sbin - $PATH 에서 명령을 찾아서 실행 $ shutdown -h +10 -bash: shutdown: command not found $ /sbin/shutdown -h +10 shutdown: you must be root to do that!