文章目录
快捷键https://note.youdao.com/s/WP86L4T7
ctrl+a | 光标移动命令行首部 |
---|---|
ctrl+e | 光标移动命令行尾部 |
ctrl+alt+F1 | 切换图形化界面 |
ctrl+alt+F2~F6 | 切换字符界面 |
ctrl shift + | 放大界面 |
ctrl shift T | 新开一个终端 |
ctrl + | 缩小界面 |
ctrl+w | 删除前面单词 |
ctrl+d | 删除后面字母 |
ctrl+c | 注释代码 |
ctrl+u | 清空至行首 |
ctrl +k | 删除至行尾 |
命令语法格式
command [options]... [argument]..
命令 [选项] [参数]
线下环境
Machine | VM | 必须启动 | |
---|---|---|---|
VMware | foundation | 平台 | * |
KVM | classroom | dns,yum,repo,rc.local… | * |
KVM | bastion | Gateway system(router) | * |
KVM | utility | podman Server | |
KVM | workstation | Client - GUI | |
KVM | servera | Client - CLI | * |
KVM | server{b-e} | Client - CLI |
考试环境安装
[kiosk@foundation0 ~]$ su - root
Password:
Last login: Fri Oct 8 18:27:05 GMT 2021 from ::1 on pts/3
[root@foundation0 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 9.9M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/nvme0n1p4 491G 62G 430G 13% /
/dev/nvme0n1p2 1014M 659M 356M 65% /boot
/dev/loop0 7.4G 7.4G 0 100% /content/rhel8.4/x86_64/rhel8-additional
/dev/loop2 6.7G 6.7G 0 100% /content/rhel8.0/x86_64/dvd
/dev/loop1 9.5G 9.5G 0 100% /content/rhel8.4/x86_64/dvd
/dev/nvme0n1p1 200M 6.6M 194M 4% /boot/efi
tmpfs 796M 3.5M 792M 1% /run/user/1000
/dev/sr0 5.9M 5.9M 0 100% /run/media/kiosk/CDROM
[root@foundation0 ~]# yum install -y /run/media/kiosk/CDROM/ex200v82-4.8-211016.x86_64.rpm
环境命令+密码
切换用户
[kiosk@foundation0 ~]$ su -
Password:
Last login: Fri Oct 8 18:27:05 GMT 2021 from ::1 on pts/3
[root@foundation0 ~]# su -
锁屏解锁密码:redhat
重置课程
[kiosk@foundation0 ~]$ rht-clearcourse 0
[kiosk@foundation0 ~]$ rht-setcourse rh124
查看环境
[kiosk@foundation0 ~]$ cat /etc/rht
RHT_VENUE=ilt
RHT_ENROLLMENT=0
RHT_ROLE=foundation
RHT_COURSE=rh124
RHT_TITLE="Red Hat System Administration I"
RHT_VMS="bastion workstation utility servera serverb "
RHT_VM0="classroom "
RHT_GVMS=""
RHT_PRIVUSEOVS=""
RHT_NOSTARTVMS=""
RHT_NOFINISHVMS=""
RHT_VMTREE=rhel8.2/x86_64
启动相应的机器
配置ip
1.配置ip
[root@localhost ~]# nmcli connection modify "ens32" ipv4.method manual ipv4.addresses "192.168.1.10/24" ipv4.gateway "192.168.1.254" ipv4.dns "8.8.8.8" connection.autoconnect yes
2.重启网络(红帽8)
[root@servera ~]# nmcli connection down Wired\ connection\ 1 && nmcli connection up Wired\ connection\ 1
重启网络(Centos7)
[root@servera ~]#systemctl restart network
3.检查IP、掩码、网关、DNS
#查看主机名
[root@node1 ~]# hostname
node1.domain250.example.com
#查网关
[root@node1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.25.250.254 0.0.0.0 UG 100 0 0 eth0
172.25.250.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
#查ip
[root@node1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:00:fa:0a brd ff:ff:ff:ff:ff:ff
inet 172.25.250.100/24 brd 172.25.250.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::b3ba:2f60:8a37:f33e/64 scope link noprefixroute
valid_lft forever preferred_lft forever
#查看dns
[root@node1 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search domain250.example.com
nameserver 172.25.250.254
设置主机名
[root@servera ~]#hostnamectl set-hostname node1.domain250.example.com
vim编辑器
命令模式(command):用vim打开一个文件,此时就是命令模式,标识符:1.光标闪动;2.最后一行有文件详细信息
输入模式(insert):按aio任意一个字符进入输入模式,标识符:insert
a:光标之后输入
A:光标所在行行尾输入
I:光标所在行行首输入
i:光标之前输入
o:光标下一行输入
O:光标上一行输入
末行模式(ex):最后一行做操作,标识符:“:”(冒号)
1.命令模式 aio ----> 输入模式
<-----esc
2.命令模式 : ----> 末行模式
<-----esc
1.上下左右方向键
2.hjkl左下上右
命令模式
行首:home/^(shift 6)
行尾:end/$(shift 4)
单词:w
命令模式
gg:跳转到首行
G:跳转到尾行
5gg/5G:跳转到第5行
末行模式
:3:跳转至第3行
:%:跳转至最后一行
pgup
pgdown
命令模式
yy:复制光标所在行
yw:复制单词
3yy:复制光标所在行到下面的2行(包含光标所在行)
末行模式
:8,26y:复制8到26行
:%y:复制全文
p(小):粘贴到光标下一行
P(大):粘贴到光标上一行
命令模式
dd:删除光标所在行
dw:删除单词
3dd:删除光标所在行到下面的2行(包含光标所在行)
x/del:删除光标所在字符
D:删除光标所在字符到行尾的内容
dgg:删除光标所在行到首行内容
dG:删除光标所在行到尾行的内容
ct" 删除从光标到"位置之间的字符
末行模式
:8,26d:删除8到26行
:%d:删除全文
命令模式
u:一步步撤回
反撤回:ctrl r
命令模式
ZZ(大写)
末行模式
!表示强制(:wq!)
:w保存
:q退出
:wq/x保存退出
调用:
在vim中:!hostname 调用主机名
末行模式
:set nu 设置行号
:set nonu 取消行号
:noh 取消高亮
命令模式
/root
n:往下
N:往上
?root
n:往上
N:往下
末行模式
:s/root/qq/ 将光标所在行的第一个root替换为qq
:s/root/qq/g 将光标所在行的所有root都替换为qq
:1,5s/bin/wx/g 将1到5行的所有root都替换为qq
:%s/bin/wx/g 将全文的所有root都替换为qq
末行模式
:1,5s/^/#
:1,5s#^#//
可视化视图
1.ctrl v
2.选中你要注释的行
3.按I(大写)
4.按#
5.esc(两下)
末行模式
:1,5s/#//
可视化视图
1.ctrl v
2.选中你要取消注释的行
3.按d
-
读入、写入
vim 2.txt :r /etc/hosts 在光标下一行读入 写入 vim 2.txt :w /tmp/20.txt
练习
1.通过cp /etc/passwd /tmp/生成vim练习模板文件,用vi编辑器打开/tmp/passwd文件,并以此文件作为练习素材。 2.在/tmp/passwd文件中显示行号。 3.在第5行后读入/etc/hosts和/etc/selinux/config的内容。 4.切换到最后一行,读入/etc/passwd的内容。 5.删除10到20行的内容。 6.将6、7行剪切到100行后。 7.在文件中查找”bin”字符串。 8.将文件中所有的”bin”字符串替换为”easthome”。 9.保存该文件后退出vi编辑器。 10.滤除该文件所有的空行之后,保存到/media/passwd.txt。 11.删除/root/passwd.txt。
man
[kiosk@foundation0 ~]$ man chown
/Ex
重定向
# > 覆盖
[root@node1 ~]# echo "123" > 1.txt
# >> 追加
[root@node1 ~]# echo "123" >>1.txt
# 2> 错误重定向:将错误内容放到后面的文件中
[root@node1 ~]# cat 1.txt 2.txt
123
123
cat: 2.txt: No such file or directory
[root@node1 ~]# cat 1.txt 2.txt 2>10.txt
123
123
# &> 混合重定向:将正常和错误的全都放到后面那个文件
[root@node1 ~]# cat 1.txt 2.txt &> 20.txt
[root@node1 ~]# cat 20.txt
123
123
cat: 2.txt: No such file or directory
find
find
--name 查找名字为 file 的文件
--user 查找归 jacques 所有的所有文件
[root@node1 ~]# mkdir /root/findfiles
[root@node1 ~]# find / -user jacques -exec cp -a {} /root/findfiles \;
find: ‘/proc/4828/task/4828/fd/7’: No such file or directory
find: ‘/proc/4828/task/4828/fdinfo/7’: No such file or directory
find: ‘/proc/4828/fd/8’: No such file or directory
find: ‘/proc/4828/fdinfo/8’: No such file or directory
grep
grep root /etc/passwd
# -i 忽略大小写
# -v 取反
# ^root 以root开头的行
# ^#
# bash$ 以bash结尾
# ^$ 空行
# -i 忽略大小写
[root@node1 ~]# grep -i root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
# -v 取反
[root@node1 ~]# grep -v root /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
# 将/etc/resolv.conf中含na的行不含空格写到/root/lines.txt中
[root@node1 ~]# grep na /etc/resolv.conf | grep -v ^$ > /root/lines.txt
[root@node1 ~]# cat /root/lines.txt
# Generated by NetworkManager
nameserver 172.25.250.254
sed
以行号作为模式
作用 | 格式 | 描述 |
---|---|---|
单独的行号 | 1、$ | 第一行、最后一行 |
起始行、结束行 | 1,5 | 处理1到5行 |
起始行~步长 | 2~2 | 从第二行开始,每隔两行处理一次 |
起始位置+N | 3+5 | 处理3到8行 |
以正则为模式
格式 | 示范 |
---|---|
/正则表达式/ | /^root/ |
sed子命令
sed的子命令告诉sed对指定的行进行何种操作,包括增加、删除、修改、查看(打印)。
! | 非,放在命令前面,表示取反 |
---|---|
d | delete,表示删除 |
p | print,表示答应(显示) |
#-n 默认输出,一般和p一起用
#-i 直接修改源文件
#-r 允许使用扩展正则
#-e 允许进行多项编辑
#p 打印
[root@tang ~]# sed /^root/p /tmp/passwd
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
#d 删除
[root@tang ~]# sed /^root/d /tmp/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
#a 在被匹配行下一行插入
[root@tang ~]# sed /^bin/a/tanghuiyang /tmp/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
/tanghuiyang
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
#i 在被匹配行上一行插入
[root@tang ~]# sed /^bin/i/tanghuiyang /tmp/passwd
root:x:0:0:root:/root:/bin/bash
/tanghuiyang
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#c 覆盖被匹配的行
[root@tang ~]# sed /^root/c/tanghuiyang /tmp/passwd
/tanghuiyang
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#匹配第一行
[root@tang ~]# sed 1p /tmp/passwd
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
#查找并替换
sed '模式匹配s/被替换的内容/替换以后的内容/' 文件
[root@yan ~]# sed 's#root#boot#' /etc/passwd
2 boot:x:0:0:root:/root:/bin/bash
3 bin:x:1:1:bin:/bin:/sbin/nologin
4 …………
56 s@@@ s### s!!! s///
在上述命令中,我们利用 "s###" 的替换功能,将 "root" 替换成了 "ROOT"
但是从结果上可以看出来,匹配到的所在行里,只有第一个 "root" 做出了改变,而后两个则不受影响……
#g:全局替换
[root@yan ~]# sed 's#root#ROOT#'g /etc/passwd
ROOT:x:0:0:ROOT:/ROOT:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
……
……
#i: 忽略大小写
[root@yan ~]# sed 's#root#!!!#'gi /etc/passwd
ROOT:x:0:0:!!!:/!!!:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#n:第n个被匹配到的...n表示数字
[root@yan ~]# sed 's#root#@@@@@#1' /tmp/passwd (只匹配第一个,并作出修改,然后将指定数放在修饰符的位置使用)
ROOT:x:0:0:@@@@@:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@yan ~]# sed '1,2s#root#@@@@@#' /tmp/passwd (将1,2作为指定数,放在前面使用,但未添加全局)
ROOT:x:0:0:@@@@@:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@yan ~]# sed '1,2s#root#@@@@@#'g /tmp/passwd (添加了全局后)
ROOT:x:0:0:@@@@@:/@@@@@:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#y:转换的命令,对应转换
[root@yan tmp]# cat a.txt
abc
[root@yan tmp]# sed 'y/abc/ABC/' a.txt
ABC
[root@yan tmp]# sed 'y/abc/tanbowen/' a.txt
sed:-e 表达式 #1,字s符 15:“y”命令的字符串长度不同
[root@yan tmp]# sed 'y/abc/tan/' a.txt
tan
s
Linux系统基础命令
1、halt(立即关机:简单的关机命令)
2、shutdown -h now (立刻关机:root用户使用-安全的关机命令)
3、shutdown -h 10 10分钟后自动关机 如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启
1、 reboot
2、 shutdown -r now 立刻重启(root用户使用)
3、 shutdown -r 10 过10分钟自动重启(root用户使用)
4、 shutdown -r 20:35 在时间为20:35时候重启(root用户使用) 如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启
1、 hostname 主机名 (临时性修改主机名)
2、 hostnamectl set-hostname 主机名 (永久性修改主机名)
ls
cd … 返回上一级目录
cd - 返回上一次目录
1、 who
2、 whoami
pwd
打印当前所在位置的绝对路径名称
[root@localhost file01]# pwd
/tmp/dir/file01
1、uname -a
2、cat /proc/version
1、ip addr show
2、ip a
history
type
1、clear
2、ctrl+L
文件管理
ls命令
ls -a 列出包括隐藏文件在内的所有文件
ls -l 列出文件详细信息
ls -h列出文件及其大小
ls -d列出文件本身
ls -i 显示inot号
[root@localhost tmp]# ls /etc
abrt gshadow printcap
adjtime gshadow- profile
aliases gss profile.d
aliases.db gssproxy protocols
alsa host.conf pulse
alternatives hostname purple
anacrontab hosts python
asound.conf hosts.allow qemu-ga
at.deny hosts.deny qemu-kvm
[root@localhost tmp]# ls -d /etc
/etc
[root@localhost tmp]# ls -R /opt
/opt:
rh xx
/opt/rh:
/opt/xx:
oo
/opt/xx/oo:
mkdir命令
举例:
[root@localhost tmp]# mkdir dir01
[root@localhost tmp]# mkdir dir02 dir03
[root@localhost tmp]# ls
dir01 dir02 dir03
[root@localhost tmp]# mkdir dir{A..E}
[root@localhost tmp]# # mkdir dir{05,06,07}
[root@localhost tmp]# mkdir dir{,.bak}
[root@localhost tmp]# ls
dir dir01 dir02 dir03 dirA dirB dir.bak dirC dirD dirE
格式
mkdir -p /opt/xx/oo
[root@localhost etc]# ls /opt
rh
[root@localhost etc]# mkdir /opt/xx/oo
mkdir: cannot create directory ‘/opt/xx/oo’: No such file or directory
[root@localhost etc]# mkdir -p /opt/xx/oo
[root@localhost etc]# ls /opt
rh xx
[root@localhost etc]# ls /opt/xx
oo
[root@localhost etc]#
touch命令
[root@localhost tmp]# touch test{01..04}
[root@localhost tmp]# ls
dir dir02 dirA dirC dirE test02 test04
dir01 dir03 dirB dirD test01 test03
cp命令
● 语法:cp [选项]… 源文件… 目录
● 常用选项:
-r/-R 递归复制(可以复制<目录>)
-i 针对<已存在的目标文件>,先询问<是否覆盖旧文件?>
-f 强制复制(在cp操作中,针对<已存在的目标文件>,强制覆盖,不给任何指示)
注意:-f选项 不可以 忽略 -i选项
-a 复制<所有源属性>-p 复制切文件原属性不变
● 别名命令:
cp=‘cp -i’
如需调用<原始的cp命令>,方法为:\cp (临时取消别名)
[root@localhost tmp]# cp test01 dir/test01
[root@localhost tmp]# ls dir
file01 file1 file5 test01
mv命令
● 语法:mv [选项]… 源文件… 目录
● 常用选项:
-i 针对<已存在的目标文件>,先询问<是否覆盖旧文件?>
-f 强制移动(在mv操作中,针对<已存在的目标文件>,强制覆盖,不给任何指示)
注意1:如果<目标目录>已存在,则无法移动。
注意2:-f选项 可以 忽略 -i选项
● 别名命令:
mv=‘mv -i’
如需调用<原始的mv命令>,方法为:\mv (临时取消别名)
★ 举例:
[root@localhost tmp]# mv dir{A..E} dir{02,03} dir01
[root@localhost tmp]# ls
dir dir01 test01 test02 test03 test04
[root@localhost tmp]# ls dir01
dir dir02 dir03 dirA dirB dirC dirD dirE
[root@localhost tmp]# ls
dir dir01 test01 test02 test03 test04
[root@localhost tmp]# ls dir
file01 file1 file5 test01
[root@localhost tmp]# mv test{01..04} dir01
[root@localhost tmp]# ls
dir dir01
-
也可以<重命名>
-
★ 举例: ### 原地改名:文件/目录 ### cd /tmp rm -rf * touch myfile01 mv myfile01 myfile02 mkdir dir01 mv dir01 dir02 ### 移动改名:文件/目录 ### cd /tmp rm -rf * touch myfile01 mv myfile01 /root/myfile02 mkdir dir01 mv dir01 /root/dir02
rmdir命令
● 语法:rmdir [选项]… 目录…
★ 举例:
cd /tmp
mkdir dir01 dir02 dir03
mkdir dir{04,05,06}
mkdir dir{A..E}
rmdir dir01 dir02 dir03
rmdir dir{04,05,06}
rmdir dir{A..E}
rm命令
● 语法:rm [选项]… 文件…
● 常用选项:
-i 每次删除之前,会先询问<是否删除?>
-f 强制删除(可以删除<目录>)
注意1:-f选项 可以 忽略 -i选项
-r/-R 递归删除
● 别名命令:
rm=‘rm -i’
如需调用<原始的rm命令>,方法为:\rm (临时取消别名)
★ 举例:
cd /tmp
touch myfile03 myfile04 myfile05
rm /tmp/myfile03 <---- 删除<指定文件>,由于<别名的定义>,每次删除之前,会先询问<是否删除?>
rm -f /tmp/myfile04 myfile05 <---- 强制删除<指定文件>
############################################
mkdir dir01 dir02 dir03
rm -rf /tmp/{dir01,dir02,dir03} <---- 强制删除<指定目录>
############################################
rm -rf * <---- 强制删除<当前目录>中的<所有文件和目录>
rename命令
语法: rename [options] expression replacement file…
解释: expression 代表<需要更改的匹配内容>,不能使用<通配符>和<正则表达式>
replacement 代表<更改的结果内容>
file… 代表<需要更名的文件>
● 常用选项:
-v 显示<详细的过程>
★ 举例:
cd /tmp
rm -rf *
touch myfile0001 myfile0002 myfile0003
mkdir dir01 dir02 dir03
rename "dir" "DIR" dir* <---- 针对<dir开头的文件名或目录名>,统一将<dir字符串>更改为<DIR字符串>
rename "000" "0" myfile* <---- 针对<myfile开头的文件名或目录名>,统一将<000字符串>更改为<0字符>
查看文件
(ls/cat/tac/head/tail/more/less)
★ ls命令:列出<指定的目录>中包含的内容(已经讲过,略)
★ cat命令:显示<文件>内容
选项:
cat -n 文件名 查看文件并显示行号
★ tac命令反序显示<文件>内容
★ head命令:显示<文件>开头内容
★ tail命令:显示<文件>结尾内容
tail -n 5……文件名 查看文件后5排
cat -f……文件名 动态查看文件
★ more命令:分屏显示,功能简单,只能向下翻屏
★ less命令:分屏显示,可上下滚屏,可搜索<关键字>
PgUp 向上翻页
PaDn 向下翻页
/+字符串 高亮显示 n从上往下翻
N从下往上翻
文件类型
-
Linux系统辨别目录与文件的方法
蓝色表示目录(windows系统里面的文件夹)
白色表示文件
浅蓝色表示链接文件(类似于windows系同里面的快捷方式)
绿色表示可执行文件(如脚本、命令程序文件)
红色表示压缩文件
黄色表示设备文件(硬件、键盘、鼠标、网卡、CPU硬件设备都是文件的形式存在)
红色闪动文件 ——> 表示文件不可用
文件属性 | 文件类型 |
---|---|
- | 常规文件(包含:文本文件、二进制文件) |
d | 目录文件 |
b | block device 即:<块设备文件>,如:<硬盘>支持以<block为单位>进行随机访问 |
c | character device 即:<字符设备文件>,如:<键盘>支持以<character为单位>进行线性访问 |
l | symbolic link 即:<符号链接文件>,又称<软链接文件> |
p | pipe 即:<命名管道文件> |
s | socket 即:<套接字文件>,用于实现<两个进程>之间的通信 |
[root@localhost tmp]# ls -l
total 0
drwxr-xr-x. 2 root root 6 4月 14 04:30 dir
drwxr-xr-x. 2 root root 6 4月 14 04:27 dir01
drwxr-xr-x. 2 root root 6 4月 14 04:28 dir02
drwxr-xr-x. 2 root root 6 4月 14 04:28 dir03
drwxr-xr-x. 2 root root 6 4月 14 04:28 dirA
drwxr-xr-x. 2 root root 6 4月 14 04:28 dirB
drwxr-xr-x. 2 root root 6 4月 14 04:30 dir.bak
drwxr-xr-x. 2 root root 6 4月 14 04:28 dirC
drwxr-xr-x. 2 root root 6 4月 14 04:28 dirD
drwxr-xr-x. 2 root root 6 4月 14 04:28 dirE
d rwx r-x r-x. 2 root root 6 4月 14 04:30 dir
u g o 所属者 所属组
d :文件类型(目录文件)
u : 所属者
g : 所属组
o : 其他人
权限
r (4)读
w (2)写
x (1)执行
软连接与硬连接
-
软连接
-
特点:软连接可以跨分区,可以对目录进行链接,源文件删除后,连接文件不可用
-
命令格式:ln -s 源文件路径 目标路径 (相当于windows创建快捷方式)
-
注意:创建连接时一定要写目录或文件的绝对路径 哪怕是在当前路径下 也要写绝对路径
[root@localhost ~]# ls anaconda-ks.cfg Documents initial-setup-ks.cfg Music Public Videos Desktop Downloads linuxqq_2.0.0-b1-1024_x86_64.rpm Pictures Templates [root@localhost ~]# ln -s /Music /tmp [root@localhost ~]# ls /tmp dir dir01 Music vmware-root
-
硬连接
-
特点:硬连接不可以跨分区,不可以对目录进行链接,删除文件后,链接文件任然可用
-
命令格式:ln 源文件目录 目标路径
[root@localhost tmp]# ln /tmp/dir01/test01 /tmp //创建硬连接
[root@localhost tmp]# ls
dir dir01 Music test01 vmware-root
[root@localhost tmp]# cat test01 //链接无内容
[root@localhost tmp]# echo qwe > /tmp/dir01/test01 //在源文件中写入内容
[root@localhost tmp]# cat /tmp/test01 //链接文件内容随着更新
qwe
#源文件和链接文件inot号保持一致
[root@localhost tmp]# ls -i test01
17649549 test01
[root@localhost tmp]# ls -i dir01/test01
17649549 dir01/test01
- 提示:硬连接的文件可以实现同步更新,并保持属性不变
用户和组
创建用户:useradd
格式:
useradd [选项] 用户名
-u:指定uid
[root@node1 ~]# useradd -u 1010 user3
[root@node1 ~]# grep user3 /etc/passwd
user3:x:1010:1010::/home/user3:/bin/bash
-c:指定描述信息
[root@node1 ~]# useradd -c user4 user4
[root@node1 ~]# tail -n 2 /etc/passwd
user3:x:1010:1010::/home/user3:/bin/bash
user4:x:1011:1011:user4:/home/user4:/bin/bash
-d:指定家目录
[root@node1 ~]# useradd -d /test1 user5
[root@node1 ~]# tail -n 2 /etc/passwd
-s:指定shell
[root@node1 ~]# useradd -s /sbin/nologin user6
[root@node1 ~]# tail -n 2 /etc/passwd
user5:x:1012:1012::/test1:/bin/bash
user6:x:1013:1013::/home/user6:/sbin/nologin
[root@node1 ~]# su - user6
This account is currently not available.
-g:将用户加入到主组
-G:将用户加入到从属组
[root@node1 ~]# useradd -g group1 -G group2 user7
[root@node1 ~]# id user7
uid=1014(user7) gid=1014(group1) groups=1014(group1),1015(group2)
[root@node1 ~]# echo "redhat" | passwd --stdin user7
Changing password for user user7.
passwd: all authentication tokens updated successfully.
练习
1.创建用户 fred,用户ID为1111,密码为fred1111
2.
创建组sysadm
创建用户harry,natasha,tom
要求harry,natasha的附加组为sysadm
要求tom用户的登陆shell为非交互式shell
三个用户的密码为redhat
修改用户:usermod
[root@node1 ~]# tail -n 2 /etc/passwd
harry:x:3535:3536::/home/harry:/bin/bash
sarah:x:3536:3537::/home/sarah:/sbin/nologin
[root@node1 ~]# usermod -u 5050 -c testsarsh -d /test2 -s /bin/bash sarah
[root@node1 ~]# tail -n 2 /etc/passwd
harry:x:3535:3536::/home/harry:/bin/bash
sarah:x:5050:3537:testsarsh:/test2:/bin/bash
删除用户:userdel
-r
[root@node1 ~]# userdel user1
[root@node1 ~]# id user1
id: ‘user1’: no such user
[root@node1 ~]# cd /var/spool/mail/
[root@node1 mail]# ls
devops manalo remoteuser1 sarah user1 user3 user5 user7
harry natasha rpc student user2 user4 user6 wallah
[root@node1 mail]# userdel -r user2
[root@node1 mail]# id user2
id: ‘user2’: no such user
[root@node1 mail]# ls
devops manalo remoteuser1 sarah user1 user4 user6 wallah
harry natasha rpc student user3 user5 user7
[root@node1 mail]#
创建组:groupadd
命令格式:
groupadd [选项] 组名
-g
[root@node1 ~]# groupadd -g 5055 group4
[root@node1 ~]# tail -2 /etc/group
group3:x:3538:
group4:x:5055:
修改组:groupmod
命令格式:
groupadd [选项] 组名
-g :gid
[root@node1 ~]# groupmod -g 6000 group4
[root@node1 ~]# tail -2 /etc/group
group3:x:3538:
group4:x:6000:
-n : 修改组名
[root@node1 ~]# groupmod -n testgroup4 group4
[root@node1 ~]# tail -2 /etc/group
group3:x:3538:
testgroup4:x:6000:
删除组:groupdel
[root@node1 ~]# groupdel group3
gpasswd:将用户加组
-a 将用户加入到组
-d 将组里的用户删除
[root@node1 ~]# useradd user10
[root@node1 ~]# groupadd group10
[root@node1 ~]# gpasswd -a user10 group10
Adding user user10 to group group10
[root@node1 ~]# id user10
uid=5051(user10) gid=5051(user10) groups=5051(user10),6001(group10)
[root@node1 ~]# gpasswd -d user10 group10
Removing user user10 from group group10
[root@node1 ~]# id user10
uid=5051(user10) gid=5051(user10) groups=5051(user10)
身份切换
以某个用户的身份执行某个命令,使用命令su - username -c cmd
[root@node1 ~]# su - harry -c id
利用harry的身份查看id信息
sudo提权
[root@servera ~]# vim /etc/sudoers (有高亮、只读)
[root@servera ~]# visudo (没有高亮,不是只读)
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
root:用户名
ALL:主机名
ALL:角色
ALL:命令
案例1:让harry用户有root权限
[root@node1 ~]# visudo
100 root ALL=(ALL) ALL
101 harry ALL=(ALL) ALL
测试
[root@node1 ~]# su - harry
Last login: Sun Apr 24 11:26:21 EDT 2022 on pts/0
[harry@node1 ~]$ sudo useradd user100
[sudo] password for harry:
[harry@node1 ~]$ id user100
uid=5052(user100) gid=5052(user100) groups=5052(user100)
案例2:让sysadm组sudo时不需要密码
[root@node1 ~]# visudo
111 # %wheel ALL=(ALL) NOPASSWD: ALL
112 %sysmgrs ALL=(ALL) NOPASSWD: ALL
测试:
[root@node1 ~]# su - harry
Last login: Sun Apr 24 11:26:21 EDT 2022 on pts/0
[harry@node1 ~]$ sudo cat /var/log/messages
=5051(user10),6001(group10)
[root@node1 ~]# gpasswd -d user10 group10
Removing user user10 from group group10
[root@node1 ~]# id user10
uid=5051(user10) gid=5051(user10) groups=5051(user10)
## 身份切换
以某个用户的身份执行某个命令,使用命令su - username -c cmd
```bash
[root@node1 ~]# su - harry -c id
利用harry的身份查看id信息
sudo提权
[root@servera ~]# vim /etc/sudoers (有高亮、只读)
[root@servera ~]# visudo (没有高亮,不是只读)
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
root:用户名
ALL:主机名
ALL:角色
ALL:命令
案例1:让harry用户有root权限
[root@node1 ~]# visudo
100 root ALL=(ALL) ALL
101 harry ALL=(ALL) ALL
测试
[root@node1 ~]# su - harry
Last login: Sun Apr 24 11:26:21 EDT 2022 on pts/0
[harry@node1 ~]$ sudo useradd user100
[sudo] password for harry:
[harry@node1 ~]$ id user100
uid=5052(user100) gid=5052(user100) groups=5052(user100)
案例2:让sysadm组sudo时不需要密码
[root@node1 ~]# visudo
111 # %wheel ALL=(ALL) NOPASSWD: ALL
112 %sysmgrs ALL=(ALL) NOPASSWD: ALL
测试:
[root@node1 ~]# su - harry
Last login: Sun Apr 24 11:26:21 EDT 2022 on pts/0
[harry@node1 ~]$ sudo cat /var/log/messages