2019-06-11-Linux基础命令
199 238 106
目录
分区方案: 背景知识: 硬盘建立分区
主分区-> 扩展分区-> 逻辑分区-> 激活主分区-> 格式化所有分区;
虚拟机的三种网络模式:桥接网络 ,NAT网络地址转换(VMnet8) ,仅主机模式(VMnet1) ;其中,主机模式仅仅与物理主机通信,不能访问外网,而其它两种可以通过物理主机进行外网的访问。
主引导记录 MBR (Master Boot Record):
硬盘由大量扇区构成,以首扇区最重要,硬盘0号(首)扇区共512B ,结束符占2B ,主引导记录占446B ,所以分区表就只有64B ,分区表记录一个分区信息需要16B,所以做多记录4个分区信息;
为了解决分区不够的问题,可将其中的分区信息指向另外一个分区,称为扩展分区(扩展分区0扇区) ,在扩展分区里划分逻辑分区,一块硬盘只能有一个扩展分区,1/2/3/4号只能给主分区,5/6开始为逻辑分区 ;
1 2 3 dd if =/dev/sda of=MBR bs=1 count=64 skip=446 && hexdump -C /dev/sda -n 512 dd if =/dev/zero of=/dev/sda bs=1 count=64 seek=446 && dd if =MBR of=/dev/sda bs=1 count=64 seek=446 && sync
Linux 下的分区方案
分区
说明
/
用于存放系统,划为主分区 ✔
/boot
引导分区,划为主分区,大概200M即可; ✔
/swap
充当虚拟内存,划为逻辑分区,大致为电脑内存; ✔
/home
划为逻辑分区,用于存放用户文件; ✔
/tmp
存放临时文件,可有可无,划为逻辑分区;
RPM:(红帽软件包管理器) 相当于windows 的控制面板的软件管理
RPM -选项
说明
rpm -ivh filename.rpm
-v:verbose -h:进度 安装软件✔, -i,–info
rpm -Uvh filename.rpm
升级
rpm -e filename.rpm
--nodeps 不检查依赖性 卸载软件✔, -e,–erase
rpm -qa | grep filename
查询所安装的包的名称✔
rpm -qc filename
查询所安装的包的配置文件✔
rpm -qd filename
查询所安装的包的帮助文件✔
rpm -qi filename.rpm
查询包描述信息 -p(查未安装,包全名)
rpm -ql filename.rpm
列出包文件信息 -p(查未安装)
rpm -qf filename
查询文件属于哪个包
rpm -V filename
验证
程序包来源
Yum软件仓库(解决包的依赖性):
yum 选项
说明
yum repolist all
列出软件仓库 ✔
yum list all/installed
列出仓库所有软件/已安装的 ✔
yum info 包名称
查看包信息 ✔
yum history
info undo redo查看历史
yum search Package
查寻包
yum install 包名称
安装包 ✔
yum reinstall 包名称
卸载包 ✔
yum update 包名称
升级包 ✔
yum remove 包名称
移除包 ✔
yum clean all
清除所有仓库缓存 ✔
yum check-update
检查可更新的包 ✔
yum grouplist
查看系统中已经安装的包组
yum groupinstall
包组 安装指的包组
yum groupremove
包组 移除指定的包组
yum groupinfo
包组 查询指定的包组信息
yum deplist httpd
列出依赖包
yum provides rz
查找命令rz的提供者
1 2 BIOS-> Boot Loader-> 内核-> 内核初始化-> 启动初始化进程(systemd) ✔command [options] [arguments]
启用多用户 1 2 [root@xy ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target [root@xy ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
3. 管理服务 3.1 RPM 包安装
独立服务:
服务启动:
1 2 /etc/rc.d/init.d/httpd start service httpd start
服务自启动:
1 2 3 chkconfig --levle 2345 httpd on |off vim /etc/rc.d/rc.local ntsysv
基于xinetd 的非独立服务:
服务启动:
服务自启动:
1 2 chkconfig httpd on|off ntsysv
3.2 源码安装
service 命令其实只是在/etc/init.d/目录中寻找是否有服务启动脚本 , 通过源码安装的服务, 需要要把启动脚本 软连接到此目录; ln -s /usr/local/apache2/bin/apachectl /etc/init.d/httpd
chkconfig 需要修改/etc/init.d/httpd , chkconfig --add apachectl
System V init
systemctl
service foo start
systemctl start foo.service
service foo restar
systemctl restart foo.service
service foo stop
systemctl stop foo.service
service foo reload
systemctl reload foo.service
service foo status
systemctl status foo.service
—
journalctl -xe
4. 设置服务开机启动、不启动
System V init
systemctl
chkconfig foo on
systemctl enable foo.service
chkconfig foo off
systemctl disable foo.service
chkconfig foo list
systemctl list-unit-files –type=service
–level默认级别2345
—
5. 重置密码操作 1 2 3 4 5 6 7 8 cat /etc/redhat-release linux16 追加 rd.break ctrl+x运行 mount -o remount, rw /sysroot chroot /sysroot passwdtouch /.autorelable exit reboot
6. 解决piix4_smbus 0000:00:007:3:Host SMBus controller not enabled!
1 2 3 4 5 6 [root@xy Desktop]# lsmod |grep i2c i2c_piix4 22106 0 i2c_core 40325 2 drm,i2c_piix4 [root@xy Desktop]# vim /etc/modprobe.d/blacklist.conf blacklist i2c-piix4 reboot
7. 常用系统工作命令 7.1 man 1 2 3 [root@xy ~]# whatis motd [root@xy ~]# man 5 motd [root@xy ~]# man -w issue
7.2 echo # 字符串 / $变量 1 2 3 4 [root@xy ~]# echo xy xy [root@xy ~]# echo $SHELL /bin/bash
7.3 date
选项
说明
%t
跳格
%H
小时(00~23)
%S
秒(00~59)
%I
小时(00~12)
%M
分钟(00~59)
%F
Year-Month-Day
hwclock -w / -s
以软件/硬件时间为基准, 覆盖硬件/软件时间
1 2 3 4 5 6 7 [root@xy ~]# date Thu Jul 5 22:44:59 EDT 2018 [root@xy ~]# date "+%Y-%M-%m-%d %H:%M:%S" 2018-45-07-05 22:45:56 [root@xy ~]# date -s "20180706 10:49:00" --set =STRING Fri Jul 6 10:49:00 EDT 2018 [root@xy ~]# touch `date +%F`.log
CentOS 6.x / 7.x 1 2 3 4 5 6 7 [root@xy ~]# ntpd -p [root@xy ~]# /etc/sysconfig/clock [root@xy ~]# /etc/sysconfig/il8n --- [root@xy ~]# chronyc source [root@xy ~]# timedatectl set-timezone Asia/Shanghai [root@xy ~]# localectl set-locale LANG=zh_UTF-8
7.4 wget
选项
说明
-b
后台下载
-P
下载至指定目录
-O
指定目录并重命名
-c
断点续传
-p
下载页面搜有资源
-r
递归下载
-np
不追溯至父级
-k
make links in downloaded HTML point to local files
1 2 [root@xy ~]# wget -r -p http://www.linuxprobe.com [root@xy ~]# wget -r -p -np -k http://www.linuxprobe.com
curl
选项
说明
-i, –include
响应头部信息,连同body
-I, –head
仅仅显示响应头部信息
-X, –request
指定请求方式
-v
显示响应结果
-u
携带用户名/密码
7.5 ps(pstree -p)
选项
说明
-a
显示所有终端下执行的进程sysV
-u
显示指定用户相关的进程信息sysV
-x
显示没有控制终端进程sysV
-e
显示所有进程
-f
额外显示UID PPID(父进程ID) C与STIME栏位
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@xy ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.8 0.3 53784 7716 ? Ss 10:37 0:09 /usr/lib/ systetemd root 2 0.0 0.0 0 0 ? S 10:37 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 10:37 0:00 [ksoftirqd/0] root 3041 0.0 0.0 125440 1436 pts/0 R+ 10:55 0:00 ps -aux .......省略部分信息........ 5种常见进程状态:R(运行) S(中断) D(不可中断) Z(僵死) T(停止) [root@xy ~]# mpstat -P ALL; sar -P ALL [root@xy ~]# top top - 11:00:06 up 23 min, 2 users , load average: 0.96, 0.59, 0.53 Tasks: 486 total, 1 running, 485 sleeping, 0 stopped, 0 zombie %Cpu(s): 21.9 us, 11.8 sy, 0.0 ni, 66.3 id , 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 2035648 total, 1280152 used, 755496 free, 1084 buffers KiB Swap: 2113532 total, 0 used, 2113532 free. 342864 cached Mem .......省略部分信息........
7.7 pidof 1 2 [root@xy ~]# pidof sshd 1552
7.8 kill -l
进程间通信(IPC):共享内存;信号;Semaphore;
信号:
1 SIGHUB (进程不用重启,可以重读配置文件并生效)
2 SIGINT (Ctrl+c 中断)
9 SIGKILL (杀死进程)
15 SIGTERM (终止进程,默认)
7.9 killall 1 2 3 4 5 [root@xy ~]# pidof httpd 13581 13580 13579 13578 13577 13576 [root@xy ~]# killall httpd [root@xy ~]# pidof httpd [root@xy ~]# kill PID
8. 系统状态检测命令 8.1 ifconfig(ip)
RedHat/CentOS: /etc/sysconfig/network-scripts Debian/Ubuntu: /etc/network/interfaces
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 echo "1" > cat /proc/sys/net/ipv4/ip_forward /etc/sysctl.conf [root@xy ~]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:0c:29:11:26:05 txqueuelen 1000 (Ethernet) RX packets 496 bytes 46407 (45.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 770 bytes 62348 (60.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 770 bytes 62348 (60.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@xy ~]# ifconfig eno16777736 IP [root@xy ~]# yum install quagga -y [root@xy ~]# ifconfig eth0:1 192.168.10.131 netmask 255.255.255.0 up
8.2 uname 1 2 3 4 [root@xy ~]# uname -a Linux xy.com 3.10.0-123.el7.x86_64 [root@xy ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.0 (Maipo)
8.3 uptime 1 2 [root@xy ~]# uptime 11:08:55 up 31 min, 2 users , load average: 0.48, 0.42, 0.46
8.4. free 1 2 3 4 5 [root@xy ~]# free -h total used free shared buffers cached Mem: 1.9G 1.2G 732M 9.8M 1.1M 335M -/+ buffers/cache: 919M 1.0G Swap: 2.0G 0B 2.0G
8.5 who
-r 显示当前运行级别 console pty(物理终端) tty(虚拟终端) ttyS(串行终端) pts(伪终端)
1 2 3 [root@xy ~]# who xy :0 2018-07-05 22:38 (:0) xy pts/0 2018-07-06 11:06 (:0)
8.6 last: 显示用户登录历史及系统重启历史 1 2 3 4 5 6 7 8 9 [root@xy ~]# last xy pts/0 :0 Fri Jul 6 11:06 still logged in xy pts/0 :0 Thu Jul 5 22:41 - 11:06 (12:24) xy :0 :0 Thu Jul 5 22:38 still logged in reboot system boot 3.10.0-123.el7.x Fri Jul 6 06:37 - 11:11 (04:33) .......省略部分信息........ lastb -n lastlog -u username
8.7 history
调用
说明
!!
重复执行上一条
!n
重复执行第n条
!$
重复上一条命令的最后一个参数
!string
重复执行最后一条以该字串开头的
1 2 3 4 5 6 7 8 [root@xy ~]# history [root@xy ~]# history -c [root@xy ~]# cat ~/.bash_history lsmod|grep i2c vim /etc/modprobe.d/blacklist.conf reboot lsmod|grep i2c .......省略部分信息........
8.8 sosreport 1 2 3 4 5 6 [root@xy ~]# sosreport sosreport (version 3.0) This command will collect diagnostic and configuration information from this Red Hat Enterprise Linux system and installed applications. Your sosreport has been generated and saved in : /var/tmp/sosreport-xy.com-20180706113138.tar.xz
9. 工作目录切换命令 9.1 pwd
9.2 cd 1 2 3 4 5 6 7 [root@xy ~]# cd /etc [root@xy etc]# cd - /root [root@xy ~]# cd /etc [root@xy etc]# cd ~ [root@xy ~]# cd .. [root@xy /]# cd /etc
9.3 ls
选项
说明
-a
全部文件(包括隐藏文件)
-l
查看文件属性、大小等详细信息
-d
查看目录属性信息
-h,–human
–
-Z
查看安全上下文
1 2 3 4 5 6 7 [root@xy ~]# ls -al total 64 dr-xr-x---. 14 root root 4096 Jul 6 11:06 . -rw-------. 1 root root 378 Jul 6 11:06 .bash_history [root@xy ~]# ls -ld /etc drwxr-xr-x. 132 root root 8192 Jul 6 06:37 /etc
10. 文本编辑命令 10.1 cat
1 2 3 4 [root@xy ~]# cat -n initial-setup-ks.cfg 1 2 3 xconfig --startxonboot
10.2 more 1 2 3 4 [root@xy ~]# more initial-setup-ks.cfg 1 2 3 xconfig --startxonboot
10.3 head
选项
说明
-n
显示文本前n行
-c
指定获取前n字符数
-2
指定查看前2行
1 2 3 [root@xy ~]# head -n 5 initial-setup-ks.cfg 1 2
10.4 tail(默认后10行)
选项
说明
-c
指定获取后n字符数
-n
指定获取后n行
-f
查看文件尾部等待显示后续新追加内容
-F
同-f, 删除跟踪后会提醒
1 2 3 4 5 6 7 [root@xy ~]# tail -n 5 initial-setup-ks.cfg @guest-agents @guest-desktop-agents [root@xy ~]# tail -f /var/log/messages Jul 6 11:51:43 xy dbus[1068]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprintd.service' Jul 6 11:51:43 xy systemd: Starting Fingerprint Authentication Daemon...
10.3 diff 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [root@xy diff]# cat diff_A.txt Welcom to RedHat 7 RedHat certified Free Linux Lessons Professional guidance Linux Course [root@xy diff]# cat diff_B.txt Welcom tooo RedHat7 RedHat certified Free Linux LessonS //////////.....///////// Professional guidance Linux Course [root@xy diff]# diff --brief diff_A.txt diff_B.txt Files diff_A.txt and diff_B.txt differ [root@xy diff]# diff -c -Naur diff_A.txt diff_B.txt >patch.txt *** diff_A.txt 2018-07-06 12:06:35.889958037 -0400 --- diff_B.txt 2018-07-06 12:10:58.818955667 -0400 *************** *** 1,5 *** ! Welcom to RedHat 7 RedHat certified ! Free Linux Lessons Professional guidance Linux Course --- 1,8 ---- ! Welcom tooo RedHat7 ! ! RedHat certified ! Free Linux LessonS ! //////////.....///////// Professional guidance Linux Course
10.4 wc 统计指定文本的行数, 字数, 字节数 word count
选项
说明
-l
只显示行数line
-w
只显示单词数word
-c
只显示字节数
-m
只统计数字字(节)符总数
-L
最长的行包含字符数
1 2 3 4 5 6 [root@xy ~]# wc -l /etc/passwd 38 /etc/passwd [root@xy ~]# wc -w /etc/passwd 66 /etc/passwd [root@xy ~]# wc -c /etc/passwd 1902 /etc/passwd
10.5 stat 1 2 3 4 5 6 7 8 9 10 [root@xy ~]# stat anaconda-ks.cfg File: ‘anaconda-ks.cfg’ Size: 1071 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 68521005 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:admin_home_t:s0 Access: 2018-07-06 14:25:45.099882788 -0400 Modify: 2018-07-06 05:36:00.000000000 -0400 Change: 2018-07-06 12:21:08.983950168 -0400 Birth: -
10.6 cut 提取列 字符串,不识别空格
选项
说明
-d
分隔符,默认为Tab
-f,--filed
指定列数(1,3 1-3)
-c
按字符提取
1 2 3 4 5 6 7 8 [root@xy ~]# head -n 2 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@xy ~]# cut -d: -f1 /etc/passwd root ... sshd xy
10.7 tr 替换文本字符串
选项
说明
-s
将重复出现字符串压缩为一个字符串替换
-d
删除出现在字符集中的所有字符
-c
反选
1 2 3 4 [root@xy ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z] [root@xy ~]# echo 'xt.,l 1 jr#!$mn2 c*/fe3 uz4' |tr -dc [0-9] [root@xy ~]# ifconfig eno16777736 |head -n2 |tail -n1 |tr -dc '[0-9]. ' |tr -s ' ' |cut -d" " -f2 192.168.137.10
sort(取列排序)
选项
说明
-n
按数字排序
-r
倒序排序
-t
分隔符
-k,--key=POSL
指定某列进行排序(默认字符)
-u,--unique
重复内容只排一次
-f
忽略大小写
1 [root@xy ~]# df |grep sd | tr -s " " "%" |cut -d% -f5 |sort -nr |head -n1
uniq(相邻相同的字符)
选项
说明
-c,–count
统计每行重复出现次数
-d,–repeated
统计重复过的行(交)
-u,–unique
显示不曾重复的行(并)
1 2 3 4 5 6 [root@xy ~]# cut -d" " -f1 /var/log/httpd/access_log |sort |uniq -c |sort -nr [root@xy ~]# cat f1 f2 | sort |uniq -d [root@xy ~]# grep -f f1 f2 [root@xy ~]# cat f1 f2| sort |uniq -u [root@xy ~]# cat f1 f2 |sort -u
11. 文件目录管理命令 11.1 touch
选项
说明
-a
仅仅修改读取时间atime
-m
仅仅修改修改时间mtime
-d
都修改
1 2 3 4 5 6 7 8 [root@xy ~]# ls -l anaconda-ks.cfg -rw-------. 1 root root 1024 Jul 6 05:36 anaconda-ks.cfg [root@xy ~]# echo "Visit the LinuxProbe.com to learn linux skills" >>anaconda-ks [root@xy ~]# ls -l anaconda-ks.cfg -rw-------. 1 root root 1071 Jul 6 12:18 anaconda-ks.cfg [root@xy ~]# touch -d "2018-07-06 05:36" anaconda-ks.cfg [root@xy ~]# ls -l anaconda-ks.cfg -rw-------. 1 root root 1071 Jul 6 05:36 anaconda-ks.cfg
11.2 mkdir 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [root@xy ~]# cd /tmp [root@xy tmp]# mkdir diff [root@xy tmp]# cd diff [root@xy diff]# mkdir -p a/b/c/d/e [root@xy ~] mkdir mkdir -p base/{cd ,fd} [root@xy diff]# cd a [root@xy a]# [root@xy ~]# touch install.log [root@xy ~]# ls anaconda-ks.cfg Documents initial-setup-ks.cfg Music Public Videos Desktop Downloads install.log Pictures Templates [root@anyue test ]# mkdir -pv /testdir/dir1/{x,y}/{a,b} /testdir/ └── dir1 ├── x │ ├── a │ └── b └── y ├── a └── b [root@anyue test ]# mkdir -pv ./testdir/dir2/{x/{a,b},y} ./testdir/dir2/ ├── x │ ├── a │ └── b └── y [root@anyue test ]# mkdir -pv ./testdir/dir{3,4,5/dir{6,7}} mkdir : created directory ‘./testdir/dir3’ mkdir : created directory ‘./testdir/dir4’ mkdir : created directory ‘./testdir/dir5’ mkdir : created directory ‘./testdir/dir5/dir6’ mkdir : created directory ‘./testdir/dir5/dir7’ [root@anyue test ]# tree ./testdir/ ./testdir/ ├── dir3 ├── dir4 └── dir5 ├── dir6 └── dir7
11.3 cp (-a -r -v)
选项
说明
-a
复制目录时使用,保留链接/文件属性/并复制目录下的所有内容,等于dpR参数组合
-r
复制该目录下所有的子目录和文件
-v
显示过程
1 2 3 4 [root@xy ~]# cp -a install.log x.log [root@xy ~]# ls anaconda-ks.cfg Documents initial-setup-ks.cfg Music Public Videos Desktop Downloads install.log Pictures Templates x.log
11.4 mv 1 2 3 4 [root@xy ~]# mv install.log linux.log [root@xy ~]# ls anaconda-ks.cfg Documents initial-setup-ks.cfg Music Public Videos Desktop Downloads linux.log Pictures Templates
11.5 rm 1 2 3 4 5 6 7 8 9 10 11 12 13 [root@xy ~]# rm linux.log rm : remove regular empty file ‘diff’? y [root@xy ~]# rm -f linux.log anaconda-ks.cfg Documents initial-setup-ks.cfg Music Public Videos Desktop Downloads Pictures Templates [root@xy ~]# mkdir diff [root@xy ~]# cd diff [root@xy diff]# cd - /root [root@xy ~]# rm -rf diff [root@xy ~]# ls anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates Desktop Downloads Music Public Video
11.6 dd 按照指定大小和个数的数据块复制文件或转换文件
选项
说明
if
输入文件名称
of
输出文件名称
bs
设置块大小
count
设置复制块的个数
1 2 3 4 [root@xy ~]# dd if =/dev/zero of=10_file bs=10M count=1 [root@xy ~]# dd if =/dev/cdrom of=RHEL-server-7.0-x86_64.iso [root@xy ~]# file anaconda-ks.cfg anaconda-ks.cfg: ASCII text
11.7 file 1 2 [root@xy ~]# file /dev/sda /dev/sda: block special
12. 打包压缩与搜索命令 12.1 tar tar相关命令参考1
选项
说明
-c
创建压缩文档
-x
解开压缩文档
-t
查看压缩包内容
-z
用Gzip压缩/解压, *.tar.gz
-j
用bzip2压缩/解压, *.tar.bz2
-J
用xz压缩或解压
-v
显示压缩/解压过程
-f
目标文件名
-p
保留原文件的权限属性
-P
使用绝对路径来压缩
-C
指定目录
1 2 3 4 5 6 7 8 9 [root@xy tmp]# tar -czvf diff.tar.gz /diff diff/ diff/diff_A.txt diff/diff_B.txt diff/diff_B.txt~ diff/diff.tar.gz [root@xy diff]# tar -xzvf diff.tar.gz -C /diff [root@xy diff]# tar -g /data/backup/snapshot -czvf /data/backup/2017.tar.gz * [root@xy diff]# tar -g /data/backup/snapshot -czvf /data/backup/2017-1.tar.gz *
12.2 grep # 提取行 字符串搜索常用
选项
说明
-n
显示行号
-i
忽略大小写
-v
反向选择,仅列出没有关键词的行
-c
仅显示找到的行数
-E
支持扩展正则
1 2 3 4 [root@xy ~]# grep -n /sbin/nologin /etc/passwd 1:bin:x:1:1:bin:/bin:/sbin/nologin 2:daemon:x:2:2:daemon:/sbin:/sbin/nologin 3:adm:x:3:4:adm:/var/adm:/sbin/nologin
12.3 find # 文件搜索 实用
选项
说明
-name
匹配名称
-perm
匹配权限
-user
匹配所有者
-group
匹配所有组
-mtime -n +n
匹配修改内容的时间
-atime -n +n
匹配访问文件的时间
-nouser -nogroup
匹配没有所有者/所有组
-inum n
匹配节点编号
-maxdepth / -mindepth level
定义搜索深度
-exec 后续命令 {} dst ;
后可跟进 执行的命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@xy ~]# find /etc/ -name "host*" -print /etc/avahi/hosts /etc/host.conf /etc/hosts /etc/hosts.allow /etc/hosts.deny /etc/selinux/targeted/modules/active/modules/hostname.pp /etc/hostname [root@xy ~]# find / -perm -4000 -print /usr/bin/fusermount /usr/bin/su /usr/bin/chage /usr/bin/gpasswd /usr/bin/newgrp [root@xy ~]# find /tmp \(-not -user root -a -not -name 'f*' \) -ls [root@xy ~]# find /etc \(-path "/etc/sane.d" -o -path "/etc/fonts" \) -a -prune -o -name "*.conf" [root@xy ~]# find / -user xy -exec cp -a {} /root/findresults/ \; [root@xy ~]# find linux-4.18.13/ -name "*.c" -exec cat {} \; |grep -v "^$" |wc -l
13. 重定向操作符
标准输入重定向(STDIN, 文件描述符为 0)标准输出重定向(STDOUT, 文件描述符为 1)错误输出重定向(STDERR, 文件描述符为 2)
输入重定向 O-I
命令 < 文件
命令 << 分界符 遇见分界符为止
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2
输出重定向 I-O
命令 > 文件 清空原有文件
命令 2> 文件
命令 >> 文件 追加到原有文件内容的后面
命令 2>> 文件
命令 >> 文件 2>&1 将标准输出与错误输出共同写到文件
命令 &>> 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [root@xy ~]# man bash > readme.txt [root@xy ~]# echo "Welcome to Linuxprobe.Com" > readme.txt [root@xy ~]# echo "Quality linux learning materials" >> readme.txt [root@xy ~]# cat readme.txt Welcome to anyue967.Com Quality linux learning materials [root@xy ~]# ls -l xxxxxxx > readme.txt ls : cannot access xxxxxxx: No such file or directory [root@xy ~]# ls -l xxxxxxx 2> readme.txt [root@xy ~]# cat readme.txt ls : cannot access xxxxxxx: No such file or directory [root@xy ~]# wc -l < readme.txt 1 [root@xy ~]# cat readme.txt | wc -l 1cat >>README.txt <<EOF ... EOF ls /data /noexist 2>/root/out.log 1>&2ls /data/ /noexist >/root/out.log 2>&1ls /data/ /noexist &>/root/out.log A.cmd &>/dev/null B.cmd >/dev/null 2>&1 C.cmd 2>&1 >/dev/null ✔ D.cmd 2>/dev/null 1>&2
14. 管道符 | 1 2 3 4 5 6 7 8 9 10 11 12 [root@xy ~]# grep "/sbin/nologin" /etc/passwd |wc -l 33 [root@xy ~]# ls -l /etc/ |more total 1396 drwxr-xr-x. 3 root root 97 Jul 6 05:01 abrt -rw-r--r--. 1 root root 16 Jul 6 05:33 adjtime -rw-r--r--. 1 root root 1518 Jun 7 2013 aliases .......省略部分输出内容....... [root@xy ~]# echo "19937100xy" |passwd --stdin root Changing password for user root. passwd: all authentication tokens updated successfully. [root@xy ~]# who |tee -a /test/who.log
15. 命令行的通配符 * [] ?
选项
说明
*
任意长度的任意字符
?
任意单个字符
[0-9]
匹配0~9之间的单个数字的字符
[abc]
匹配a、b、c三个字符中个任意一个
1 2 3 4 5 6 7 8 9 10 11 [root@xy ~]# touch {a..z}.txt [root@xy ~]# ls -l /dev/sda* brw-rw----. 1 root disk 8, 0 Jul 6 2018 /dev/sda brw-rw----. 1 root disk 8, 1 Jul 6 2018 /dev/sda1 brw-rw----. 1 root disk 8, 2 Jul 6 2018 /dev/sda2 [root@xy ~]# ls -l /dev/sda? brw-rw----. 1 root disk 8, 1 Jul 6 2018 /dev/sda1 brw-rw----. 1 root disk 8, 2 Jul 6 2018 /dev/sda2 [root@xy ~]# ls -l /dev/sda[0-9] brw-rw----. 1 root disk 8, 1 Jul 6 2018 /dev/sda1 brw-rw----. 1 root disk 8, 2 Jul 6 2018 /dev/sda2
16. 常用的转义字符
选项
说明
\
使反斜杠后的一个变量变为单纯的字符串
‘’
转义其中所有的变量为单纯的字符串
“”
保留其中的变量属性,不进行转义处理
``
命令执行后并返回结果
1 2 3 4 5 6 7 8 9 [root@xy ~]# PRICE=5 [root@xy ~]# echo "Price is $PRICE " Price is 5 [root@xy ~]# echo "Price is $$PRICE " Price is 7982PRICE [root@xy ~]# echo "Price is \$$PRICE " Price is $5 [root@xy ~]# echo `uname -a` Linux xy.com 3.10.0-123.el7.x86_64
17. 重要的环境变量
系统变量
说明
HOME
—
SHELL
—
HISTSIZE
—
HISTFILESIZE
—
MAILL
—
LANG
—
RANDOM
—
PS1
—
PATH
—
EDITOR
—
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [root@xy ~]# touch xy.txt [root@xy ~]# ls anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures readme.txt Videos Desktop Downloads Music Public Templates xy.txt [root@xy ~]# rm xy.txt rm : remove regular empty file ‘xy.txt’? y [root@xy ~]# alias rm alias rm ='rm -i' [root@xy ~]# unalias rm [root@xy ~]# rm xy.txt [root@xy ~]# alias rm ='mv -t /data' [root@xy test ]# type -a true true is a shell builtin true is /bin/true true is /usr/bin/true [root@xy test ]# type true true is a shell builtin [root@xy test ]# env [root@xy ~]# echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin [root@xy ~]# PATH=$PATH :/root/bin [root@xy ~]# echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:
19. 配置主机名 1 2 3 4 [root@xy ~]# vim /etc/hostname xy.com [root@xy ~]# hostname xy.com
20. 配置网卡信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [root@xy ~]# cd /etc/sysconfig/network-scripts/ [root@xy network-scripts]# ls ifcfg-eno16777736 ifdown-ppp ifup-eth ifup-sit ifcfg-lo ifdown-routes ifup-ippp ifup-Team ifdown ifdown-sit ifup-ipv6 ifup-TeamPort ifdown-bnep ifdown-Team ifup-isdn ifup-tunnel [root@xy network-scripts]# vim ifcfg-eno16777736 TYPE=Ethernet BOOTPROTO=static NAME=eno16777736 ONBOOT=yes HWADDR=00:0C:29:11:26:05 IPADDR0=192.168.37.10 PREFIX0=24 GATEWAY0=192.168.37.1 DNS1=192.168.37.1 [root@xy network-scripts]# systemctl restart network [root@xy network-scripts]# ping 192.168.37.10 [root@xy ~]# dmesg |grep -i eno [root@xy ~]# modprobe -r e1000 [root@xy ~]# modprobe e1000
21. 配置Yum软件仓库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [root@xy ]# vim /etc/yum.repos.d/rhel7.repo [rhel-media] name=xy baseurl=file:///media/cdrom file:ftp:// file:http:// file:/// enabled=1 gpgcheck=1 gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release [root@xy yum.repos.d]# mkdir -p /media/cdrom [root@xy yum.repos.d]# mount /dev/cdrom /media/cdrom mount: /dev/sr0 is write-protected,mounting read-only [root@xy yum.repos.d]# vim /etc/fstab /dev/cdrom /media/cdrom iso9660 default 0 0 [root@xy yum.repos.d]# yum install httpd Dependencies Resolved ........省略部分信息........ Install 1 Package (+4 Dependent packages) ........省略部分信息........ Is this ok [y/d/N]: y ........省略部分信息........ Complete!
22. 编写简单的shell脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@xy test ]# vim example.sh pwd ls -al [root@xy test ]# bash example.sh /root/test total 8 drwxr-xr-x. 2 root root 23 Jul 7 18:29 . dr-xr-x---. 15 root root 4096 Jul 7 18:29 .. -rw-r--r--. 1 root root 46 Jul 7 18:29 example.sh [root@xy ShellExample]# ./example01.sh -bash: ./example01.sh: Permission denied [root@xy ShellExample]# chmod u+x example01.sh
23. 接收用户的参数
选项
说明
$0
对应当前Shell脚本名称
$#
对应总共有几个参数
$*
对应所有位置参数值
$?
对应显示上一次命令的执行返回值
$1 /$2 /$3
对应第N个位置的参数值
1 2 3 4 5 6 7 8 9 [root@xy test ]# vim example02.sh echo "当前脚本名称为$0 " echo "总共有$# 个参数,分别是$*." echo "第一个参数为$1 ,第五个参数为$5 ." [root@xy test ]# sh example02.sh one two three four five six 当前脚本名称为example02.sh 总共有6个参数,分别是one two three four five six. 第一个参数为one,第五个参数为five.
24. 判断用户的参数 24.1 文件
选项
说明
-d
测试文件是否为目录类型
-e
测试文件是否存在
-f
判断文件是否为一般文件
-r
测试当前用户是否有读权限
-w
当前用户是否有写权限
-x
当前用户是否有执行权限
$?
显示上一次命令的执行返回值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@xy ~]# [ -d /etc/fstab ] [root@xy ~]# echo $? 1 [root@xy ~]# [ -f /etc/fstab ] [root@xy ~]# echo $? 0 [root@xy ~]# [ -e /dev/cdrom ] && echo "Exist" Exist [root@xy ~]# su - xy [xy@xy ~]$ [ $USER = root ] || echo "user" user [xy@xy ~]$ exit logout [root@xy ~]# [ ! $USER = root ] || echo "administrator" administrator
24.2 数字
选项
说明
-eq
是否相等
-ne
是否不等于
-gt
是否大于
-lt
是否小于
-le
是否等于/小于
-ge
是否等于/大于
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [root@xy ~]# [ 10 -gt 10 ] [root@xy ~]# echo $? 1 [root@xy ~]# [ 10 -eq 10 ] [root@xy ~]# echo $? 0 [root@xy ~]# free -m total used free shared buffers cached Mem: 1987 1197 789 9 0 280 -/+ buffers/cache: 916 1071 Swap: 2063 0 2063 [root@xy ~]# free -m | grep Mem: Mem: 1987 1198 789 9 0 280 [root@xy ~]# free -m |grep Mem: |awk '{print $4}' 789 [root@xy ~]# FreeMem=`free -m |grep Mem: |awk '{print $4}' ` [root@xy ~]# echo $FreeMem 789 [root@xy ~]# [ $FreeMem -lt 1024 ] && echo "Insufficient Memory" Insufficient Memory
24.3 字符串
选项
说明
=
比较字符串内容是否相同
!=
比较字符串内容是否不同
-z
判断字符串内容是否为空
1 2 3 4 5 6 7 [root@xy ~]# [ -z $String ] [root@xy ~]# echo $? 0 [root@xy ~]# echo $LANG en_US.UTF-8 [root@xy ~]# [ $LANG != "en.US" ] && echo "Not en.US" Not en.US
25. 流程控制语句 25.1 if条件测试语句 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 [root@xy test ]# vim mkcdrom.sh DIR="/media/cdrom" if [ ! -e $DIR ]; then mkdir -p $DIR fi [root@xy test ]# bash mkcdrom.sh [root@xy test ]# ls -d /media/cdrom/ /media/cdrom/ [root@xy test ]# vim chkhost.sh [root@xy test ]# bash mkcdrom.sh --- [root@xy test ]# vim chkhost.sh ping -c 3 -i 0.2 -W 3 $1 &> /dev/null if [ $? -eq 0 ] then echo "Host $1 is On-line." else echo "Host $1 is Off-line." fi [root@xy test ]# bash chkhost.sh 192.168.37.10 Host 192.168.37.10 is On-line. [root@xy test ]# bash chkhost.sh 192.168.37.20 Host 192.168.37.20 is Off-line. --- [root@xy test ]# vim chkscore.sh read -p "Enter your score (0-100):" GRADE if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]; then echo "$GRADE is Excellent" elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]; then echo "$GRADE is Pass" else echo "$GRADE is Fail" fi [root@xy test ]# bash chkscore.sh Enter your score (0-100): 88 88 is Excellent
26.2 for条件循环语句(for 变量名 in 取值列表 do 命令序列 done) 说明:/dev/null 是一个被称作Linux黑洞的文件,把输出信息重定向到这个文件等同于删除数据(类似于没有回收功能的垃圾箱),可以让用户的屏幕窗口保持清洁.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 [root@xy test ]# vim users.txt andy barry carll duck [root@xy test ]# vim usersadd.sh read -p "Enter The Users Password:" PASSWD for UNAME in `cat users.txt` do id $UNAME &> /dev/null if [ $? -eq 0 ]; then echo "Already exists" else useradd $UNAME &> /dev/null echo "$PASSWD " | passwd --stdin $UNAME &> /dev/null if [ $? -eq 0 ]; then echo "$UNAME , Create success" else echo "$UNAME , Create failure" fi fi done [root@xy test ]# bash usersadd.sh Enter The Users Password: 19937100xy andy ,Create success barry ,Create success carl ,Create success duck ,Create success [root@xy test ]# tail -6 /etc/passwd andy:x:1001:1001::/home/andy:/bin/bash barry:x:1002:1002::/home/barry:/bin/bash carl:x:1003:1003::/home/carl:/bin/bash duck:x:1004:1004::/home/duck:/bin/bash --- [root@xy test ]# vim ipadds.txt 192.168.37.10 192.168.37.11 192.168.37.12 [root@xy test ]# vim CheckHosts.sh for IP in `cat ipadds.txt` do ping -c 3 -i 0.2 -W 3 $IP &> /dev/null if [ $? -eq 0 ] ; then echo "Host $IP is On-line." else echo "Host $IP is Off-line." fi done [root@xy test ]# bash CheckHosts.sh Host 192.168.37.10 is On-line. Host 192.168.37.11 is Off-line. Host 192.168.37.12 is Off-line.
26.3 while条件循环语句(while 条件测试操作 do 命令序列 done) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@xy test ]# vim Guess.sh PRICE=$(expr $RANDOM % 1000) TIMES=0 echo "商品的实际价格在0-999之间,猜猜看是多少?" while true do read -p "请输入您猜测的价格:" INT let TIMES++ if [ $INT -eq $PRICE ] ; then echo "恭喜您答对了,实际价格是 $PRICE " echo "您总共猜测了 $TIMES 次" exit 0 elif [ $INT -gt $PRICE ] ; then echo "太高了!" else echo "太低了!" fi done
26.4 case条件测试语句 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@xy ShellExample]# vim checkkeys.sh read -p "请输入一个字符,并按Enter键确认:" KEY case "$KEY " in [a-z] | [A-Z]) echo "您输入的是$KEY 字母。" ;; [0-9]) echo "您输入的是$KEY 数字。" ;; *) echo "您输入的是空格、功能健或其他控制字符。" ;; esac [root@xy ShellExample]# bash checkkeys.sh 请输入一个字符,并按Enter键确认:4 您输入的是4数字。
27. 计划任务服务程序 (一次性、长期性计划任务)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@xy ~]# at 23:30 at > systemctl restart httpd at > 此处按下Ctrl+d 组合键来结束编写任务计划 job 3 at Mon Apr 27 23:30:00 2017 [root@xy ~]# at -l 3 Mon Apr 27 23:30:00 2017 a root [root@xy ~]# at -d 3 --- [root@xy ~]# crontab -e [root@xy ~]# crontab -l 00 3 * * * cp /var/log/alternatives.log /home/shiyanlou/tmp/$(date +%F) 25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot 分 时 日 月 周 任务 [root@xy ~]# whereis rm rm : /usr/bin/rm /usr/share/man/man1/rm.1.gz /usr/share/man/man1p/rm.1p.gz [root@xy ~]# crontab -e crontab: installing new crontab [root@xy ~]# crontab -l 25 3 * * 1,3,5 /usr/bin/tar -czvf backup-tar.gz /home/wwwroot 0 1 * * 1-5 /usr/bin/rm -rf /tmp/*
28. 用户身份 相关文件: 1 2 3 4 5 6 7 8 9 /etc/passwd 用户名 :密码标识位 :UID :GID :组名 :家目录 :shell /etc/shadow 用户名 :MD5paswd :密码修改时间(19700101) :两次修改密码时间间隔 :密码有效期 :密码到期前的警告天数 :密码过期后的宽限天数 :密码失效时间 /etc/group /etc/gshadow /etc/skel root:x:0: 组名:密码:GID:附加组
28.1 useradd:
参数
作用
-u
指定该用户默认UID
-g
指定一个初始用户基本组,须存在
-G
指定附加组, 须存在
-d
指定用户家目录(默认/home/username)
-s
指定该用户默认Shell解释器
-m
创建家目录, 用于系统用户
-M
不创建家目录, 用于非系统用户
-r
设置系统账号 #不会自动生成家目录
-c,comment
描述信息
-e,expire_date
账户到期时间(YYYY-MM-DD)
命令
说明
id
-u -g -G -n
finger
username
chsh
修改shell
chfn
修改注释信息
1 2 3 4 [root@xy ~]# getent shadow xy [root@xy ~]# useradd -d /home/xy -u 8888 -s /sbin/nologin xy [root@xy ~]# id xy uid=8888(xy) gid=8888(xy) groups =8888(xy)
28.2 passwd
选项
说明
--stdin 允许标准输入改密码
`echo “NewPassWord”
-l
锁定用户
-u
解锁用户
-e
使用户密码立即过期,下次登录强制修改密码
-d
使该用户可以用空密码登陆系统
-n
设置修改密码的最短天数
-x
设置修改密码的最长天数
-k
为密码已经过期的用户更新有效期
-w
设置密码过期前告警的天数
-i
设置密码过期后多少天禁用该用户
-S
显示用户密码相关描述
chage
修改用户密码策略
-d
最近一次修改时间
-E
过期时间
-I
非活动时间
-m
最短使用期限
-M
最长使用期限
-w
警告时间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@xy ~]# passwd xy Changing password for user xy. New password: Retype new password: asswd: all authentication tokens updated successfully. [root@xy ~]# passwd -l xy Locking password for user xy. passwd: Success [root@xy ~]# passwd -u xy Unlocking password for user xy. passwd: Success [root@xy ~]# passwd -S xy xy PS 2018-07-06 0 99999 7 -1 (Password set , SHA512 crypt.) [root@xy ~]# passwd -n 7 -x 60 -w 10 -i 30 xy [root@xy ~]# groupadd ronny [root@xy ~]# gpasswd -a / -d user group
28.3 userdel
选项
说明
-f
强制删除用户
-r
同时删除用户及家目录
1 2 3 4 5 [root@xy ~]# id xy uid=8888(xy) gid=1000(xy) groups =1000(xy),0(root) [root@xy ~]# userdel -r xy [root@xy ~]# id xy id : xy: no user
28.4 usermod
选项
说明
-u
修改用户UID
-g
修改用户初始组
-aG
修改用户附加组,追加不覆盖
-l
修改用户名
-s
变更默认终端
-c,--comment
填写用户备注信息
-d -m
重新指定用户的家目录并自动迁移数据
-e,–expire_date
账户到期时间(YYYY-MM-DD)
-L,–Lock
锁定用户禁止登陆系统
-U,–Unlock
解锁用户,允许登陆系统
1 2 3 4 5 6 7 8 [root@xy ~]# usermod -aG root xy [root@xy ~]# id xy uid=1000(xy) gid=1000(xy) groups =1000(xy),0(root) [root@xy ~]# usermod -u 8888 xy [root@xy ~]# id xy uid=8888(xy) gid=1000(xy) groups =1000(xy),0(root) [root@xy ~]# gpasswd -a xy root [root@xy ~]# gpasswd -d xy root
28.5 chmod 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 who : u g o a opt: + - = per: r=4 w=2 x=1 umask : 0002 (掩码) 目录: 777=umask +default 文件: 666=umask +default 当文件权限通过666-umask 计算后,某位有奇数,则将其权限+1; SUID: 作用于二进制程序,执行此文件,临时具有所有者的权限, /bin/passwd chmod u+s SGID: 作用于二进制程序,执行此文件,临时具有所属组的权限, /bin/passwd 作用于目录上,创建的新文件,文件的所属组继承目录的所属组 Sticky: 作用与目录,只能删除此目录中自己文件, /tmp chmod o+t
29. netstat(-atlnp)
选项
说明
-t, --tcp
指明显示TCP端口
-u, --udp
指明显示UDP端口
-a, --all
–
-r, --route
显示核心路由信息
-l, --listen
仅显示监听套接字
-p, --PID
显示进程标识符
-n, --numeric
不解析服务的名称
30. ss(-antlp)
选项
说明
-t, --tcp
显示 TCP 协议的 sockets
-u, --udp
显示 UDP 协议的 sockets
-n, --numeric
不解析服务的名称,如 “22” 端口不会显示成 “ssh”
-l, --listening
只显示处于监听状态的端口
-p, --processes
显示监听端口的进程(Ubuntu 上需要 sudo)
-a, --all
对 TCP 协议来说,既包含监听的端口,也包含建立的连接
-r, --resolve
把 IP 解释为域名,把端口号解释为协议名称
31. lsof: list open files 1 2 lsof -i:8022 lsof -i tcp
32. 文件归属与权限
选项
说明
-
普通文件
d
目录文件
l
链接文件
b
块设备文件,按块为单位,随机访问的设备(硬盘)
c
字符设备文件,按字符为单位,线性设备(键盘)
p
管道文件
r
(可读)-4
w
(可写:编辑、新增、修改、删除文件实际内容) -2
x
(执行)-1
1 2 3 [root@xy ~]# ls -l initial-setup-ks.cfg drwxr-xr-x. 2 anyue anyue 6 Jul 27 14:59 Videos | 文件类型 | 7 | 5 | 5 | 属主 | 属组 | 大小 | 修改时间 | 文件名 |
SUID是一种对二进制程序进行设置的特殊权限, 可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效), 相应进程的属主是程序文件自身的属主, 而不是调用者
1 2 3 4 5 6 [root@xy ~]# ll /bin/cat -rwxr-xr-x 1 root root 23260 Jan 30 2014 /bin/cat [root@xy ~]# chmod u+s /bin/cat -rwxsr-xr-x 1 root root 23260 Jan 30 2014 /bin/cat [anyue@xy ~]# cat /etc/shadow
SGID:让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)在某个目录中创建的文件自动集成该目录的用户组(只可以对目录进行设置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@xy ~]# useradd hadoop; useradd hbase; [root@xy ~]# mkdir /tmp/project [root@xy ~]# groupadd deve; chown -R :deve /tmp/project/ [root@xy ~]# usermod -aG deve hadoop; usermod -aG deve habase [hadoop@xy project]# ls -ld drwxr-xr-x 2 root deve 4096 Jan 8 18:55 . [root@xy tmp]# chmod g+w /tmp/project [hadoop@xy project]# ls -l -rw-rw-r-- 1 hadoop hadoop 0 Jan 8 18:58 a.hadoop -rw-rw-r-- 1 habase habse 0 Jan 8 18:58 a.habase [root@xy ~]# chmod g+s /tmp/project [root@xy ~]# ls -ld /tmp/project drwxrwsr-x 2 root deve 4096 Jan 8 18:59 /tmp/project [hadoop@xy project]# touch b.hadoop -rw-rw-r-- 1 hadoop deve 0 Jan 8 19:00 b.hadoop chmod 权限 文件或目录名称 u g o + - = rwx chown 所有者:所属组 文件或目录名称 --reference=/path/file modFile,...
SBIT(Sticky Bit):特殊权限位可确保用户只能删除自己的文件,而不能删除其它用户的文件.即当对某个目录设置了SBIT粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了
1 2 3 4 [root@xy ~]$ chmod o+t /tmp/project [root@xy ~]# ls -ld /tmp/project drwxrwsr-t 2 root deve 4096 Jan 8 19:05 /tmp/project [root@xy ~]$ chmod 3755 /tmp/project
33. 文件的隐藏属性 33.1 chattr(+参数 -参数)
1 2 3 4 5 6 7 8 9 [root@xy test ]# chattr +a linuxprobe [root@xy test ]# rm linuxprobe rm : remove regular file ‘linuxprobe’? y rm : cannot remove ‘linuxprobe’: Operation not permitted [root@xy test ]# chattr -a linuxprobe [root@xy test ]# rm linuxprobe rm : remove regular file ‘linuxprobe’? y [root@xy test ]# lsattr linuxprobe [root@xy test ]# -----a--------- linuxprobe
33.2 文件访问控制表(ACL)
选项
说明
-m
设定权限
-x
取消权限
-b, –remove all
移除所有
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [xy@xy ~]$ cd /root -bash: cd : /root: Permission denied [xy@xy root]$ exit [root@xy ~]# setfacl -Rm u:xy:rwx /root [root@xy ~]# su -xy Last login: Sat Mar 21 21:45:04 CST 2018 on pts/1 [xy@xy ~]$ cd /root [xy@xy root]$ ls anaconda-ks.cfg Downloads Pictures Public [xy@xy ~]# cat anaconda-ks.cfg [xy@xy ~]# exit [root@xy ~]# ls ld /root dr-xrwx---+ 14 root root 4096 May 4 2018 /root [root@xy ~]# setfacl -x u:xy /root [root@xy ~]# getfacl /root getfacl: Removing leading '/' from absolute path names 1 2 3 user::r-x user:xy:rwx group::r-x mask::rwx other::--- [root@xy ~]# whereis ps ps: /usr/bin/ps /usr/share/man/man1/ps.1.gz /usr/share/man/man1p/ps.1p.gz
补充小知识: 1 2 3 4 5 locate 快捷的在`locatedb`中搜索文件名, 因为是在本地数据库中搜索`/var/lib/mlocate`, 所以速度很快, 但数据库更新为1天, 所以使用`updatedb`更新数据库; whoami whatis ls which ls
:link:Rhel-7-yum源配置-1 :link:Rhel-7-yum源配置-2 :link:Rhel-7-yum源配置-3 :link:RHEL-7-yum优先级设置-1 :link:RHEL-7-yum优先级设置-2
:link:umask 命令参考
文件的默认权限 为 666, 创建目录的默认权限 777, 而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值, 文件默认不能具有执行权限,如果算的结果中右执行权限,则将其权限加1;
权限 = 默认权限 - umask
文件系统命令补充: 1 2 3 4 5 6 7 dumpe2fs -h /dev/sd* fdisk -l fdisk -t fsck -y /dev/sdb1 partx -a /dev/DEVICE partx -d --nr number /dev/device partprobe /dev/DEVICE
相关解压压缩命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1、gzip gunzip: gzip /PATH/SOMEFILE -d 解压缩 -# 1-9(压缩率) gunzip /PATH/SOMEFILE.gz zcat /PATH/SOMEFILE.gz 2、bzip2 bunzip2 bzip2 /PATH/SOMEFILE -d 解压缩 -k 保留源文件 -# 1-9(压缩率) bunzip2 /PATH/SOMEFILE.bz2 bzcat /PATH/SOMEFILE.bz2 3、xz unxz xz /PATH/SOMEFILE -d 解压缩 -k 保留源文件 -# 1-9(压缩率) unxz /PATH/SOMEFILE.xz xzcat /PATH/SOMEFILE.xz 4、zip unzip: zip FILENAME.zip FILE1 FILE2 ... unzip tmp.zip
bash快捷键
快捷键
作用
Tab
命令补全
Ctrl+E
移动到行尾
Ctrl+C
移动到行首
Ctrl+L
清屏
Ctrl+U
删除/剪切
Ctrl+Y
粘贴
查询文件的第几行-第几行命令 1 2 cat file.txt |tail -n +10 |head -n20 sed -n '5,10p' file.txt
命令提示符颜色更改 :link:PS1参考博文
:link:Shell脚本的颜色样式及属性控制
1 2 3 4 5 echo $PS1 vim /etc/profile.d/color.sh PS1="\[\033[1;5;41;33m\][\u@\h\W\t\!]\\$\[\033[0m\]" \u 当前用户 \H 主机名 \h 主机名简称 \w 当前工作目录echo -e "\e[字体格式;背景色;前景色m字符串\e[0m"
总结:1位数表示字体显示格式
背景色(4)
字体色/前景色(3)
结束其他功能
40 黑色
30m 黑色
\033[0m 关闭所有属性
41 红色
31m 红色
\033[1m 设置高亮度
42 绿色
32m 绿色
\033[4m 下划线
43 黄色
33m 黄色
\033[5m 闪烁
44 蓝色
34m 蓝色
\033[7m 反显,显示为白底黑字,或黑底白字
45 紫色
35m 紫色
\033[8m 消隐,字符色与背景色相同
46 浅蓝色
36m 浅蓝色
\033[K 清除从光标到行尾的内容
47 灰色
37m 灰色
—
visudo (man 5 sudoers)
用户名/%组名 被管理主机地址=(可使用的身份) 授权命令(绝对路径)
1 2 root ALL=(ALL) ALL hadoop ALL=(root) NOPASSWD: /usr/sbin/useradd, PASSWD: /usr/sbin/usermod
alias:1 2 3 User_Alias USERADMIN = hadoop, %hadoop, %useradmin Cmnd_Alias USERADMINCMND = /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd [a-zA-Z]*, ! /usr/bin/passwd root USERADMIN ALL=(root) NOPASSWD: USERADMINCMND