练习三:图形桌面的使用
1)用户界面的切换(图形<-->字符终端、字符终端<-->字符终端)
图形界面 --> 字符终端:Ctrl+Alt+Fn
字符终端 --> 字符终端:Alt+Fn
字符终端 --> 图形界面:Alt+F1
2)运行gnome-terminal,修改一下界面字体、字号
练习五:简单命令练习
1)查看内核版本(uname)
2)查看红帽系统版本(cat /etc/redhat-release)
3)查看及修改主机名(hostname)
4)查看及修改第一块网卡的IP地址(ifconfig)
5)清屏操作(clear、Ctrl+l快捷键)
6)查看CPU信息(cat /proc/cpuinfo)
processor:CPU核心的编号
physicalid:物理CPU的编号
modelname:品牌、型号、频率
cpuMHz:工作频率
cachesize:缓存大小
7)查看内存信息(cat /proc/meminfo)
MemTotal:物理内存的总大小
MemFree:空闲的物理内存大小
SwapTotal:交换空间(虚拟内存)的总大小
SwapFree:空闲的交换空间(虚拟内存)大小
8)关机操作
shutdown -h now
poweroff
init 0
9)重启操作
shutdown -r now
reboot
init 6
10)延迟关机或重启操作
shutdown -h +15 'Host will be rebooted !!'
shutdown -r +15 'Host will be rebooted !!'
练习六:命令练习
1)查看当前系统日期/时间(date)
2)查看日历(cal)
3)计算器(bc)
4)查看目录列表(ls) list
5)切换目录(cd) Change Directory
6)查看当前在哪个工作目录(pwd) Print Working Directory
练习一:命令格式练习
1)查看根目录下有哪些子目录
[root@localhost/]# ls /
2)查看/boot文件夹下的内容,以长格式显示、带-k等易读单位
[root@localhost/]# ls -lh /boot/
3)查看当前目录下的所有内容
[root@localhost/]# ls
练习二:命令行快捷编辑
1)利用自动补齐查看文件/etc/sysconfig/network-scripts/ifcfg-eth0
ls -l /etc/.. .. 、cat /etc/.. ..
2)列出以if、fd开头的命令程序
[root@localhost/]# if
if ifcfg ifconfig ifdown ifenslave ifrename ifup
[root@localhost/]# fd
fdformat fdisk
[root@localhost/]#
4)利用 \ 强制换行,拆分“命令字 选项 参数”
[root@localhost/]# shutdown \
> -k \
> now
[root@localhost/]#
Broadcastmessage from [email protected]
(/dev/pts/0) at 17:49 ...
The system isgoing down for maintenance NOW!
练习三:内部命令、外部命令的基本帮助
1)查看内部命令cd、pwd、type的帮助信息
[root@localhost/]# help cd
[root@localhost/]# help pwd
[root@localhost/]# help type
2)查看外部命令uname、ls的帮助信息
[root@localhost/]# uname --help
[root@localhost/]# ls --help
3)检查命令echo、cd、cat、hostname的类型
[root@localhost~]# type echo #有builtin为内部命令
echo is a shellbuiltin
[root@localhost~]# type cd #有builtin为内部命令
cd is a shellbuiltin
[root@localhost~]# type cat #出现具体路径为外部命令
cat is /bin/cat
[root@localhost~]# type hostname #出现具体路径为外部命令
hostname is/bin/hostname
4)查看echo、exit命令的用法,学会其基本操作
[root@localhost~]# help echo
[root@localhost~]# type exit
exit is a shellbuiltin
[root@localhost~]# help exit
exit: exit [n]
Exit the shell.
Exits the shell with a status of N. If N is omitted, the exit status
is that of the last command executed.
[root@localhost~]#
练习四:man帮助的用法
1)使用man查阅ls命令的帮助,了解-A、-a选项的作用
[root@localhost~]# man ls #通过“/-A”与“/-a”查找
2)学会使用man查看指定系统文件(passwd)的帮助
[root@localhost~]# man 5 passwd
3)使用man查阅并学会passwd、cat命令的基本用法
[root@localhost~]# man passwd
[root@localhost~]# man cat
练习五:cd、pwd、ls基本操作
1)进入到/etc/pki/CA/private/ 目录,确认当前所在文件夹
[root@localhost~]# cd /etc/pki/CA/private/
[root@localhostprivate]# pwd
/etc/pki/CA/private
[root@localhostprivate]#
2)以相对路径方式查看 /etc/pki/ 文件夹下的所有内容
[root@localhost/]# pwd
/
[root@localhost/]# cd /etc/
[root@localhostetc]# ls pki/
CA ca-trust entitlement java nssdb product rpm-gpg rsyslog tls
[root@localhostetc]#
3)切换到上上一层文件夹,确认当前所在文件夹
[root@localhostetc]# pwd
/etc
[root@localhostetc]# cd ../..
[root@localhost/]# pwd
/
[root@localhost /]#
4)分别以相对路径、绝对路径的方式查看/root/install.log文件的大小
[root@localhost/]# ls -lh /root/install.log #绝对路径
-rw-r--r--. 1root root 39K 1月 14 17:22 /root/install.log
[root@localhost/]# cd /root/
[root@localhost~]# ls -lh install.log #相对路径
-rw-r--r--. 1root root 39K 1月 14 17:22 install.log
[root@localhost~]#
5)进入root的家目录、再进入到用户zhangsan的家目录
[root@localhost/]# cd ~root
[root@localhost~]# pwd
/root
[root@localhost~]#
[root@localhost~]# useradd zhangsan #创建zhangsan用户
[root@localhost~]# ls /home/
zhangsan
[root@localhost~]# cd ~zhangsan
[root@localhostzhangsan]# pwd
/home/zhangsan
[root@localhostzhangsan]#
6)在用户root、zhangsan的家目录之间来回切换(本题主要考察cd -)
练习六:命令别名(alias、unalias)
1)创建一个别名 cq,执行cq的时候延迟15分钟重启
[root@localhost~]# alias
alias cp='cp -i'
alias l.='ls -d.* --color=auto'
alias ll='ls -l--color=auto'
alias ls='ls--color=auto'
alias mv='mv -i'
alias rm='rm -i'
aliaswhich='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost~]# cq
-bash: cq:command not found
[root@localhost~]# alias cq="shutdown -r +15"
[root@localhost~]# alias
alias cp='cp -i'
aliascq='shutdown -r +15'
alias l.='ls -d.* --color=auto'
alias ll='ls -l--color=auto'
alias ls='ls--color=auto'
alias mv='mv -i'
alias rm='rm -i'
aliaswhich='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost~]# cq
Broadcastmessage from [email protected]
(/dev/pts/1) at 21:38 ...
The system isgoing down for reboot in 15 minutes!
^Cshutdown:Shutdown cancelled #按Ctrl+C结束
[root@localhost~]#
2)创建一个别名 lsb,执行lsb的时候能够输出当前Linux标准分发版的描述信息
[root@localhost~]# alias lsb="cat /etc/redhat-release"
[root@localhost~]# lsb
Red HatEnterprise Linux Server release 6.5 (Santiago)
[root@localhost~]#
练习七:Shell通配符操作(*、?、[a-z]、{word1,word7,wordx .. ..})
1)列出 /etc/目录下扩展名是 .conf的文件
[root@localhost~]# ls /etc/*.conf
2)列出 /boot/ 目录下以 vmlin 开头的文件
[root@localhost~]# ls /boot/vmlin*
3)列出/dev/目录下虚拟控制台(tty)设备文件
a)只看其中编号是个位数的tty设备(两种方法)
[root@localhost~]# ls /dev/tty?
/dev/tty0 /dev/tty2 /dev/tty4 /dev/tty6 /dev/tty8
/dev/tty1 /dev/tty3 /dev/tty5 /dev/tty7 /dev/tty9
[root@localhost~]# ls /dev/tty[0-9]
/dev/tty0 /dev/tty2 /dev/tty4 /dev/tty6 /dev/tty8
/dev/tty1 /dev/tty3 /dev/tty5 /dev/tty7 /dev/tty9
[root@localhost~]#
b)只看其中tty1-tty6这六个终端
[root@localhost~]# ls /dev/tty[1-6]
c)只看其中编号是两个字符的tty设备
[root@localhost~]# ls /dev/tty??
4)分别列出系统中的IDE、SCSI接口的硬盘设备
[root@localhost~]# ls /dev/sd* #所有SCSI接口的设备
[root@localhost~]# ls /dev/hd* #所有IDE接口的设备
ls: 无法访问/dev/hd*:没有那个文件或目录
[root@localhost~]#
5)长格式列出/usr/local/目录下的bin、sbin、etc、share目录的属性
[root@localhost~]# ls -ld /usr/local/{bin,sbin,etc,share}
drwxr-xr-x. 2root root 4096 6月 28 2011 /usr/local/bin
drwxr-xr-x. 2root root 4096 6月 28 2011 /usr/local/etc
drwxr-xr-x. 2root root 4096 6月 28 2011 /usr/local/sbin
drwxr-xr-x. 5root root 4096 1月 14 17:11 /usr/local/share
[root@localhost~]#
练习八:统计目录或文件的磁盘占用(du -sh .. ..)
1)统计管理程序目录/sbin/ 、/usr/sbin/ 各自占用的总空间大小
[root@localhost~]# du -sh /sbin/ /usr/sbin/
15M /sbin/
44M /usr/sbin/
[root@localhost~]#
2)统计 /root/ 、/etc/ 目录各自占用的总空间大小
[root@localhost~]# du -sh /root/ /etc/
1.3M /root/
36M /etc/
[root@localhost~]#
3)统计整个根目录占用的空间大小 (因为proc为为文件系统,有一些文件没有找到为正常)
[root@localhost~]# du -sh /
du: 无法访问"/proc/1713/task/1713/fd/4":没有那个文件或目录
du: 无法访问"/proc/1713/task/1713/fdinfo/4":没有那个文件或目录
du: 无法访问"/proc/1713/fd/4":没有那个文件或目录
du: 无法访问"/proc/1713/fdinfo/4":没有那个文件或目录
2.1G /
[root@localhost~]#
练习九:创建目录/文件(mkdir、touch)
1)在 /opt/ 下创建子目录tarena/nsd
[root@localhost~]# rm -rf /opt/*
[root@localhost~]# ls /opt/
[root@localhost~]# mkdir -p /opt/tarena/nsd
[root@localhost~]# ls -R /opt/
/opt/:
tarena
/opt/tarena:
nsd
/opt/tarena/nsd:
[root@localhost~]#
2)在 /opt/tarena/nsd 下创建2个空文件,yourname.txt、cake.doc
[root@localhost~]# ls /opt/tarena/nsd/
[root@localhost~]# touch /opt/tarena/nsd/yourname.txt /opt/tarena/nsd/cake.doc
[root@localhost~]# ls /opt/tarena/nsd/
cake.doc yourname.txt
[root@localhost~]#
3)在/opt下递归创建a/b/c
[root@localhost~]# mkdir -p /opt/a/b/c
练习十:创建软链接文件(快捷方式)
1)为文件/etc/sysconfig/network-scripts/ifcfg-eth0 建一个快捷方式
存放到 /etc/ifcfg-eth0
[root@localhost~]# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/ifcfg-eth0
[root@localhost~]# ls -l /etc/ifcfg-eth0
lrwxrwxrwx. 1root root 41 1月 27 21:52 /etc/ifcfg-eth0-> /etc/sysconfig/network-scripts/ifcfg-eth0
[root@localhost~]#
2)为目录/etc/sysconfig/network-scripts 建一个快捷方式
存放到 /etc/netconf
[root@localhost~]# ln -s /etc/sysconfig/network-scripts/ /etc/netconf
[root@localhost~]# ls -l /etc/netconf
lrwxrwxrwx. 1root root 31 1月 27 21:52 /etc/netconf ->/etc/sysconfig/network-scripts/
[root@localhost~]#
练习十一:复制、删除、移动
1)在当前目录下创建一个子目录 dir1
[root@localhost~]# cd /opt/
[root@localhostopt]# pwd
/opt
[root@localhostopt]# mkdir dir1
[root@localhostopt]# ls
a dir1 tarena
[root@localhostopt]#
2)将文件夹 /boot/grub/ 复制到目录dir1下
[root@localhostopt]# ls /opt/dir1/
[root@localhostopt]# cp -r /boot/grub/ /opt/dir1/
[root@localhostopt]# ls /opt/dir1/
grub
[root@localhostopt]#
3)切换到/root/目录,将当前目录下以install开头的文件复制到dir1下
[root@localhostopt]# pwd
/opt
[root@localhostopt]# cd /root/
[root@localhost~]# pwd
/root
[root@localhost~]# cp install* /opt/dir1/
[root@localhost~]# ls /opt/dir1/
grub install.log install.log.syslog
[root@localhost~]#
4)将/etc/redhat-release文件复制到/root/目录下,同时改名为rv.txt
[root@localhost~]# cp /etc/redhat-release /root/rv.txt
[root@localhost~]# ls /root/rv.txt
/root/rv.txt
[root@localhost~]#
5)将/root/rv.txt文件移动到dir1目录下,名称不变
[root@localhost~]# mv /root/rv.txt /opt/dir1/
[root@localhost~]# ls /opt/dir1/
grub install.log install.log.syslog rv.txt
[root@localhost~]#
6)将dir1/目录下的文件install.log改名为inst.txt
[root@localhost~]# mv /opt/dir1/install.log /opt/dir1/inst.txt
[root@localhost~]# ls /opt/dir1/
grub install.log.syslog inst.txt rv.txt
[root@localhost~]#
7)将目录dir1复制一份,名称设为dir2
[root@localhost~]# cd /opt/
[root@localhostopt]# pwd
/opt
[root@localhostopt]# cp -r dir1/ dir2
[root@localhostopt]# ls
a dir1 dir2 tarena
[root@localhostopt]#
8)删除dir2/目录下以inst开头的文件,确认结果
[root@localhostopt]# ls /opt/dir2
grub install.log.syslog inst.txt rv.txt
[root@localhostopt]# rm -rf /opt/dir2/inst*
[root@localhostopt]# ls /opt/dir2
grub rv.txt
[root@localhostopt]#
9)删除整个dir2/文件夹
[root@localhostopt]# rm -rf /opt/dir2
[root@localhostopt]# ls -ld /opt/dir2
ls: 无法访问/opt/dir2:没有那个文件或目录
[root@localhost opt]#
10)将dir1目录改名为mydir01
[root@localhostopt]# ls /opt/
a dir1 tarena
[root@localhostopt]# mv /opt/dir1/ /opt/mydir01
[root@localhostopt]# ls /opt/
a mydir01 tarena
[root@localhostopt]#
练习三:添加并测试用户账号
1)创建一个名为stu01的用户账号
[root@localhost~]# useradd stu01
[root@localhost~]# grep stu01 /etc/passwd /etc/shadow
/etc/passwd:stu01:x:500:500::/home/stu01:/bin/bash
/etc/shadow:stu01:!!:16463:0:99999:7:::
[root@localhost~]#
2)检查/etc/passwd、/etc/shadow文件的最后一行
[root@localhost~]# tail -n 1 /etc/passwd /etc/shadow
==>/etc/passwd <==
stu01:x:500:500::/home/stu01:/bin/bash
==>/etc/shadow <==
stu01:!!:16463:0:99999:7:::
3)检查/home/新增加的宿主目录
[root@localhost~]# ls /home/
stu01
[root@localhost~]#
4)为用户stu01设置一个密码(123456)
[root@localhost~]# passwd stu01
更改用户 stu01 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 是回文
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost~]#
5)以用户stu01登入系统(注销登录即可)
练习四:添加账号时设置不同属性
1)新建用户nsd01,宿主目录位于/opt/nsd01
[root@localhost~]# useradd -d /opt/nsd01 nsd01
[root@localhost~]# grep nsd01 /etc/passwd
nsd01:x:501:501::/opt/nsd01:/bin/bash
[root@localhost~]# ls /opt/
nsd01 rh
[root@localhost~]#
2)新建系统账号sys01,将UID设为123,登录Shell设为/sbin/nologin
[root@localhost~]# useradd -u 123 -s /sbin/nologin sys01
[root@localhost~]# grep sys01 /etc/passwd
sys01:x:123:502::/home/sys01:/sbin/nologin
[root@localhost~]#
3)为用户sys01设置密码,并测试是否能够登录(注销登录)
[root@localhost~]# passwd sys01
更改用户 sys01 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 是回文
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost~]#
4)新建系统账号sys02,将UID设为124,不创建宿主目录
[root@localhost~]# ls /home/
stu01 sys01
[root@localhost~]# useradd -u 124 -M sys02
[root@localhost~]# ls /home/
stu01 sys01
[root@localhost~]#
5)新建用户admin,将其基本组设为users,附加组设为adm、root
[root@localhost~]# useradd -g users -G adm,root admin
[root@localhost~]# id admin
uid=502(admin)gid=100(users) 组=100(users),0(root),4(adm)
[root@localhost~]#
练习五:passwd设置密码
1)给用户nsd01设置密码123456
[root@localhost~]# passwd nsd01
更改用户 nsd01 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost~]#
2)以用户nsd01登入,修改自己的密码,重新登入验证密码
[root@localhost~]# su - nsd01
[nsd01@localhost~]$ passwd
更改用户 nsd01 的密码 。
为 nsd01 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[nsd01@localhost~]$
3)锁定用户nsd01,查看锁定状态,测试是否还能登入(注销登录)
[root@localhost~]# passwd -l nsd01
锁定用户 nsd01 的密码 。
passwd: 操作成功
[root@localhost~]# passwd -S nsd01
nsd01 LK2015-01-28 0 99999 7 -1 (密码已被锁定。)
[root@localhost~]#
4)解除对用户nsd01的锁定,查看锁定状态,测试是否能登入(注销登录)
[root@localhost~]# passwd -u nsd01
解锁用户 nsd01 的密码 。
passwd: 操作成功
[root@localhost~]# passwd -S nsd01
nsd01 PS2015-01-28 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
[root@localhost~]#
5)将用户nsd01的密码重新改为123456
[root@localhost ~]#passwd nsd01
更改用户 nsd01 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost~]#
6)采用--stdin方式将用户nsd01的密码设为654321
[root@localhost~]# echo 654321 | passwd --stdin nsd01
更改用户 nsd01 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost~]#
练习六:usermod修改用户
1)新建一个用户nsd03,将宿主目录设为/opt/home03,并设置密码
[root@localhost~]# useradd -d /opt/home03 nsd03
[root@localhost~]# passwd nsd03
更改用户 nsd03 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost~]# ls /opt/
home03 nsd01 rh
[root@localhost~]# grep nsd03 /etc/shadow
nsd03:$6$.7TMFfzC$J8UM2u3VcwzLI1a2OWA1nH/oOjGLDQeNtGOm/d21pKUIYdynExLLYnHDpGZ3.i0na.o/tvm.jfC9iHu9THHWR0:16463:0:99999:7:::
[root@localhost~]#
2)将用户nsd03的宿主目录改为/home/nsd03
[root@localhost~]# usermod -d /home/nsd03 nsd03
[root@localhost~]# grep nsd03 /etc/passwd
nsd03:x:503:504::/home/nsd03:/bin/bash
[root@localhost~]#
3)将用户sys01的登录Shell改为/bin/bash
[root@localhost~]# grep sys01 /etc/passwd
sys01:x:123:502::/home/sys01:/sbin/nologin
[root@localhost~]# usermod -s /bin/bash sys01
[root@localhost~]# grep sys01 /etc/passwd
sys01:x:123:502::/home/sys01:/bin/bash
[root@localhost~]#
4)锁定用户sys01,查看锁定状态,测试是否还能登入
[root@localhost~]# usermod -L sys01
[root@localhost~]# grep sys01 /etc/shadow
sys01:!$6$jH5EVGY1$gJVlJ/3mvuMkwn4AqqIsYtZZxtYcnKFQRdwFjEmdeRb7StucmoLqKeW4T8LQcEYkcszrKL.3L2zY3BwfUWeHS1:16463:0:99999:7:::
[root@localhost~]#
5)新建用户nsd04,设置为2天前失效,并测试登录、查看提示信息(注销登录)
[root@localhost~]# useradd nsd04
[root@localhost~]# date
2015年 01月 28日 星期三 18:24:09 CST
[root@localhost~]# usermod -e 2015-01-26 nsd04
[root@localhost~]# passwd nsd04
更改用户 nsd04 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 是回文
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost~]#
练习七:chage密码时效控制
1)强制用户nsd04在下次登录的时候必须更改密码(-d 0),并验证效果
[root@localhost~]# chage -d 0 nsd04
[root@localhost~]# grep nsd04 /etc/shadow
nsd04:$6$.P4l7Ci4$YsshBCFRjC7zZA3mRL4RN/S8wBO41xdYHL0Sr9jHtpOyKWVJZMA1mABQaQG86d6gDsSwgGu.ftSNJ3bRWJ4Po.:0:0:99999:7::16096:
[root@localhost~]#
练习八:su切换的环境差异
1)以用户root登录,执行 su -stu01,检查命令行环境
a)查看当前所在目录
[root@localhost~]# su - stu01
[stu01@localhost~]$ pwd
/home/stu01
b)检查PATH环境变量
[stu01@localhost~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/stu01/bin
2)重新以用户root登录,执行 sustu01,检查命令行环境
a)查看当前所在目录
[root@localhost~]# su stu01
[stu01@localhostroot]$ pwd
/root
b)检查PATH环境变量(比较PATH值的差异)
[stu01@localhostroot]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[stu01@localhostroot]$
练习九:userdel、id
1)检查root、nsd01用户的ID标识信息,区分UID、GID、基本组、附加组
[root@localhost~]# id root
uid=0(root)gid=0(root) 组=0(root)
[root@localhost~]# id nsd01
uid=501(nsd01)gid=501(nsd01) 组=501(nsd01)
[root@localhost~]#
2)彻底删除前面添加的用户账号(nsd01、sys01、sys02等)
[root@localhost~]# userdel nsd01
[root@localhost~]# userdel sys01
[root@localhost~]# userdel sys02
练习十:用户初始化配置
1)为root用户添加别名 byebye='shutdown -h +15' ,只要进命令行环境自动生效
[root@localhost~]# grep byebye /root/.bashrc
aliasbyebye='shutdown -h +15'
[root@localhost~]#
4)将ls --help的输出保存为ls.help文件,自动复制给每个新用户的家目录下
[root@localhost~]# ls --help > /etc/skel/ls.help
[root@localhost~]# useradd new01
[root@localhost~]# ls /home/new01/
ls.help
[root@localhost~]#
练习十一:组账号基本管理
1)新建组账号stugrp,将GID设为600
[root@localhost~]# groupadd -g 600 stugrp
[root@localhost~]# grep stugrp /etc/group
stugrp:x:600:
[root@localhost~]#
2)为stugrp组添加三个成员用户(user01、root、zhangsan)
[root@localhost~]# useradd zhangsan
[root@localhost~]# useradd user01
[root@localhost~]# grep stugrp /etc/group
stugrp:x:600:
[root@localhost~]# gpasswd -M zhangsan,root,user01 stugrp
[root@localhost~]# grep stugrp /etc/group
stugrp:x:600:zhangsan,root,user01
[root@localhost~]#
3)从stugrp组删除一个成员(user01)
[root@localhost~]# grep stugrp /etc/group
stugrp:x:600:zhangsan,root,user01
[root@localhost~]# gpasswd -d user01 stugrp
Removing useruser01 from group stugrp
[root@localhost~]# grep stugrp /etc/group
stugrp:x:600:zhangsan,root
[root@localhost~]#
4)重新定义stugrp组的成员列表(user02、zhangsan)
[root@localhost~]# grep stugrp /etc/group
stugrp:x:600:zhangsan,root
[root@localhost~]# useradd user02
[root@localhost~]# gpasswd -M zhangsan,user02 stugrp
[root@localhost~]# grep stugrp /etc/group
stugrp:x:600:zhangsan,user02
[root@localhost~]#
5)为stugrp组添加一个组管理员user01
[root@localhost~]# grep stugrp /etc/gshadow
stugrp:!::zhangsan,user02
[root@localhost~]# gpasswd -A user01 stugrp
[root@localhost~]# grep stugrp /etc/gshadow
stugrp:!:user01:zhangsan,user02
[root@localhost~]#
6)以用户user01登入,把自己添加为stugrp组的成员,删除组成员user02
[root@localhost~]# su - user01
[user01@localhost~]$ grep stugrp /etc/group
stugrp:x:600:zhangsan,user02
[user01@localhost~]$ gpasswd -a user01 stugrp
Adding useruser01 to group stugrp
[user01@localhost~]$ grep stugrp /etc/group
stugrp:x:600:zhangsan,user02,user01
[user01@localhost~]$ gpasswd -d user02 stugrp
Removing useruser02 from group stugrp
[user01@localhost~]$ grep stugrp /etc/group
stugrp:x:600:zhangsan,user01
[user01@localhost~]$
练习十二:查看一个组有哪些成员
1)查看stugrp组有哪些成员用户
[root@localhost~]# grep stugrp /etc/group
stugrp:x:600:zhangsan,user01
[root@localhost~]#
2)查看root组有哪些成员用户
[root@localhost~]# grep root /etc/group
root:x:0:admin
[root@localhost~]#
linux系统管理07:
一、lsb_release命令的修复
1、通过其他服务器查找产生lsb_release命令的包(前提是这台服务器有这个命令)
# whichlsb_release
/usr/bin/lsb_release
# rpm -qf/usr/bin/lsb_release
redhat-lsb-core-4.0-7.el6.x86_64
# rpm -ivh/misc/cd/Packages/redhat-lsb-core-4.0-7.el6.x86_64.rpm
2、通网络百度、谷歌搜索产生lsb_release命令的软件包,进行安装。
二、linux目录结构
1、可以用man hier命令查看/下各个目录的作用。
2、详细信息请查看Linux目录详解.txt。
三、find命令扩展
1、-iname选项:根据名称查找,忽略大小写
# find /etc/-iname PASSWD
/etc/pam.d/passwd
/etc/passwd
# find /etc/-name PASSWD
#
2、-uid选项:根据uid查找,属于这个用户的文件
# tail -n 1/etc/passwd
haha:x:500:500::/home/haha:/bin/bash
# find / -uid500
/var/spool/mail/haha
/home/haha
......
3、-gid 选项:根据gid查找,属于这个组的文件
4、-user 选项:根据用户名查找,查找属于这个用户的
# find / -userhaha
/var/spool/mail/haha
/home/haha
......
5、-group 选项:根据组名查找,查找属于这个组的
6、-nouser 选项:查找这个文件不属于任何用户的
# userdel haha
# find /home/-nouser
/home/haha
/home/haha/.mozilla
......
7、-nogroup 选项:查找这个文件不属于任何组的
# userdel haha
# find /home/-nogroup
/home/haha
/home/haha/.mozilla
8、-maxdepth 选项:限制目录查找的深度(最大层数)
注意:当有多个条件是-maxdepth这个选项要放到最前面
[root@localhost 桌面]# find/etc/ -name passwd -maxdepth 1
find: 警告: 您在非选项参数 -name后定义了 -maxdepth 选项,但选项不是位置选项 (-maxdepth 影响在它之前或之后的指定的比较测试)。请在其它参数之前指定选项。
正确的:
# find/etc/ -maxdepth 1 -name passwd
/etc/passwd
# find/etc/ -maxdepth 2 -name passwd
/etc/pam.d/passwd
/etc/passwd
9、-inum 选项:根据文件i节点编号查找
i节点:在Linux系统中标识一个文件的标志,它是一串数字。在linux系统中一切皆为文件,那么一分区能够创建多少个文件数是有限的,它与这个分区的i节点的数量有关。i节点的数量大小也与该分区的大小有关。可以通过如下命令查询
# tune2fs -l/dev/sda1 | grep "Inode count"
Inodecount: 51200
查看一个文件的i节点: ls -i 补充(ls -F)
# ls -i/root/install.log
261123/root/install.log
# find /root-inum 261123
/root/install.log
三、PATH应用
1、输出变量的值
#echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
2、将可执行程序拷贝到PATH变量的任意路径下,即可达到在任意路径下执行,都能够找到。
四、时间的转换
1、Unix时间戳(timestamp)
从 GMT 1970年01月01日0时0分0秒 起到指定时间点所经历的总秒数
命令查看:date +%s (查看当前时间戳)
2、查询指定时间经过的秒数
date +%s -d "2001-09-11"
3、[root@svr5 ~]#echo $[$(date +%s -d "2001-09-11")/86400+1]
//查指定时刻经过的天数
4、
[root@svr5 ~]# date -d"@1000137600" //查指定秒数
2001年 09月 11日 星期二 00:00:00 CST
[root@svr5 ~]# grep ^root /etc/shadow //取改密时刻
root:$6$BUDvyH4ENyUQQZx4$....2VPL/:16294:0:99999:7:::
[root@svr5 ~]# date -d "@$[16294*86400]" //查指定天数
2014年 08月 12日 星期二 08:00:00 CST
5、【重要】
[root@svr5 ~]# echo $(date) //$()代表输出的是命令的结果
2015年 03月 12日 星期四 08:33:36 CST
[root@svr5 ~]# echo $[2*4] //$[]代表的是运算
8
五、ls -lh与du -sh
共同点:都能够显示对象的大小
不同点:大小的含义
ls -lh,显示数据内容的大小
du -sh,显示数据所占用的磁盘空间(4KB/块)
[root@svr5 ~]#ls -lh install.log //数据为47K
-rw-r--r--. 1 root root 47K 8月 12 09:47 install.log
[root@svr5 ~]#du -sh install.log //占用52K磁盘空间
52K install.log
六、软连接/硬连接
1、查找文件方式
目标文件-->i节点-->文档数据
2、软连接
链接文件-->目标文件-->i节点-->文档数据
3、硬连接
链接文件-->i节点-->数据内容
4、对比优缺点
软连接:若目标文件被删除,链接文件将失效,可以跨分区、目标可以是目录
硬连接:若目标文件被删除,链接文件仍可用,不能跨分区、目标不能是目录
七、自定义yum仓库
1、将自己下载的rpm包传到linux中
[root@localhost 桌面]# ls
linuxqq-v1.0.2-beta1.i386.rpm RealPlayer11GOLD.rpm
[root@localhost 桌面]#
2、将这些rpm包放到一个目录里
[root@localhost 桌面]# mkdir/mydir
[root@localhost 桌面]# cp/root/桌面/linuxqq-v1.0.2-beta1.i386.rpm RealPlayer11GOLD.rpm /mydir
[root@localhost 桌面]# ls/mydir
linuxqq-v1.0.2-beta1.i386.rpm RealPlayer11GOLD.rpm
[root@localhost 桌面]#
3、利用光盘作为源,搭建yum仓库
[root@localhost/]# umount /dev/cdrom
[root@localhost/]# mount /dev/cdrom /media/
mount: blockdevice /dev/sr0 is write-protected, mounting read-only
[root@localhost/]# df -h | tail -n 1
/dev/sr0 3.5G 3.5G 0 100% /media
[root@localhost/]# cd /etc/yum.repos.d/
[[email protected]]# cp rhel-source.repo dvd.repo
[[email protected]]# cat dvd.repo
[rhel-6]
name=Red HatEnterprise Linux 6
baseurl=file:///misc/cd
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[[email protected]]# yum repolist
Loaded plugins:product-id, refresh-packagekit, security, subscription-manager
This system isnot registered to Red Hat Subscription Management. You can usesubscription-manager to register.
rhel-6 | 3.9 kB 00:00 ...
rhel-6/primary_db |3.1 MB 00:00 ...
repo id reponame status
rhel-6 Red Hat Enterprise Linux 6 3,648
repolist: 3,648
4、利用本地yum安装createrepo包
[root@localhost/]# yum -y install createrepo
5、通过createrepo命令生成自定义yum库软件包信息
[root@localhost/]# ls /mydir/
linuxqq-v1.0.2-beta1.i386.rpm RealPlayer11GOLD.rpm
[root@localhost/]# createrepo /mydir/
Spawning worker0 with 2 pkgs
Workers Finished
Gathering workerresults
Saving Primarymetadata
Saving filelists metadata
Saving othermetadata
Generatingsqlite DBs
Sqlite DBscomplete
[root@localhost/]# ls /mydir/
linuxqq-v1.0.2-beta1.i386.rpm RealPlayer11GOLD.rpm repodata
[root@localhost/]#
6、编辑yum配置文件
[root@localhost/]# yum repolist
Loaded plugins:product-id, refresh-packagekit, security, subscription-manager
This system isnot registered to Red Hat Subscription Management. You can usesubscription-manager to register.
repo id reponame status
rhel-6 RedHat Enterprise Linux 6 3,648
repolist: 3,648
[root@localhost/]# vim /etc/yum.repos.d/dvd.repo
[root@localhost/]# cat /etc/yum.repos.d/dvd.repo
[rhel-6]
name=Red HatEnterprise Linux 6
baseurl=file:///misc/cd
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-niu]
name=Red HatEnterprise Linux
baseurl=file:///mydir
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@localhost/]#
7、测试安装
[root@localhost/]# yum repolist
Loaded plugins:product-id, refresh-packagekit, security, subscription-manager
This system isnot registered to Red Hat Subscription Management. You can use subscription-managerto register.
rhel-6 | 3.9 kB 00:00 ...
rhel-niu | 2.9 kB 00:00 ...
rhel-niu/primary_db | 3.4 kB 00:00 ...
repo id reponame status
rhel-6 RedHat Enterprise Linux 6 3,648
rhel-niu RedHat Enterprise Linux 2
repolist: 3,650
[root@localhost/]# yum -y install linuxqq
练习一:cat查阅文件
1)查看CPU信息、内存信息
[root@localhost/]# cat /proc/cpuinfo
[root@localhost/]# cat /proc/meminfo
2)查看Linux系统里边有哪些用户账号(/etc/passwd),了解一共有多少个账号
[root@localhost/]# wc -l /etc/passwd
35 /etc/passwd
[root@localhost/]#
3)通过install.log文件了解系统中装了多少个软件包
[root@localhost/]# wc -l /root/install.log
961/root/install.log
[root@localhost/]#
练习二:分页阅读more、less
1)分页浏览CPU信息、内存信息
[root@localhost/]# less /proc/cpuinfo
[root@localhost/]# less /proc/meminfo
2)分页查看ls、mkdir命令的--help帮助信息
[root@localhost/]# ls --help | less
[root@localhost/]# mkdir --help | less
3)将CPU信息保存为文件cpu.txt,并分页阅读cpu.txt文件
[root@localhost/]# cat /proc/cpuinfo > cpu.txt
[root@localhost/]# less cpu.txt
练习三:head、tail命令
1)查看CPU记录信息的前10行内容、内存记录信息的前4行内容
[root@localhost/]# head /proc/cpuinfo
[root@localhost/]# head /proc/meminfo
2)查看/etc/passwd文件(账号库)开头2行、末尾2行的内容
[root@localhost/]# head -n 2 /etc/passwd
[root@localhost/]# tail -n 2 /etc/passwd
3)将当前主机的所有IP地址信息存入文件ipadd.txt,查看其中第2行内容
[root@localhost/]# ifconfig > ipadd.txt
[root@localhost/]# head -n 2 ipadd.txt
练习四:wc文件内容统计
1)统计当前系统一共有多少个用户账号
[root@localhost/]# wc -l /etc/passwd
2)统计/etc/目录下扩展名是.conf一共有多少个
[root@localhost/]# ls -l /etc/*.conf | wc -l
36
[root@localhost/]#
练习五:grep基本用法
1)将当前主机的所有IP地址信息存入文件ipadd.txt
[root@localhost/]# ifconfig > ipadd.txt
2)去掉ipadd.txt文件里的空行
[root@localhost/]# grep -v ^$ ipadd.txt
3)计算/bin目录下一共有多少个基本的外部命令程序,不包括快捷方式
[root@localhost/]# ls -l /bin/ | grep ^- | wc -l
94
[root@localhost/]#
4)复制/etc/inittab文件到当前目录下,改名为init.txt
[root@localhost/]# cd /opt/
[root@localhostopt]# rm -rf *
[root@localhostopt]# cp /etc/inittab /opt/init.txt
[root@localhostopt]# ls
init.txt
[root@localhostopt]#
a)统计init.txt文件中的有效配置(排除#开头的行、空行)行数
[root@localhostopt]# grep -v ^$ init.txt | grep -v ^# | wc -l
1
[root@localhostopt]#
b)提取init.txt文件里的有效配置,保存为init2.txt
[root@localhostopt]# grep -v ^$ init.txt | grep -v ^# > init2.txt
[root@localhostopt]# cat init2.txt
id:3:initdefault:
[root@localhostopt]#
练习六:zip、unzip归档压缩
1)在Linux虚拟机里创建一个压缩包lnxtest.zip,包括以下文件或目录:
/root目录下以install开头的文件
[root@localhostopt]# ls
init2.txt init.txt
[root@localhostopt]# zip lnxtest.zip /root/install*
adding: root/install.log (deflated 75%)
adding: root/install.log.syslog (deflated85%)
[root@localhostopt]# ls
init2.txt init.txt lnxtest.zip
[root@localhostopt]#
练习七:tar制作/释放归档压缩包(zcf、ztf、zxf、jcf、jtf、jxf、cf、tf)
1)备份/boot、/etc这两个文件夹,保存为bootetc.tar.gz文件
[root@localhostopt]# pwd
/opt
[root@localhostopt]# rm -rf *
[root@localhostopt]# tar -zcf bootetc.tar.gz /boot/ /etc/
tar: 从成员名中删除开头的“/”
[root@localhostopt]# ls
bootetc.tar.gz
[root@localhostopt]#
2)查看bootetc.tar.gz文件内包含哪些内容
[root@localhostopt]# tar -ztf bootetc.tar.gz
3)将bootetc.tar.gz释放到文件夹/root/bootetc/下
[root@localhostopt]# mkdir /root/bootetc
[root@localhostopt]# tar -zxf bootetc.tar.gz -C /root/bootetc/
[root@localhostopt]# ls /root/bootetc/
boot etc
[root@localhostopt]#
4)备份/usr/sbin目录,保存为usrsbin.tar.bz2文件
[root@localhostopt]# pwd
/opt
[root@localhostopt]# ls
bootetc.tar.gz
[root@localhostopt]# tar -jcf usrbin.tar.bz2 /usr/sbin/
tar: 从成员名中删除开头的“/”
tar: 从硬连接目标中删除开头的“/”
[root@localhostopt]# ls
bootetc.tar.gz usrbin.tar.bz2
[root@localhostopt]#
5)查看usrsbin.tar.bz2文件内包含哪些内容
[root@localhostopt]# tar -jtf usrbin.tar.bz2
6)将usrsbin.tar.bz2释放到/root/usrsbin/文件夹下
[root@localhostopt]# mkdir /root/usrsbin
[root@localhostopt]# tar -jxf usrbin.tar.bz2 -C /root/usrsbin/
[root@localhostopt]# ls /root/usrsbin/
usr
[root@localhostopt]#
7)将/root/下的bootetc、usrsbin目录归档为btub.tar文件(不做压缩)
[root@localhostopt]# ls
bootetc.tar.gz usrbin.tar.bz2
[root@localhostopt]# tar -cf btub.tar /root/bootetc/ /root/usrsbin/
tar: 从成员名中删除开头的“/”
tar: 从硬连接目标中删除开头的“/”
[root@localhostopt]# ls
bootetc.tar.gz btub.tar usrbin.tar.bz2
[root@localhostopt]#
8)查看归档文件btub.tar内包含哪些内容
[root@localhostopt]# tar -tf btub.tar
9)删除上述练习中产生的文件和相关目录
[root@localhost/]# rm -rf /opt/* /root/bootetc/ /root/usrsbin/
练习八:查找可执行程序(which)
1)以root用户登入,查看PATH变量(外部可执行程序目录)
[root@localhost/]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost/]#
2)检查命令mkdir、ls、ifconfig、hostname的程序文件在哪里
[root@localhost/]# which mkdir
/bin/mkdir
[root@localhost/]# which ls
alias ls='ls--color=auto'
/bin/ls
[root@localhost/]# which ifconfig
/sbin/ifconfig
[root@localhost/]# which hostname
/bin/hostname
[root@localhost/]#
3)尝试查找命令cd、help、pwd、type的程序文件在哪里
[root@localhost/]# which cd
/usr/bin/which:no cd in(/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost/]# which help
/usr/bin/which:no help in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost/]# which pwd
/bin/pwd
[root@localhost/]# which type
/usr/bin/which:no type in(/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost/]#
练习九:locate模糊查询
1)创建一个新文件tarena.txt
[root@localhost/]# touch tarena.txt
2)使用locate查找刚刚建立的这个文件
[root@localhost/]# locate tarena.txt
[root@localhost/]#
3)创建/更新索引库(updatedb)
[root@localhost/]# updatedb
4)重新再使用locate查找刚刚建立的这个文件
[root@localhost/]# locate tarena.txt
/tarena.txt
[root@localhost/]#
练习十:find精确查找
1)新建一个目录study,在study目录下建子目录subdir
[root@localhost/]# mkdir -p /study/subdir
2)在study目录下创建测试文件ipadd.txt,存入eth0网卡的IP地址信息
[root@localhost/]# ifconfig > /study/ipadd.txt
[root@localhost/]# ls study/
ipadd.txt subdir
[root@localhost/]#
3)为ipadd.txt创建快捷方式ip.txt,放在study/subdir/下
[root@localhost/]# ln -s /study/ipadd.txt /study/subdir/ip.txt
[root@localhost/]#
4)分别找出study目录下的快捷方式、普通文件、文件夹
[root@localhost/]# find /study/ -type l
/study/subdir/ip.txt
[root@localhost/]# find /study/ -type f
/study/ipadd.txt
[root@localhost/]# find /study/ -type d
/study/
/study/subdir
[root@localhost/]#
5)找出系统中所有的块设备文件,将结果存到study目录下,文件名为blocks.txt
[root@localhost/]# find / -type b > /study/blocks.txt #proc目录找不到为正常
find: “/proc/2179/task/2179/fd/5”: 没有那个文件或目录
find: “/proc/2179/task/2179/fdinfo/5”: 没有那个文件或目录
find: “/proc/2179/fd/5”: 没有那个文件或目录
find: “/proc/2179/fdinfo/5”: 没有那个文件或目录
6)找出study目录下名称以ip开头txt结尾的普通文件
[root@localhost/]# find /study/ -name "ip*txt"
/study/ipadd.txt
/study/subdir/ip.txt
[root@localhost/]#
7)找出study目录下名称以ip开头txt结尾的文件或者所有普通文件
[root@localhost/]# find /study/ -name "ip*txt" -o -type f
/study/ipadd.txt
/study/blocks.txt
/study/subdir/ip.txt
[root@localhost/]#
8)找出/etc/目录下名称以res开头的conf结尾的配置文件
[root@localhost/]# find /etc/ -name "res*conf"
/etc/selinux/restorecond.conf
/etc/selinux/restorecond_user.conf
/etc/resolv.conf
[root@localhost/]#
9)复制/boot/目录下的内核程序(vmlinuz开头的文件)到study目录下
[root@localhost/]# cp /boot/vmlinuz* /study/
[root@localhost/]# ls /study/
blocks.txt ipadd.txt subdir vmlinuz-2.6.32-431.el6.x86_64
[root@localhost/]#
10)找出study目录下大小超过1KB的并且是文件 【+1k】
[root@localhost/]# find /study -size +1k -type f
/study/vmlinuz-2.6.32-431.el6.x86_64
[root@localhost/]#
11)找出/sbin目录下大小超过300KB的文件 【+300k】
[root@localhost/]# find /sbin/ -size +300k
12)建立测试文件、目录:
a)复制/root/install.log文件为study/file1,保留原始属性
[root@localhost/]# cp -p /root/install.log /study/file1
[root@localhost/]# ls study/
blocks.txt file1 ipadd.txt subdir vmlinuz-2.6.32-431.el6.x86_64
[root@localhost/]#
b)利用重定向建立study/file2文件,存入当前的内核版本信息
[root@localhost/]# uname -r > /study/file2
[root@localhost/]# cat /study/file2
2.6.32-431.el6.x86_64
[root@localhost/]#
c)复制/root/install.log文件为study/file3
[root@localhost/]# cp /root/install.log /study/file3
[root@localhost/]# ls /study/
blocks.txt file1 file2 file3 ipadd.txt subdir vmlinuz-2.6.32-431.el6.x86_64
[root@localhost/]#
d)新建文件夹study/nsd/
[root@localhost/]# mkdir /study/nsd
13)分别找出study目录下2天前、2天内修改过的文件
[root@localhost/]# find /study/ -mtime +2
/study/file1
[root@localhost/]# find /study/ -mtime -2
/study/
/study/file3
/study/vmlinuz-2.6.32-431.el6.x86_64
/study/ipadd.txt
/study/file2
/study/blocks.txt
/study/nsd
/study/subdir
/study/subdir/ip.txt
[root@localhost/]#
14)找出study目录下2天前修改过的文件,并列出其详细属性
[root@localhost/]# find /study/ -mtime +2 -exec ls -l {} \;
-rw-r--r--. 1root root 39321 1月 14 17:22 /study/file1
[root@localhost/]#
使用vim文本编辑器
光盘文件的使用
RPM软件包管理
#################################################
一、使用vim文本编辑器
1. vi与vim
vi,Virsual Interface,Linux/Unix中默认的文本编辑器
vim,Vi Improved,是vi编辑器的增强版本(支持区分代码颜色等)
推荐使用vim
2. vim编辑器的三种工作模式
( )模式、( )模式、( )模式
3. 命令模式下的基本操作
移动光标:箭头键、PgUp和PgDn翻页、Home键(或^)、End键(或$)
行间跳转:到第一行(1G或gg)、到最后一行(G)
复制、粘贴:
复制1行(yy)、复制3行(3yy)
粘贴到当前行之后(小写p)、粘贴到当前行之后(大写P)
删除(实际是剪切):
删除单个字符(x或Delete键)
删除到行首(d^)、删除到行尾(d$)
删除1行(dd)、删除3行(3dd)
查找关键词:
搜索(/word)切换结果(n、N)
撤销编辑:
撤销最近一次操作(小写u)
撤销当前行所有修改(大写U)
恢复前一次撤销(Ctrl+ r,即重做)
保存并退出vim编辑器:
大写的ZZ
4. 末行模式下的基本操作
存盘及退出:
保存(:w)、退出(:q) 【Write、Quit】
保存并退出(:wq 或 :x)、放弃修改退出(:q!)
另存为(:w /路径/文件) 【Write】
读入其他文件(:r /路径/文件) 【Read】
查找字符串并替换: 【Substitute】
替换当前行第一个old ( :s/old/new )
替换当前行所有old ( :s/old/new/g )
替换第4~9行所有old ( :4,9 s/old/new/g )
替换文件内所有old (:% s/old/new/g )
设置vim编辑器:
**使用 :set all 可查看所有可配置的参数
显示/不显示行号(:set nu、:set nonu)
启用/关闭语法高亮(:syntax on、:syntax off)
开启/关闭查询结果高亮显示(:set hlsearch、set nohlsearch)
**hlsearch 可缩写为 hls
启用/关闭自动缩进(:set ai、:set noai)
**autoindent 可缩写为 ai
5. vim编辑器相关文件
~/.vimrc,保存用户的vim编辑器设置
~/.viminfo,记录用户的历史操作
.filename.swp,编辑过程中的缓存文件
二、光盘文件的使用
1. 光盘对应的设备
/dev/hdc、/dev/sr0 【设备文件,分别为IDE接口、SCSI接口】
/dev/cdrom 【快捷方式】
2. 如何访问光盘资源(任选一种)
方式一:插入光盘后,默认可直接从/misc/cd/ 访问光盘资源
方式二:手动挂载/卸载光盘
mount /dev/光盘设备 挂载点(文件夹)
umount /dev/光盘设备
或者
umount 光盘挂载点
RHEL 6.x 光盘的目录结构
EFI
HighAvailability //高可用相关软件包
p_w_picpaths
isolinux
LoadBalancer //负载均衡相关软件包
Packages //真正存放所以软件包位置
repodata
Server //常用软件包
ScalableFileSystem //可扩展的文件系统
ResilientStorage
三、RPM软件包管理
1. 关于RPM机制
RPM Package Manager,RPM软件包管理器
软件资源站:http://rpmfind.net/、http://www.centos.org/
RPM包文件名特征:
软件名-版本信息.操作系统.硬件架构.rpm
RPM包的一般安装路径(分散):
管理程序:/sbin/*、/usr/sbin/*
普通用户程序:/bin/*、/usr/bin/*
2. 查询软件包信息
** rpm -q 相当于 rpmquery
列出已安装的所有RPM软件:
rpm -qa
查询软件是否安装:
rpm -q 软件名...
查询软件的描述信息:
rpm -qi 软件名...
查询软件的完整安装清单:
rpm -ql 软件名... 【-c 配置清单、-d 文档清单】
查询某个文件或目录属于哪个RPM软件:
rpm -qf 文件或目录的绝对路径...
3. 查询 .rpm 安装文件信息
查询软件包的描述信息:
rpm -qpi /路径/软件名-版本.. .. .rpm
查询软件的完整安装清单:
rpm -qpl /路径/软件名-版本.. ...rpm 【-c 配置清单、-d 文档清单】
4. 安装、升级、卸载RPM软件
全新安装RPM软件包:
rpm -ivh /路径/软件名-版本.. ...rpm ...
升级RPM软件:
rpm -Uvh /路径/软件名-版本.. .. .rpm... 【若原本未装,则全新安装】
rpm -Fvh /路径/软件名-版本.. .. .rpm... 【若原本未装,则放弃安装】
卸载RPM软件
rpm -e 软件名...
** 安装/升级软件包时,可通过 --force 强制覆盖或降级
** 安装或卸载软件时,可通过 --nodeps忽略依赖关系
** 安装或卸载软件时,可一次提供相互依赖的所有关联包,rpm会自动决定处理顺序
配置YUM库
源码包编译安装
#################################################
一、配置YUM库及更新操作
1. 关于YUM更新(YellowdogUpdater Modified)
基于RPM软件包建立集中的仓库,自动处理依赖关系
软件源的提供方式:file://...、ftp://... 、http://...
2. 准备YUM仓库服务器
** 采用RHEL 6.5光盘中的资源,仅提供给本机使用
方式一:直接使用/misc/cd/目录,按需挂载
插入光盘即可,无需额外操作
3. 配置YUM客户机
仓库配置:/etc/yum.repos.d/*.repo
主要配置语句用途:
[源名称] :()
name:()
baseurl:()
enabled:()
gpgcheck:是否验证待安装的RPM包
gpgkey:用于RPM验证的密钥文件
4.配置YUM思路
YUM服务器配置思路:
第一步:确保光驱电源加电,放入RHEL6.5光盘的iso镜像
第二步:ls -l /dev/cdrom 查看linux系统是否识别光驱设备
第三步:创建挂载目录:mkdir/myiso (或也可以使用linux系统提供的挂载目录/media、/mnt)
第四步:利用mount命令挂载:mount /dev/cdrom /myiso
第五步:查看挂载情况:mount |grep myiso
YUM客户端配置思路:
配置文件实例:
[root@svr5 ~]#vim /etc/yum.repos.d/server.repo
[rhel6-server]
name=Red HatEnterprise Linux 6.5 Server
baseurl=file:///myiso
enabled=1
gpgcheck=0
#gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
4. 使用yum命令管理软件包
列出所有软件(已安装的+可用的):yum list
仅列出已安装的软件: yum list installed
仅列出可用的软件(YUM源里提供的):yum list available
清理yum缓存数据:yum clean all
查询软件是否安装:yum list 软件名...
查询软件的描述信息:yum info 软件名...
安装指定软件包:yum -y install 软件名...
升级指定软件包:yum -y update 软件名...
卸载指定软件包:yum -y remove 软件名...
按关键词搜索可用的软件:yum search 关键词
查找能提供指定文件的可用软件:yum provides 文件路径
5. 使用yum命令管理软件组
** 与软件包管理类似,只不过操作对象为一组软件
常用指令:
grouplist:查看软件组列表
groupinfo:查看软件组的说明信息
groupinstall:安装指定的软件组
groupupdate:升级软件组
groupremove:卸载软件组
#################################################
二、源码包编译安装
1. 源代码软件包的常见格式
软件名-版本号.tar.gz
软件名-版本号.tar.bz2
2. 源代码编译安装的工作环境
** 主要是make、gcc、g++等工具
** 一般可通过yum安装“开发工具”包组来提供开发环境
** 或者 yum -y install gcc gcc-c++ make
3. 源码编译的一般过程
—— 前期准备:下载软件的源码包
1)( ) 【释放源代码至指定目录】
2)( ) 【指定安装目录/功能模块等选项】
./configure --prefix=安装目录
** 查看配置帮助 ./configure --help | less
** 此步骤成功后会生成 Makefile 文件
3)( ) 【生成可执行的二进制程序文件】
4)( ) 【将编译好的文件复制到预先配置的安装目录】
** 编译+安装可合写成make && make install
—— 安装后测试:执行程序
** 未指定安装路径时,默认安装位置/usr/local/{bin,sbin,etc,man,share,...}
4. 安装并测试 httpd 软件(网站服务器程序)
1)解包、配置、编译、安装
[root@svr5 ~]#cd /var/ftp/pub/ //切换到存放httpd软件包的文件夹
[root@svr5 pub]#tar zxf httpd-2.2.25.tar.gz -C /usr/src/
[root@svr5 pub]#cd /usr/src/httpd-2.2.25/
[[email protected]]# ./configure --prefix=/usr/local/httpd
.. ..
[[email protected]]# make
[[email protected]]# make install
2)确认安装结果
[[email protected]]# ls -F /usr/local/httpd/
bin/ cgi-bin/ error/ icons/ lib/ man/ modules/
build/ conf/ htdocs/ include/ logs/ manual/
** conf/ 目录下存放配置文件
** htdocs/ 目录下存放网页文件
** logs/ 目录下存放日志文件
** manual/ 目录下存放手册文档
3)启动httpd网站服务
[root@svr5 ~]#/usr/local/httpd/bin/apachectl start
4)从浏览器访问网站服务器
访问 http://127.0.0.1/ 或http://yourserver/ ,
页面会显示 “It works!”
练习一:磁盘分区
1)为虚拟机添加一块80GB、SCSI接口的硬盘
[root@test01 ~]#parted -l
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sda:322GB
......
错误: /dev/sdb:unrecognised disk label
警告: 无法以读写方式打开/dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
错误: 无效的分区表 -/dev/sr0 出现递归分区。
忽略/Ignore/放弃/Cancel?i
Model: NECVMWarVMware SATA CD01 (scsi)
Disk /dev/sr0:3854MB
Sector size(logical/physical): 2048B/2048B
Partition Table:msdos
Number Start End Size Type File system 标志
[root@test01 ~]#ls /dev/sdb
/dev/sdb
[root@test01 ~]#
2)划分2个20GB的主分区,剩余作为扩展分区
[root@test01 ~]#parted /dev/sdb mklabel msdos
[root@test01 ~]#parted /dev/sdb print
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sdb:85.9GB
Sector size(logical/physical): 512B/512B
Partition Table:msdos
Number Start End Size Type File system 标志
[root@test01 ~]#parted /dev/sdb mkpart primary 0 20G
警告: The resultingpartition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel?i
信息: You may need toupdate /etc/fstab.
[root@test01 ~]#parted /dev/sdb print
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sdb:85.9GB
Sector size(logical/physical): 512B/512B
Partition Table:msdos
Number Start End Size Type File system 标志
1 512B 20.0GB 20.0GB primary
[root@test01 ~]#parted /dev/sdb print
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sdb:85.9GB
Sector size(logical/physical): 512B/512B
Partition Table:msdos
Number Start End Size Type File system 标志
1 512B 20.0GB 20.0GB primary
[root@test01 ~]#parted /dev/sdb mkpart primary 20G 40G
信息: You may need toupdate /etc/fstab.
[root@test01 ~]#parted /dev/sdb print
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sdb:85.9GB
Sector size(logical/physical): 512B/512B
Partition Table:msdos
Number Start End Size Type File system 标志
1 512B 20.0GB 20.0GB primary
2 20.0GB 40.0GB 20.0GB primary
[root@test01 ~]#
[root@test01 ~]#parted /dev/sdb print
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sdb:85.9GB
Sector size(logical/physical): 512B/512B
Partition Table:msdos
Number Start End Size Type File system 标志
1 512B 20.0GB 20.0GB primary
2 20.0GB 40.0GB 20.0GB primary
[root@test01 ~]#parted /dev/sdb mkpart extend 40G 100%
信息: You may need toupdate /etc/fstab.
[root@test01 ~]#parted /dev/sdb print
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sdb:85.9GB
Sector size(logical/physical): 512B/512B
Partition Table:msdos
Number Start End Size Type File system 标志
1 512B 20.0GB 20.0GB primary
2 20.0GB 40.0GB 20.0GB primary
3 40.0GB 85.9GB 45.9GB extended lba
[root@test01 ~]#
3)新建2个逻辑分区,分别为2GB、10GB
[root@test01 ~]#parted /dev/sdb print
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sdb:85.9GB
Sector size(logical/physical): 512B/512B
Partition Table:msdos
Number Start End Size Type File system 标志
1 512B 20.0GB 20.0GB primary
2 20.0GB 40.0GB 20.0GB primary
3 40.0GB 85.9GB 45.9GB extended lba
[root@test01 ~]#parted /dev/sdb mkpart logical 40G 42G
信息: You may need toupdate /etc/fstab.
[root@test01 ~]#parted /dev/sdb print
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sdb:85.9GB
Sector size(logical/physical): 512B/512B
Partition Table:msdos
Number Start End Size Type File system 标志
1 512B 20.0GB 20.0GB primary
2 20.0GB 40.0GB 20.0GB primary
3 40.0GB 85.9GB 45.9GB extended lba
5 40.0GB 42.0GB 1999MB logical
[root@test01 ~]#
[root@test01 ~]#parted /dev/sdb print
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sdb:85.9GB
Sector size(logical/physical): 512B/512B
Partition Table:msdos
Number Start End Size Type File system 标志
1 512B 20.0GB 20.0GB primary
2 20.0GB 40.0GB 20.0GB primary
3 40.0GB 85.9GB 45.9GB extended lba
5 40.0GB 42.0GB 1999MB logical
[root@test01 ~]#parted /dev/sdb mkpart logical 42G 52G
信息: You may need toupdate /etc/fstab.
[root@test01 ~]#parted /dev/sdb print
Model: VMware,VMware Virtual S (scsi)
Disk /dev/sdb:85.9GB
Sector size(logical/physical): 512B/512B
Partition Table:msdos
Number Start End Size Type File system 标志
1 512B 20.0GB 20.0GB primary
2 20.0GB 40.0GB 20.0GB primary
3 40.0GB 85.9GB 45.9GB extended lba
5 40.0GB 42.0GB 1999MB logical
6 42.0GB 52.0GB 9999MB logical
[root@test01 ~]#
4)使用partx -a /dev/sdb 识别新的分区表 【最好是重启一次】
[root@test01 ~]#partx -a /dev/sdb
BLKPG: Device orresource busy
error addingpartition 1
BLKPG: Device orresource busy
error addingpartition 2
BLKPG: Device orresource busy
error addingpartition 3
BLKPG: Device orresource busy
error addingpartition 5
BLKPG: Device orresource busy
error addingpartition 6
[root@test01 ~]#ls /dev/sdb*
/dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5 /dev/sdb6
[root@test01 ~]#
练习二:格式化分区
1)将/dev/sdb1格式化成ext4分区
[root@test01 ~]#mkfs.ext4 /dev/sdb1
2)将/dev/sdb6格式化成FAT32分区
[root@test01 ~]#mkfs.vfat -F 32 /dev/sdb6
mkfs.vfat 3.0.9(31 Jan 2010)
3)将/dev/sdb1挂载到/mnt/part1,测试读写该分区
[root@test01 ~]#mkdir /mnt/part1
[root@test01 ~]#mount /dev/sdb1 /mnt/part1/
[root@test01 ~]#mount | tail -n 1
/dev/sdb1 on/mnt/part1 type ext4 (rw)
4)将/dev/sdb6挂载到/mnt/part6,测试读写该分区
[root@test01 ~]#mkdir /mnt/part6
[root@test01 ~]#mount /dev/sdb6 /mnt/part6
[root@test01 ~]#mount | tail -n 1
/dev/sdb6 on/mnt/part6 type vfat (rw)
[root@test01 ~]#
5)分别卸载/dev/sdb1、/dev/sdb6
[root@test01 ~]#umount /mnt/part1
[root@test01 ~]#umount /mnt/part6
[root@test01 ~]#
练习三:格式化及管理交换空间
1)查看交换分区:swapon -s
2)格式化交换分区:mkswap /dev/sdb5
3)启用交换分区:swapon /dev/sdb5
4)再次查看交换分区:swapon -s 【与扩展前对比】
5)卸载交换分区 /dev/sdb5:swapoff /dev/sdb5
练习四:查看/识别文件系统
1)为/dev/sdb1设置一个卷标“part1”
[root@test01 ~]#e2label /dev/sdb1
[root@test01 ~]#e2label /dev/sdb1 "part1"
[root@test01 ~]#e2label /dev/sdb1
part1
[root@test01 ~]#
2)采用卷标名识别的方式将/dev/sdb1分区挂载到/mnt/part1
[root@test01 ~]#mount LABEL=part1 /mnt/part1
3)确认第2步挂载结果,再卸载/mnt/part1
[root@test01 ~]#mount | tail -n 1
/dev/sdb1 on/mnt/part1 type ext4 (rw)
[root@test01 ~]#
[root@test01 ~]#umount /mnt/part1
[root@test01 ~]#mount | grep /dev/sdb1
[root@test01 ~]#
4)查看/dev/sdb1分区的UUID值
[root@test01 ~]#blkid /dev/sdb1
/dev/sdb1:LABEL="part1" UUID="b2af1874-1e90-4aea-a3c0-4da2d3482897"TYPE="ext4"
[root@test01 ~]#
5)以UUID识别的方式将/dev/sdb1分区挂载到/mnt/part1
[root@test01 ~]#blkid /dev/sdb1
/dev/sdb1:LABEL="part1" UUID="b2af1874-1e90-4aea-a3c0-4da2d3482897"TYPE="ext4"
[root@test01 ~]#mount UUID="b2af1874-1e90-4aea-a3c0-4da2d3482897" /mnt/part1
[root@test01 ~]#mount | tail -n 1
/dev/sdb1 on/mnt/part1 type ext4 (rw)
[root@test01 ~]#
6)检查/dev/sdb1、/dev/sda1分区最多能存多少个文件(tune2fs -l .. ..)
[root@test01 ~]#tune2fs -l /dev/sdb1 | grep "Inode count"
Inodecount: 1222992
[root@test01 ~]#
练习五:mount挂载参数
1)采用半自动的方式挂载/dev/sdb1设备
[root@test01 ~]#grep /dev/sdb1 /etc/fstab
/dev/sdb1 /mnt/part1 ext4 defaults 0 0
[root@test01 ~]#mount | grep /dev/sdb1
/dev/sdb1 on/mnt/part1 type ext4 (rw)
[root@test01 ~]#umount /dev/sdb1
[root@test01 ~]#mount | grep /dev/sdb1
[root@test01 ~]#mount /dev/sdb1
[root@test01 ~]#mount | grep /dev/sdb1
/dev/sdb1 on/mnt/part1 type ext4 (rw)
[root@test01 ~]#
2)卸载所有磁盘文件系统、挂载所有fstab已记录的文件系统
[root@test01 ~]#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 97G 11G 81G 12% /
/dev/sda1 194M 34M 151M 19% /boot
/dev/sda3 97G 188M 92G 1% /data
tmpfs 238M 0 238M 0% /dev/shm
/ISO/rhel-server-6.5-x86_64-dvd.iso 3.6G 3.6G 0 100%/var/ftp/pub/iso/rhel6.5
/dev/sdb1 19G 172M 18G 1% /mnt/part1
[root@test01 ~]#umount -a
umount: /:device is busy.
(In some cases useful info aboutprocesses that use
the device is found by lsof(8) orfuser(1))
[root@test01 ~]#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 97G 11G 81G 12% /
[root@test01 ~]#
3)重新挂载/dev/sdb1分区,验证noexec
[root@test01 ~]#mount -a
[root@test01 ~]#mount | grep /dev/sdb1
/dev/sdb1 on/mnt/part1 type ext4 (rw)
[root@test01 ~]#mount -o remount,noexec /dev/sdb1
[root@test01 ~]#mount | grep /dev/sdb1
/dev/sdb1 on/mnt/part1 type ext4 (rw,noexec)
[root@test01 ~]#
a)将/bin/uname复制为/mnt/part1/kvn,测试后者是否能执行
[root@test01 ~]#cp /bin/uname /mnt/part1/kvn
[root@test01 ~]#ls -l /mnt/part1/kvn
-rwxr-xr-x. 1root root 27776 2月 2 19:41 /mnt/part1/kvn
[root@test01 ~]#/mnt/part1/kvn
-bash:/mnt/part1/kvn: 权限不够
[root@test01 ~]#
b)新建文件/mnt/part1/acl.txt,尝试设置ACL使用户lisi有权限rwx
[root@test01 ~]#touch /mnt/part1/acl.txt
[root@test01 ~]#useradd lisi
[root@test01 ~]#setfacl -m u:lisi:r /mnt/part1/acl.txt
setfacl:/mnt/part1/acl.txt: 不支持的操作
[root@test01 ~]#
[root@test01 ~]#mount | grep /dev/sdb1
/dev/sdb1 on/mnt/part1 type ext4 (rw,noexec)
[root@test01 ~]#mount -o remount,acl /dev/sdb1
[root@test01 ~]#mount | grep /dev/sdb1
/dev/sdb1 on/mnt/part1 type ext4 (rw,acl)
[root@test01 ~]#setfacl -m u:lisi:r /mnt/part1/acl.txt
[root@test01 ~]#getfacl /mnt/part1/acl.txt
getfacl:Removing leading '/' from absolute path names
# file:mnt/part1/acl.txt
# owner: root
# group: root
user::rw-
user:lisi:r--
group::r--
mask::r--
other::r--
[root@test01 ~]#
练习六:挂载ISO镜像文件(-o loop)
[root@test01 ~]#genisop_w_picpath -o haha.iso /tmp #将tmp目录制作成iso镜像
[root@test01 ~]#mkdir /myiso
[root@test01 ~]#mount -o loop /root/haha.iso /myiso/
[root@test01 ~]#mount | grep haha
/root/haha.isoon /myiso type iso9660 (rw,loop=/dev/loop1)
[root@test01 ~]#
练习七:配置开机自动挂载
1)重开机之后能自动将/dev/sdb1挂载到/part1目录
[root@test01 ~]#grep /dev/sdb1 /etc/fstab
/dev/sdb1 /mnt/part1 ext4 defaults 0 0
[root@test01 ~]#mount -a
[root@test01 ~]#mount | grep /dev/sdb1
/dev/sdb1 on/mnt/part1 type ext4 (rw,acl)
[root@test01 ~]#
2)重开机之后能自动将/dev/sdb6挂载到/part6目录
[root@test01 ~]#grep /dev/sdb6 /etc/fstab
/dev/sdb6 /mnt/part6 vfat defaults 0 0
[root@test01 ~]#mount -a
[root@test01 ~]#mount | grep /dev/sdb6
/dev/sdb6 on/mnt/part6 type vfat (rw)
[root@test01 ~]#
3)扩展SWAP空间
[root@test01 ~]#grep /dev/sdb5 /etc/fstab #注意swap一般用mount -a不起作用
/dev/sdb5 swap swap defaults 0 0
[root@test01 ~]#重启看到效果
练习八:设置自定义触发挂载
1)将分区/dev/sdb2格式化为EXT4文件系统
[root@test01 ~]#mkfs.ext4 /dev/sdb2
2)为分区/dev/sdb2 配置触发挂载(监控+访问点为/misc/tools)
[root@test01 ~]#grep misc /etc/auto.master
/misc /etc/auto.misc
# Note that if thereare entries for /net or /misc (as
[root@test01 ~]#grep tools /etc/auto.misc
tools -fstype=ext4 :/dev/sdb2
[root@test01 ~]#service autofs restart
停止 automount:[确定]
正在启动 automount:[确定]
[root@test01~]#
3)检查已挂载的文件系统,查看触发挂载结果
[root@test01 ~]#ls /misc/tools
lost+found
[root@test01 ~]#mount | grep /dev/sdb2
/dev/sdb2 on/misc/tools type ext4 (rw)
[root@test01 ~]#
一、系统日志管理
1. 日志文件的分类(日志保存在/var/log下)
内核及系统日志
由系统服务rsyslog统一进行管理
/var/log/messages 内核及公共消息日志
/var/log/cron 计划任务日志
/var/log/dmesg 系统引导日志
/var/log/maillog 邮件系统日志
/var/log/secure 记录与访问限制相关日志
用户日志
记录系统用户登录及退出系统的相关信息
/var/log/lastlog 最近的用户登录事件
/var/log/wtmp 用户登录、注销及系统开关机
/var/log/btmp 失败的用户登陆事件
/var/run/utmp 当前登录的每个用户详细信息
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
2. 用户日志分析
users
w 查看当前登陆的用户
who 比w更加简洁
last 最近系统登陆情况
lastb 最近系统登陆失败的情况
3. 系统及内核日志格式
时间标签 主机名 子系统名称 消息
4. rsyslog管理日志
配置文件:/etc/rsyslog.conf
格式如下
服务类别.日志级别 日志消息发送位置
5. 日志消息的级别
连接符号
. 记录大于等于此等级
.= 只记录等于此等级的信息
.! 不等于此等级,也就是记录此等级之外的信息
0 EMERG(紧急) 会导致主机系统不可用的情况
1 ALERT(警告) 必须马上采取措施解决的问题
2 CRIT(严重) 比较严重的情况
3 ERR(错误) 运行出现错误
4 WARNING(提醒) 可能会影响系统功能的事件
5 NOTICE(注意) 不会影响系统但值得注意
6 INFO(信息) 一般信息
7 DEBUG(调试) 程序或系统调试信息等
二、logrotate日志轮转
1. logrotate轮转
减小日志大小,降低分析难度
丢弃过期日志节省空间
结合cron每天执行
2. 软件包
logrotate
3. 主配置文件(daily,weekly, monthly, or yearly)
/etc/logrotate.conf
weekly 轮转频率,默认每周
rotate 4 保留4个轮转备份
create 执行轮转后创建新文件
#compress 是否压缩日志
include /etc/logrotate.d 包含此目录下的配置
/var/log/wtmp { 启用轮转的日志文件
monthly 每月轮转一次
missingok 丢失不提示
notifempty 如果为空则不轮转
minsize1M 日志达到1MB才开始轮转
create0664 root utmp 建新文件并设权限
rotate1 只保留一个备份
}
logrotate 手工执行轮转
-v 启动显示模式
-f 强制rotate
/var/lib/logrotate.status
** size生效的话,会忽略轮转频率
练习一:创建卷组
1)准备3块10G的空闲分区,将类型ID修改为(LVM)
[root@test01 ~]#parted /dev/sdb mktable gpt
警告: 正在使用 /dev/sdb上的分区。
忽略/Ignore/放弃/Cancel?i
警告: The existing disklabel on /dev/sdb will be destroyed and all data on this disk will
be lost. Do youwant to continue?
是/Yes/否/No? y
警告: WARNING: thekernel failed to re-read the partition table on /dev/sdb (设备或资源忙). As a
result, it maynot reflect all of your changes until after reboot.
[root@test01 ~]#
[root@test01 ~]#parted /dev/sdb mkpart primary 0 10G
[root@test01 ~]#parted /dev/sdb mkpart primary 10G 20G
[root@test01 ~]#parted /dev/sdb mkpart primary 20G 30G
[root@test01 ~]#partx -a /dev/sdb
Primary GPT isinvalid, using alternate GPT.
[root@test01 ~]#ls /dev/sdb*
/dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3
[root@test01 ~]#
2)使用其中2块分区组建名为myvg的卷组,查看此卷组信息
a)先检查有哪些物理卷
[root@test01 ~]#pvscan
No matching physical volumes found
[root@test01 ~]#
b)将两块空闲分区转换成物理卷
[root@test01 ~]#pvcreate /dev/sdb1 /dev/sdb2
Physical volume "/dev/sdb1"successfully created
Physical volume "/dev/sdb2"successfully created
c)再检查有哪些物理卷,查看其中一个物理卷的详细信息
[root@test01 ~]#pvscan
PV /dev/sdb1 lvm2 [9.31 GiB]
PV /dev/sdb2 lvm2 [9.31 GiB]
Total: 2 [18.63 GiB] / in use: 0 [0 ] / in no VG: 2 [18.63 GiB]
[root@test01 ~]#
[root@test01 ~]#pvdisplay /dev/sdb1
"/dev/sdb1" is a new physicalvolume of "9.31 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 9.31 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID zEk8cH-OeDL-XlXf-2084-cRmT-4tWt-UvYJae
[root@test01 ~]#
d)先查看有哪些卷组
[root@test01 ~]#vgscan
Reading all physical volumes. This may take a while...
No volume groups found
[root@test01 ~]#
e)将两个物理卷整编成卷组myvg
[root@test01 ~]#vgcreate myvg /dev/sdb1 /dev/sdb2
Volume group "myvg" successfullycreated
[root@test01 ~]#
f)再查看有哪些卷组,并查看卷组myvg的详细信息
[root@test01 ~]#vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 2
......
练习二:创建/使用/扩展逻辑卷
1)划分一个16G的逻辑卷,名称为lvmbox,查看逻辑卷信息
[root@test01 ~]#lvcreate -L 16G -n lvmbox myvg
Logical volume "lvmbox" created
[root@test01 ~]#
[root@test01 ~]#lvdisplay /dev/myvg/lvmbox
--- Logical volume ---
LV Path /dev/myvg/lvmbox
LV Name lvmbox
VG Name myvg
LV UUID d4HvTZ-DX20-x2SE-wUmI-VSuw-GF5y-N3S5ON
LV Write Access read/write
LV Creation host, time test01.tarena.com,2015-02-03 19:17:00 +0800
LV Status available
......
2)将此逻辑卷格式化为ext4文件系统,并挂载到/mbox目录
[root@test01 ~]#mkfs.ext4 /dev/myvg/lvmbox
[root@test01 ~]#mkdir /mbox
[root@test01 ~]#mount /dev/myvg/lvmbox /mbox/
[root@test01 ~]#mount | tail -n 1
/dev/mapper/myvg-lvmboxon /mbox type ext4 (rw)
[root@test01 ~]#
3)进入/mbox目录,测试读写操作
[root@test01 ~]#mount | tail -n 1
/dev/mapper/myvg-lvmboxon /mbox type ext4 (rw)
[root@test01 ~]#cd /mbox/
[root@test01mbox]# touch 1.txt
[root@test01mbox]# ls
1.txt lost+found
[root@test01mbox]#
4)将逻辑卷从16G扩展为24G,确保df识别的大小准确
a)先扩展卷组(增加一个10G物理卷),再扩展逻辑卷
[root@test01 /]#pvcreate /dev/sdb3
Physical volume "/dev/sdb3"successfully created
[root@test01 /]#vgextend myvg /dev/sdb3
Volume group "myvg" successfullyextended
[root@test01 /]#vgs
VG #PV #LV #SN Attr VSize VFree
myvg 3 1 0 wz--n- 27.93g 11.93g
[root@test01 /]#
[root@test01 /]#lvextend -L 24G /dev/myvg/lvmbox
Extending logical volume lvmbox to 24.00 GiB
Logical volume lvmbox successfully resized
[root@test01 /]#
[root@test01 /]#lvs
LV VG Attr LSize Pool Origin Data% Move LogCpy%Sync Convert
lvmbox myvg -wi-ao---- 24.00g
[root@test01 /]#df -h
Filesystem Size Used Avail Use% Mounted on
......
/dev/mapper/myvg-lvmbox 16G 172M 15G 2% /mbox
[root@test01 /]#
b)resize2fs识别新文件系统的大小
[root@test01 /]#resize2fs /dev/myvg/lvmbox
resize2fs1.41.12 (17-May-2010)
Filesystem at/dev/myvg/lvmbox is mounted on /mbox; on-line resizing required
old desc_blocks= 1, new_desc_blocks = 2
Performing anon-line resize of /dev/myvg/lvmbox to 6291456 (4k) blocks.
The filesystemon /dev/myvg/lvmbox is now 6291456 blocks long.
[root@test01 /]#df -h
Filesystem Size Used Avail Use% Mounted on
......
/dev/mapper/myvg-lvmbox 24G 172M 23G 1% /mbox
[root@test01 /]#
5)创建一个大小为250M的逻辑卷lvtest
[root@test01 /]#lvcreate -L 250M -n lvtest myvg
Rounding up size to full physical extent252.00 MiB
Logical volume "lvtest" created
[root@test01 /]#
更改pe的大小
[root@test01 /]#vgchange -s 1M myvg
Volume group "myvg" successfullychanged
[root@test01 /]#vgdisplay | grep PE
PE Size 1.00 MiB
Total PE 28600
Alloc PE / Size 24828 / 24.25 GiB
Free PE / Size 3772 / 3.68 GiB
[root@test01 /]#lvcreate -L 250M -n lvtest01 myvg
Logical volume "lvtest01" created
[root@test01 /]#lvs
LV VG Attr LSize Pool Origin Data% Move LogCpy%Sync Convert
lvmbox myvg -wi-ao---- 24.00g
lvtest myvg -wi-a----- 252.00m
lvtest01 myvg -wi-a----- 250.00m
[root@test01 /]#
练习三:逻辑卷综合应用
1)删除上一练习建立的卷组myvg(要先删除逻辑卷在删除卷组)
[root@test01 /]#lvs
LV VG Attr LSize Pool Origin Data% Move LogCpy%Sync Convert
lvmbox myvg -wi-ao---- 24.00g
lvtest myvg -wi-a----- 252.00m
lvtest01 myvg -wi-a----- 250.00m
[root@test01 /]#umount /dev/myvg/lvmbox
[root@test01 /]#lvremove /dev/myvg/lvmbox
Do you reallywant to remove active logical volume lvmbox? [y/n]: y
Logical volume "lvmbox"successfully removed
[root@test01 /]#lvremove /dev/myvg/lvtest
Do you reallywant to remove active logical volume lvtest? [y/n]: y
Logical volume "lvtest"successfully removed
[root@test01 /]#lvremove /dev/myvg/lvtest01
Do you reallywant to remove active logical volume lvtest01? [y/n]: y
Logical volume "lvtest01"successfully removed
[root@test01 /]#
[root@test01 /]#vgs
VG #PV #LV #SN Attr VSize VFree
myvg 3 0 0 wz--n- 27.93g 27.93g
[root@test01 /]#vgremove myvg
Volume group "myvg" successfullyremoved
[root@test01 /]#
2)使用其中2个物理卷组成卷组vgnsd,另一个物理卷组成卷组vgdata
[root@test01 /]#pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 a-- 9.31g 9.31g
/dev/sdb2 lvm2 a-- 9.31g 9.31g
/dev/sdb3 lvm2 a-- 9.31g 9.31g
[root@test01 /]#vgcreate vgnsd /dev/sdb1 /dev/sdb2
Volume group "vgnsd" successfullycreated
[root@test01 /]#vgcreate vgdata /dev/sdb3
Volume group "vgdata" successfullycreated
[root@test01 /]#
3)从卷组vgnsd中创建一个15G的逻辑卷lvhome
[root@test01 /]#lvcreate -L 15G -n lvhome vgnsd
Logical volume "lvhome" created
[root@test01 /]#
4)从卷组vgdata中创建一个4G的逻辑卷lvswap
[root@test01 /]#lvcreate -L 4G -n lvswap vgdata
Logical volume "lvswap" created
[root@test01 /]#
5)将/home目录迁移到逻辑卷lvhome上
[root@test01 /]#ls /home/
gelin01 gelin02 ht02 lisi zhangsan
[root@test01 /]#mkdir /homebak
[root@test01 /]#mv /home/* /homebak/
[root@test01 /]#ls /home
[root@test01 /]#mkfs.ext4 /dev/vgnsd/lvhome
[root@test01 /]#mount /dev/vgnsd/lvhome /home
[root@test01 /]#mv /homebak/* /home
[root@test01 /]#ls /home
gelin01 gelin02 ht02 lisi lost+found zhangsan
[root@test01 /]#
6)将逻辑卷lvswap扩展到交换空间
[root@test01 /]#mkswap /dev/vgdata/lvswap
mkswap:/dev/vgdata/lvswap: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting upswapspace version 1, size = 4194300 KiB
no label,UUID=421e16ea-67f8-4821-9127-d010387ddd5c
[root@test01 /]#swapon /dev/vgdata/lvswap
[root@test01 /]#swapon -s
Filename Type Size Used Priority
/dev/sda5 partition 8388600 0 -1
/dev/dm-1 partition 4194296 0 -2
[root@test01 /]#
7)为第5、6步配置开机自动挂载,重启后验证
[root@test01 /]#tail -n 2 /etc/fstab
/dev/vgnsd/lvhome /home ext4 defaults 0 0
/dev/vgdata/lvswap swap swap defaults 0 0
[root@test01 /]#
练习四:系统服务启动控制
1)检查系统里有多少个独立服务
[root@test01 /]#ls -l /etc/init.d/ | wc -l
61
[root@test01 /]#
2)查看autofs服务是否启动
[root@test01 /]#/etc/init.d/autofs status
automount(pid 1422) 正在运行...
[root@test01 /]#
3)停止autofs服务,再次查看服务的运行状态、
[root@test01 /]#/etc/init.d/autofs stop
停止 automount:[确定]
[root@test01 /]#/etc/init.d/autofs status
automount 已停
[root@test01 /]#
4)查看network服务支持哪几种控制方式
[root@test01 /]#/etc/init.d/network
用法:/etc/init.d/network{start|stop|status|restart|reload|force-reload}
[root@test01 /]#
5)重启bluetooth、network服务
[root@test01 /]#/etc/init.d/bluetooth restart
用法:/etc/init.d/bluetooth{start|stop}
[root@test01 /]#/etc/init.d/bluetooth stop
StoppingBluetooth services:
[root@test01 /]#/etc/init.d/bluetooth start
启动蓝牙设备:
[root@test01 /]#/etc/init.d/network restart
正在关闭接口 eth0: [确定]
关闭环回接口: [确定]
弹出环回接口: [确定]
弹出界面 eth0: Determiningif ip address 192.168.10.10 is already in use for device eth0...
[确定]
[root@test01 /]#
6)启动vsftpd和httpd服务
[root@test01 /]#yum -y install vsftpd
[root@test01 /]#/etc/init.d/vsftpd restart
关闭 vsftpd:[确定]
为 vsftpd 启动 vsftpd:[确定]
[root@test01 /]#
[root@test01 /]#yum -y install httpd
[root@test01 /]#/etc/init.d/httpd restart
停止 httpd:[失败]
正在启动 httpd:httpd:apr_sockaddr_info_get() failed for test01.tarena.com
httpd: Could notreliably determine the server's fully qualified domain name, using 127.0.0.1for ServerName
[确定]
[root@test01 /]#
7)验证vsftpd和httpd服务是否启动成功
[root@test01 /]#/etc/init.d/vsftpd status
vsftpd (pid2362) 正在运行...
[root@test01 /]#/etc/init.d/httpd status
httpd (pid 2396) 正在运行...
[root@test01 /]#
练习五:临时服务启动控制
1)检查系统里有多少个临时服务
[root@test01 /]#ls -l /etc/xinetd.d/
总用量 4
-rw-r--r--. 1root root 332 10月 23 2013 rsync
[root@test01 /]#
2)启动telnet服务(telnet软件包叫telnet-server)
[root@test01 /]#yum -y install telnet-server
[root@test01 /]#grep disable /etc/xinetd.d/telnet
disable = no
[root@test01 /]#/etc/init.d/xinetd restart
停止 xinetd:[失败]
正在启动 xinetd:[确定]
[root@test01/]#
练习六:自启状态控制(chkconfig)
1)查看所有系统服务在不同运行级别的自启状态
[root@test01 /]#chkconfig --list
2)查看autofs服务的自启状态
[root@test01 /]#chkconfig --list autofs
autofs 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
[root@test01 /]#
3)将autofs服务在运行级别3、5的自启状态设为关闭
[root@test01 /]#chkconfig --level 35 autofs off
[root@test01 /]#chkconfig --list autofs
autofs 0:关闭 1:关闭 2:关闭 3:关闭 4:启用 5:关闭 6:关闭
[root@test01 /]#
4)将autofs服务在所有运行级别的自启状态设为关闭
[root@test01 /]#chkconfig --level 0123456 autofs off
[root@test01 /]#chkconfig --list autofs
autofs 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
[root@test01 /]#
5)将autofs服务运行级别3、5的自启状态设为开启
[root@test01 /]#chkconfig --level 35 autofs on
[root@test01 /]#chkconfig --list autofs
autofs 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
[root@test01 /]#
6)确保vsftpd和httpd开机自启动
[root@test01 /]#chkconfig vsftpd on
[root@test01 /]#chkconfig httpd on
[root@test01 /]#chkconfig --list vsftpd
vsftpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@test01 /]#chkconfig --list httpd
httpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@test01 /]#
练习七:减少Linux资源占用(ntsysv)
1)将不常用服务在运行级别3、5的自启状态设为关闭
NetworkManager、bluetooth、cupspeed
firstboot、ip6tables、iptables、rhnsd、rhsmcertd
计划任务管理
Linux系统引导过程
进程管理
#################################################
一、计划任务管理
1. at 一次性执行进程atd /var/spool/at下
date 查看当前时间
atq 查询at任务
atrm 删除at任务
# at 10:05
# at 10:052013-12-20
# at 10pmdecember 14
# at now +5[minutes|hours|days|weeks]
2. cron 周期性任务服务名crond /var/spool/cron
软件包
vixie-cron
crontabs
crontab -e [ -uusername] 编辑
-l 查看
-r 删除
格式:
分 时 日 月 周 命令
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
3. 计划任务授权
at任务控制
/etc/at.allow、/etc/at.deny
crond任务控制
/etc/cron.allow、/etc/cron.deny
如果allow文件存在,则仅允许指定的用户
否则检查deny文件,除指定用户外其余都允许
如果两个文件都不存在,则只允许root使用
4. cron计划中断与补救
anacron延时补救
/etc/init.d/anacron
/etc/anacrontab
1 65 cron.daily run-parts/etc/cron.daily
1天 65分钟后
二、Linux系统引导过程
1. Linux引导过程
加电自检-->MBR扇区-->GRUB配置(/boot/grub/grub.conf)
-->root(hd0,0)
kernel (/boot/vmlinuz-....) -->/sbin/init (PID恒为1)
initrd (/boot/initrd-... .img)
-->/etc/inittab:
/etc/rc.d/rc.sysinit
/etc/rc.d/rc 级别 (initdefault默认级别)(0、1、3、5、6)
--> /etc/rcX.d/快捷方式 (S75服务名、K24服务名)
-->/etc/rc.d/init.d/服务脚本
-->S99local --> /etc/rc.local (自定开机任务)
mingetty tty1-tty6 -->
--> login --> 验证用户配置(passwd、shadow)
--> /bin/bash -->用户正常执行命令
** 如果进入运行级别5,则继续 -->GNOME桌面环境 --> 登录窗口
2. RHEL5的运行级别
各运行级别含义:
0:关机
1:单用户模式
2:字符界面的多用户模式(不支持网络)
3:字符界面的完整多用户模式
4:未分配使用
5:图形界面的多用户模式
6:重启
查看运行级别:runlevel
** 输出结果为2个值(前一次级别 当前级别)
** 若前一次为N,表示开机后未执行过切换
手动切换运行级别:init 级别
比如:init 3、init 5、init 0、init 6
3. 主要的启动配置文件
/etc/inittab:配置init程序的引导过程
/etc/rc.d/rc.sysinit:由init调用执行,设置网络/时钟、加载文件系统等一系列工作
/etc/rc.d/rc:由init调用执行,根据运行级别参数,加载/终止相应服务
/etc/rc.d/rc.local:由rc脚本调用执行,存放用户自定义的开机后自动执行的命令
/etc/rc.d/init.d/*:各系统服务的可执行脚本程序
** 上述路径中的 rc.d 通常可以省略,因为默认建立有相关的快捷方式
** 比如 /etc/init.d ->/etc/rc.d/init.d、 /etc/rc.local -> /etc/rc.d/rc.local
4. 设置默认运行级别
[root@svr5 ~]#vim /etc/inittab
id:3:initdefault: 【修改为对应的运行级别值】
5. 禁用TTY控制台的Ctrl+Alt+Del热键重启功能
[root@svr5 ~]#vim /etc/init/control-alt-delete.conf
#ca::ctrlaltdel:/sbin/shutdown-t3 -r now 【注释掉此行】
三、进程管理
1. 查看进程信息
查看所有进程的静态快照:ps aux、ps -elf
** 常见的STAT状态指示:R 运行中、S 休眠状态、Z 僵死状态
查看进程的动态排名:top、top -d5
查看进程树:pstree、pstree PID、pstree 用户名
常用命令选项
-a:显示完整的命令行
-u:列出各进程所属的用户名
-p:列出对应的PID号
按条件检索进程:
pgrep 关键词、pgrep -U 用户名、pgrep -t 终端名
** 加选项 -l 可同时输出进程名,否则只输出PID
2. 进程的前后台调度
直接启动后台任务: 命令行 &
挂起当前任务(转入后台并暂停运行):快捷键Ctrl + z
终止当前任务:快捷键 Ctrl + c
查看后台任务列表:jobs 、jobs -l
将后台任务恢复到前台运行:fg、fg 任务编号
激活后台被挂起的任务:bg、bg 任务编号
** 未指定序号时,缺省为最近1个后台任务
3. 关闭进程
按PID杀死进程:kill PID、kill -9 PID
按进程名杀死进程:killall 进程名
按条件检索并杀死进程:
pkill 关键词、pkill -U 用户名、pkill -t 终端名
** 用法与 pgrep类似
图形桌面下点杀窗口程序:xkill
一、查看及测试网络
1. 查看网络
1)查看网卡的IP/MAC信息
ifconfig、ifconfig -a、ifconfig 接口名 【-a列出所有接口】
** HWaddr: 对应的是网卡的MAC地址
** inet addr: 对应的是IPv4地址
** 主要接口类型:
ethN 以太网连接、lo 本地回环接口
sitN:ipv6地址网卡接口
fddN:光纤网卡
PPPN:ADSL宽带或×××连接
2) 查看主机名
hostname
3)查看路由表条目
route -n 或 netstat -rn
** 标记为“UG”的表示网关记录
** 到目标网段 0.0.0.0/0.0.0.0网关记录称为“默认网关”
4)查看网络连接状况
格式:netstat [选项]...
常用选项:
-a:显示所有活动连接
-n:以数字形式显示
-p:显示进程信息
-t:查看TCP连接信息
-u:查看UDP连接信息
** 状态 LISTEN 表示有对应监听的网络服务
** 状态 ESTABLISHED 表示已建立的TCP连接
** 状态 TIME_WAIT 表示在等待客户端请求的连接
** 用法示例:
netstat -anptu | grep :80 ==>查看Web服务的监听状态进程
netstat -anptu | grep httpd ==>查看httpd进程的监听端口
5)查看 arp缓存表
arp -an
2. 测试网络
1)测网络连通性
格式:ping 目标主机
** 选项 -c 包个数、-s 包大小
** 默认会持续ping,按Ctrl+c可终止
** 返回 “xx bytes from 目标主机...” 表示连接正常
** 返回 “Request timeout” 表示网络不通,或者延迟较大
** 返回 “Network isunreachable”表示网络不可达,通常是未设置默认网关
** 返回 “Destination HostUnreachable”表示目标主机不可达,配置不通或未开机
2)测试域名解析
格式:host 目标主机 [DNS服务器]
nslookup 目标主机 [DNS服务器]
** 必须有可用的DNS服务器,否则将无法解析
** 若无法解析域名,就不能以域名的方式访问目标站点
** 若测试时未指定DNS服务器地址,则使用/etc/resolv.conf中设置的地址
3)跟踪路由过程
格式:tracert 目标地址
traceroute 目标地址
mtr 目标地址 【集成ping和tracert优势】
二、配置网络地址
1. 主要配置方式
临时配置:命令行调整,重启后失效
ifconfig、hostname、route、arp
固定配置:静态文件,重启后仍然有效
|
|--> 主机名、网卡、DNS、hosts
** 修改网卡配置文件 --> 重启network服务
2. 临时配置
修改IP地址:
ifconfig 接口名称 IP地址[/掩码长度]
禁用、激活网络接口
ifconfig 接口 down
ifconfig 接口 up
修改主机名:
hostname 新的主机名
添加/删除默认网关记录
route add default gw IP地址
route del default gw IP地址
添加静态路由
route add -net 目标网段 gw IP地址
route del -net 目标网段
3. 配置文件路径:
网卡配置:/etc/sysconfig/network-scripts/ifcfg-接口名
--> IP地址、MAC地址、子网掩码、默认网关
** 典型配置含义:
DEVICE=eth0 //设备名
TYPE=Ethernet //网络类型
BOOTPROTO=none //或者dhcp、static
HWADDR=00:0C:29:82:09:E9 //物理MAC地址
ONBOOT=yes //是否启用
NETMASK=255.255.255.0 //子网掩码
IPADDR=192.168.8.128 //指定的静态IP地址
**可以通过MACADDR=00:0C:29:82:09:E8修改mac地址注意注释原来的行
主机名配置:/etc/sysconfig/network
HOSTNAME=新的主机名
GATEWAY=192.168.8.1 //默认网关地址
DNS设置:/etc/resolv.conf
search localdomain //默认搜索域/后缀
nameserver 192.168.4.1 //DNS服务器1的IP地址
nameserver 202.106.0.20 //DNS服务器2的IP地址
** 还可在网卡配置中设置 DNS1=、DNS2= 来指定,但不推荐使用
** 因为重启 network 服务后,还是会自动写入到/etc/resolv.conf 文件内
本地主机名映射文件:/etc/hosts
** 用来存放“主机名IP地址”映射记录
** 可提高域名解析效率(先找hosts文件,再找DNS服务器)
静态路由:/etc/sysconfig/network-scripts/route-eth1
cat/etc/sysconfig/network-scripts/route-eth1
10.0.0.0/8 via 192.168.10.252 dev eth1
去往的网段 via 下一跳地址 dev 出口设备
三、Linux远程控制
OpenSSH,Secure SHell
服务端程序:sshd
服务配置:/etc/ssh/sshd_config
Port 22 【SSH协议的标准端口】
UseDNS no 【不使用DNS解析】
Linux客户端的SSH程序
远程登录:
ssh 用户名@服务器地址
ssh -X 用户名@服务器地址
** 客户端得运行在桌面下,手动加载图形程序)
远程安全复制:
scp -r 用户名@服务器地址:/文件路径 本地路径
scp -r 本地文件或目录路径 用户名@服务器地址:远程路径
Windows客户端的SSH程序
SecureCRT
Putty(....)
F-Secure
WinSCP
练习一:rwx权限验证
1)以普通用户zhangsan登入
a)检查/etc/passwd、/etc/shadow文件的权限
[root@test01 ~]#useradd zhangsan
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ ls -l /etc/passwd /etc/shadow
-rw-r--r--. 1root root 1623 2月 1 19:29 /etc/passwd
----------. 1root root 939 2月 1 19:29 /etc/shadow
[zhangsan@test01~]$
b)尝试查看/etc/passwd、/etc/shadow文件的开头两行
[zhangsan@test01~]$ head -n 2 /etc/passwd /etc/shadow
==>/etc/passwd <==
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
head: 无法打开"/etc/shadow"读取数据: 权限不够
[zhangsan@test01~]$
c)检查/root/、/home/lisi/目录的权限
[root@test01 ~]#useradd lisi
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ ls -ld /root/
dr-xr-x---. 27root root 4096 2月 1 19:26 /root/
[zhangsan@test01~]$ ls -ld /home/lisi
drwx------. 4lisi lisi 4096 2月 1 19:30 /home/lisi
[zhangsan@test01~]$
d)尝试查看/root/、/home/lisi目录下有哪些内容
[zhangsan@test01~]$ ls /home/lisi/
ls: 无法打开目录/home/lisi/:权限不够
[zhangsan@test01~]$ ls /root/
ls: 无法打开目录/root/:权限不够
[zhangsan@test01~]$
2)以root用户登入
a)检查/home/zhangsan/目录的权限
[root@test01 ~]#ls -ld /home/lisi/
drwx------. 4lisi lisi 4096 2月 1 19:30 /home/lisi/
[root@test01 ~]#
b)将文件/root/install.log复制到/home/zhangsan/目录下
[root@test01 ~]#ls /home/zhangsan/
ls.help
[root@test01 ~]#cp /root/install.log /home/zhangsan/
[root@test01 ~]#ls /home/zhangsan/
install.log ls.help
[root@test01 ~]#
c)在/home/zhangsan/目录下创建一个子目录rootdir
[root@test01 ~]#ls /home/zhangsan
install.log ls.help
[root@test01 ~]#mkdir -p /home/zhangsan/rootdir
[root@test01 ~]#ls /home/zhangsan
install.log ls.help rootdir
[root@test01 ~]#
3)再次以普通用户zhangsan登入
a)检查家目录下install.log文件、rootdir/目录的权限
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ ls
install.log ls.help rootdir
[zhangsan@test01~]$ ls -l
总用量 52
-rw-r--r--. 1root root 39321 2月 1 19:33 install.log
-rw-r--r--. 1zhangsan zhangsan 6513 1月 28 18:48 ls.help
drwxr-xr-x. 2root root 4096 2月 1 19:34 rootdir
b)将install.log文件改名为inst.txt,将rootdir/目录改名为rtdir
[zhangsan@test01~]$ ls
install.log ls.help rootdir
[zhangsan@test01~]$ mv install.log inst.txt
[zhangsan@test01~]$ ls
inst.txt ls.help rootdir
[zhangsan@test01~]$ mv rootdir/ rtdir
[zhangsan@test01~]$ ls
inst.txt ls.help rtdir
[zhangsan@test01~]$
c)删除文件inst.txt,删除目录rtdir/
[zhangsan@test01~]$ ls
inst.txt ls.help rtdir
[zhangsan@test01~]$ rm -rf *
[zhangsan@test01~]$ ls
[zhangsan@test01~]$
练习二:chmod权限设置1(字符方式)
1)新建/nsddir/目录,在该目录下新建文件readme.txt
[root@test01 ~]#whoami
root
[root@test01 ~]#mkdir /nsddir
[root@test01 ~]#touch /nsddir/readme.txt
[root@test01 ~]#ls /nsddir/
readme.txt
[root@test01 ~]#
2)使用户zhangsan能够在/nsddir/目录下创建/删除子目录
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ cd /nsddir/
[zhangsan@test01nsddir]$ ls
readme.txt
[zhangsan@test01nsddir]$ mkdir zhangsandir
mkdir: 无法创建目录"zhangsandir":权限不够
[zhangsan@test01nsddir]$ exit
logout
[root@test01 ~]#chmod o+w /nsddir/
[root@test01 ~]#ls -ld /nsddir/
drwxr-xrwx. 2root root 4096 2月 1 19:39 /nsddir/
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ cd /nsddir/
[zhangsan@test01nsddir]$ ls
readme.txt
[zhangsan@test01nsddir]$ mkdir zhangsandir
[zhangsan@test01nsddir]$ ls
readme.txt zhangsandir
[zhangsan@test01nsddir]$
3)使用户zhangsan能够修改/nsddir/readme.txt文件的容
[zhangsan@test01nsddir]$ whoami
zhangsan
[zhangsan@test01nsddir]$ ls
readme.txt zhangsandir
[zhangsan@test01nsddir]$ echo 123 > readme.txt
-bash:readme.txt: 权限不够
[zhangsan@test01nsddir]$ exit
logout
[root@test01 ~]#chmod o+w /nsddir/readme.txt
[root@test01 ~]#ls -l /nsddir/readme.txt
-rw-r--rw-. 1root root 0 2月 1 19:39 /nsddir/readme.txt
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ cd /nsddir/
[zhangsan@test01nsddir]$ echo 123 > readme.txt
[zhangsan@test01nsddir]$ cat readme.txt
123
[zhangsan@test01nsddir]$
4)调整/nsddir/目录的权限,使任何用户都不能进入该目录
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ cd /nsddir/
[zhangsan@test01nsddir]$ exit
logout
[root@test01 ~]#chmod a-x /nsddir/
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ cd /nsddir/
-bash: cd:/nsddir/: 权限不够
[zhangsan@test01~]$
5)测试用户zhangsan是否还能修改/nsddir/readme.txt文件的内容
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ echo 1234 > /nsddir/readme.txt
-bash:/nsddir/readme.txt: 权限不够
[zhangsan@test01~]$
6)将/nsddir/目录及其下所有内容的权限都设置为 rwxr-x---
[root@test01 ~]#chmod -R 750 /nsddir/
[root@test01 ~]#ls -l /nsddir/
总用量 8
-rwxr-x---. 1root root 4 2月 1 19:43 readme.txt
drwxr-x---. 2zhangsan zhangsan 4096 2月 1 19:40 zhangsandir
[root@test01 ~]#
练习三:chmod权限设置2(数值方式)
1)参考练习二 (测试目录/nsddir改为/nsddir1)
练习四:目录/文件的默认权限
1)新建目录tdir1,同时将权限设为rwxr-xr-x
[root@test01 ~]#mkdir -m 755 /tdir1
[root@test01 ~]#ls -ld /tdir1/
drwxr-xr-x. 2 rootroot 4096 2月 1 19:51 /tdir1/
[root@test01 ~]#
2)以用户root登入,测试umask掩码值
a)查看当前的umask值
[root@test01 ~]#umask
0022
[root@test01 ~]#
b)新建目录udir1、文件ufile1,查看默认权限
[root@test01 ~]#mkdir udir1
[root@test01 ~]#touch ufile1
[root@test01 ~]#ls -ld udir1/ ufile1
drwxr-xr-x. 2root root 4096 2月 1 19:53 udir1/
-rw-r--r--. 1root root 0 2月 1 19:53 ufile1
[root@test01 ~]#
c)将umask设为077,再新建目录udir2、文件ufile2,查看默认权限,再将umask值改回022
[root@test01 ~]#umask 077
[root@test01 ~]#umask
0077
[root@test01 ~]#mkdir udir2
[root@test01 ~]#touch ufile2
[root@test01 ~]#ls -ld udir2/ ufile2
drwx------. 2root root 4096 2月 1 19:54 udir2/
-rw-------. 1root root 0 2月 1 19:54 ufile2
[root@test01 ~]#umask 022
[root@test01 ~]#umask
0022
[root@test01 ~]#
3)以用户zhangsan登入,测试umask掩码值
a)查看当前的umask值
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ umask
0002
[zhangsan@test01~]$
b)新建目录udir1、文件ufile1,查看默认权限
[zhangsan@test01~]$ mkdir udir1
[zhangsan@test01~]$ touch ufile1
[zhangsan@test01~]$ ls -ld udir1/ ufile1
drwxrwxr-x. 2zhangsan zhangsan 4096 2月 1 19:56 udir1/
-rw-rw-r--. 1zhangsan zhangsan 0 2月 1 19:56 ufile1
[zhangsan@test01~]$
c)将umask设为077,再新建目录udir2、文件ufile2,查看默认权限,再将umask值改回002
[zhangsan@test01~]$ umask
0002
[zhangsan@test01~]$ umask 077
[zhangsan@test01~]$ umask
0077
[zhangsan@test01~]$ mkdir udir2
[zhangsan@test01~]$ touch ufile2
[zhangsan@test01~]$ ls -ld udir2 ufile2
drwx------. 2zhangsan zhangsan 4096 2月 1 19:57 udir2
-rw-------. 1zhangsan zhangsan 0 2月 1 19:57 ufile2
[zhangsan@test01~]$ umask 002
[zhangsan@test01~]$ umask
0002
[zhangsan@test01~]$
练习五:chown归属设置
1)新建/tarena1目录
a)将属主设为gelin01,属组设为tarena组
[root@test01 ~]#mkdir /tarena1
[root@test01 ~]#useradd gelin01
[root@test01 ~]#groupadd tarena
[root@test01 ~]#ls -ld /tarena1/
drwxr-xr-x. 2root root 4096 2月 1 19:58 /tarena1/
[root@test01 ~]#chown gelin01:tarena /tarena1/
[root@test01 ~]#ls -ld /tarena1/
drwxr-xr-x. 2gelin01 tarena 4096 2月 1 19:58 /tarena1/
[root@test01 ~]#
b)使用户gelin01对此目录具有rwx权限,其他人对此目录无任何权限
[root@test01 ~]#ls -ld /tarena1/
drwxr-xr-x. 2gelin01 tarena 4096 2月 1 19:58 /tarena1/
[root@test01 ~]#chmod o=- /tarena1/
[root@test01 ~]#ls -ld /tarena1/
drwxr-x---. 2gelin01 tarena 4096 2月 1 19:58 /tarena1/
[root@test01 ~]#
2)使用户gelin02能进入、查看/tarena1文件夹
[root@test01 ~]#ls -ld /tarena1/
drwxr-x---. 2gelin01 tarena 4096 2月 1 19:58 /tarena1/
[root@test01 ~]#useradd -G tarena gelin02
[root@test01 ~]#su - gelin02
[gelin02@test01~]$ cd /tarena1/
[gelin02@test01tarena1]$ ls
[gelin02@test01tarena1]$
3)新建/tarena2目录
a)将属组设为tarena
[root@test01 ~]#mkdir /tarena2
[root@test01 ~]#ls -ld /tarena2
drwxr-xr-x. 2root root 4096 2月 1 20:02 /tarena2
[root@test01 ~]#chown :tarena /tarena2
[root@test01 ~]#ls -ld /tarena2
drwxr-xr-x. 2root tarena 4096 2月 1 20:02 /tarena2
[root@test01 ~]#
b)使tarena组的任何用户都能在此目录下创建、删除文件
[root@test01 ~]#chmod g=rwx /tarena2
[root@test01 ~]#ls -ld /tarena2
drwxrwxr-x. 2root tarena 4096 2月 1 20:02 /tarena2
[root@test01 ~]#id gelin02
uid=503(gelin02)gid=504(gelin02) 组=504(gelin02),503(tarena)
[root@test01 ~]#su - gelin02
[gelin02@test01~]$ cd /tarena2
[gelin02@test01tarena2]$ mkdir gelin02
[gelin02@test01tarena2]$ ls
gelin02
[gelin02@test01tarena2]$
4)新建/tarena/public目录
a)使任何用户对此目录都有写入权限
[root@test01 ~]#mkdir -p /tarena/public
[root@test01 ~]#chmod 777 /tarena/public/
[root@test01 ~]#ls -ld /tarena/public/
drwxrwxrwx. 2root root 4096 2月 1 20:07 /tarena/public/
[root@test01 ~]#
b)以用户zhangsan登入,在此目录下创建子目录zhsdir、文件zhsfile
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ mkdir /tarena/public/zhsdir
[zhangsan@test01~]$ touch /tarena/public/zhsfile
[zhangsan@test01~]$ ls /tarena/public/
zhsdir zhsfile
[zhangsan@test01~]$
c)以用户lisi登入,将zhsdir改名为lsdir、删除文件zhsfile
[root@test01 ~]#su - lisi
[lisi@test01 ~]$cd /tarena/public/
[lisi@test01public]$ ls
zhsdir zhsfile
[lisi@test01public]$ mv zhsdir/ lsdir
[lisi@test01public]$ rm -rf zhsfile
[lisi@test01 public]$ls
lsdir
[lisi@test01public]$
练习六:粘滞位权限
1)为/tarena/public/目录设置粘滞位权限,所有人都有权写入
[root@test01 ~]#ls -ld /tarena/public/
drwxrwxrwx. 3root root 4096 2月 1 20:10 /tarena/public/
[root@test01 ~]#chmod o+t /tarena/public/
[root@test01 ~]#ls -ld /tarena/public/
drwxrwxrwt. 3root root 4096 2月 1 20:10 /tarena/public/
[root@test01 ~]#
2)以用户zhangsan登入,在/tarena/public/目录下创建文件zhsfile2
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ touch /tarena/public/zhsfile2
[zhangsan@test01~]$ ls -l /tarena/public/zhsfile2
-rw-rw-r--. 1zhangsan zhangsan 0 2月 1 20:12/tarena/public/zhsfile2
[zhangsan@test01~]$
3)以用户lisi登入,在/tarena/public/目录下创建文件lsfile2
[root@test01 ~]#su - lisi
[lisi@test01 ~]$touch /tarena/public/lsfile2
a)查看文件zhsfile2、lsfile2的权限和归属
[lisi@test01 ~]$ls -l /tarena/public/
总用量 4
drwxrwxr-x. 2zhangsan zhangsan 4096 2月 1 20:08 lsdir
-rw-rw-r--. 1lisi lisi 0 2月 1 20:14 lsfile2
-rw-rw-r--. 1zhangsan zhangsan 0 2月 1 20:12 zhsfile2
[lisi@test01 ~]$
b)尝试删除zhsfile2、lsfile2文件
[lisi@test01 ~]$rm -rf /tarena/public/zhsfile2
rm: 无法删除"/tarena/public/zhsfile2":不允许的操作
[lisi@test01 ~]$
练习七:setfacl基本操作
1)创建一个目录 /public/,将权限设置为755
[root@test01 ~]#mkdir /public
[root@test01 ~]#ls -ld /public/
drwxr-xr-x. 2 rootroot 4096 2月 1 20:15 /public/
[root@test01 ~]#chmod 755 /public/
[root@test01 ~]#ls -ld /public/
drwxr-xr-x. 2root root 4096 2月 1 20:15 /public/
[root@test01 ~]#
2)查看目录 /public/ 的ACL策略
[root@test01 ~]#getfacl /public/
getfacl:Removing leading '/' from absolute path names
# file: public/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@test01 ~]#
3)为目录 /public/ 设置ACL策略
a)使用户zhangsan有权限写入,验证效果
[root@test01 ~]#ls -ld /public/
drwxr-xr-x. 2root root 4096 2月 1 20:15 /public/
[root@test01 ~]#setfacl -m u:zhangsan:rwx /public/
[root@test01 ~]#getfacl /public/
getfacl:Removing leading '/' from absolute path names
# file: public/
# owner: root
# group: root
user::rwx
user:zhangsan:rwx
group::r-x
mask::rwx
other::r-x
[root@test01 ~]#su - zhangsan
[zhangsan@test01~]$ mkdir /public/zhsdir
[zhangsan@test01~]$ ls -ld /public/zhsdir/
drwxrwxr-x. 2zhangsan zhangsan 4096 2月 1 20:33 /public/zhsdir/
[zhangsan@test01~]$
b)使用户lisi无任何权限,验证效果
[root@test01 ~]#setfacl -m u:lisi:- /public/
[root@test01 ~]#getfacl /public/
getfacl:Removing leading '/' from absolute path names
# file: public/
# owner: root
# group: root
user::rwx
user:zhangsan:rwx
user:lisi:---
group::r-x
mask::rwx
other::r-x
[root@test01 ~]#su - lisi
[lisi@test01 ~]$ls /public/
ls: 无法打开目录/public/:权限不够
[lisi@test01 ~]$
4)为用户zhangsan的家目录设置ACL策略
a)使用户lisi有权限写入,验证效果
[root@test01 ~]#ls -ld /home/zhangsan/
drwx------. 6zhangsan zhangsan 4096 2月 1 19:57 /home/zhangsan/
[root@test01 ~]#setfacl -m u:lisi:rwx /home/zhangsan/
[root@test01 ~]#getfacl /home/zhangsan/
getfacl:Removing leading '/' from absolute path names
# file:home/zhangsan/
# owner:zhangsan
# group:zhangsan
user::rwx
user:lisi:rwx
group::---
mask::rwx
other::---
[root@test01 ~]#su - lisi
[lisi@test01 ~]$mkdir /home/zhangsan/lsdir
[lisi@test01 ~]$ls -ld /home/zhangsan/lsdir/
drwxrwxr-x. 2lisi lisi 4096 2月 1 20:36/home/zhangsan/lsdir/
[lisi@test01 ~]$
b)使tarena组的任何用户都有权进入和查看,验证效果
[root@test01 ~]#setfacl -m g:tarena:rx /home/zhangsan/
[root@test01 ~]#getfacl /home/zhangsan/
getfacl:Removing leading '/' from absolute path names
# file:home/zhangsan/
# owner:zhangsan
# group:zhangsan
user::rwx
user:lisi:rwx
group::---
group:tarena:r-x
mask::rwx
other::---
[root@test01 ~]#id gelin02
uid=503(gelin02)gid=504(gelin02) 组=504(gelin02),503(tarena)
[root@test01 ~]#su - gelin02
[gelin02@test01~]$ ls -l /home/zhangsan/
总用量 12
drwxrwxr-x. 2lisi lisi 4096 2月 1 20:36 lsdir
drwxrwxr-x. 2zhangsan zhangsan 4096 2月 1 19:56 udir1
drwx------. 2zhangsan zhangsan 4096 2月 1 19:57 udir2
-rw-rw-r--. 1zhangsan zhangsan 0 2月 1 19:56 ufile1
-rw-------. 1zhangsan zhangsan 0 2月 1 19:57 ufile2
[gelin02@test01~]$
5)删除 /public/ 目录上设置的针对用户zhangsan的ACL策略
[root@test01 ~]#getfacl /public/
getfacl:Removing leading '/' from absolute path names
# file: public/
# owner: root
# group: root
user::rwx
user:zhangsan:rwx
user:lisi:---
group::r-x
mask::rwx
other::r-x
[root@test01 ~]#setfacl -x u:zhangsan /public/
[root@test01 ~]#getfacl /public/
getfacl:Removing leading '/' from absolute path names
# file: public/
# owner: root
# group: root
user::rwx
user:lisi:---
group::r-x
mask::r-x
other::r-x
[root@test01 ~]#
6)删除用户zhangsan家目录上设置的所有ACL策略
[root@test01 ~]#getfacl /home/zhangsan/
getfacl:Removing leading '/' from absolute path names
# file:home/zhangsan/
# owner:zhangsan
# group:zhangsan
user::rwx
user:lisi:rwx
group::---
group:tarena:r-x
mask::rwx
other::---
[root@test01 ~]#setfacl -b /home/zhangsan/
[root@test01 ~]#getfacl /home/zhangsan/
getfacl:Removing leading '/' from absolute path names
# file:home/zhangsan/
# owner:zhangsan
# group:zhangsan
user::rwx
group::---
other::---
[root@test01 ~]#
练习八:setfacl自动继承(default权限)
1)为目录 /public/ 设置ACL策略,使用户gelin01具有rwx权限
[root@test01 ~]#setfacl -m u:gelin01:rwx /public/
[root@test01 ~]#getfacl /public/
getfacl:Removing leading '/' from absolute path names
# file: public/
# owner: root
# group: root
user::rwx
user:lisi:---
user:gelin01:rwx
group::r-x
mask::rwx
other::r-x
[root@test01 ~]#
2)在 /public/ 下创建子目录gdir1、文件gfile1,分别查看其ACL策略
[root@test01 ~]#mkdir /public/gdir1
[root@test01 ~]#touch /public/gfile1
[root@test01 ~]#getfacl /public/gdir1/
getfacl:Removing leading '/' from absolute path names
# file:public/gdir1/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@test01 ~]#getfacl /public/gfile1
getfacl:Removing leading '/' from absolute path names
# file:public/gfile1
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@test01 ~]#
3)以用户gelin01登入,做以下测试:
a)对/public/目录是否有写入权限
[root@test01 ~]#su - gelin01
[gelin01@test01~]$ mkdir /public/gelindir
[gelin01@test01~]$ ls -ld /public/gelindir/
drwxrwxr-x. 2gelin01 gelin01 4096 2月 1 20:45 /public/gelindir/
[gelin01@test01~]$
b)对/public/下的子目录gdir1和文件gfile1是否有写入权限
[gelin01@test01~]$ mkdir /public/gdir1/gelindir
mkdir: 无法创建目录"/public/gdir1/gelindir":权限不够
[gelin01@test01~]$
4)为目录 /public/ 设置可继承权限为“用户ht02具有rwx权限”
[root@test01 ~]#useradd ht02
[root@test01 ~]#setfacl -dm u:ht02:rwx /public/
[root@test01 ~]#getfacl /public/
getfacl:Removing leading '/' from absolute path names
# file: public/
# owner: root
# group: root
user::rwx
user:lisi:---
user:gelin01:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:ht02:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
[root@test01 ~]#
5)在 /public/ 下创建子目录gdir2、文件gfile2,分别查看其ACL策略
[root@test01 ~]#mkdir /public/gdir2
[root@test01 ~]#touch /public/gfile2
[root@test01 ~]#getfacl /public/gdir2
getfacl:Removing leading '/' from absolute path names
# file:public/gdir2
# owner: root
# group: root
user::rwx
user:ht02:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:ht02:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
[root@test01 ~]#
6)以用户ht02登入,做以下测试:
a)对/public/目录是否有写入权限
[root@test01 ~]#su - ht02
[ht02@test01 ~]$mkdir /public/htdir
mkdir: 无法创建目录"/public/htdir":权限不够
[ht02@test01 ~]$
b)对/public/下的子目录gdir2和文件gfile2是否有写入权限
[ht02@test01 ~]$mkdir /public/gdir2/htdir
[ht02@test01 ~]$ls -ld /public/gdir2/htdir/
drwxrwxr-x+ 2ht02 ht02 4096 2月 1 20:49/public/gdir2/htdir/
[ht02@test01 ~]$echo 123 > /public/gfile2
[ht02@test01 ~]$cat /public/gfile2
123
[ht02@test01 ~]$
c)对/public/下的子目录gdir1和文件gfile1是否有写入权限
[ht02@test01 ~]$mkdir /public/gdir1/htdir
mkdir: 无法创建目录"/public/gdir1/htdir":权限不够
[ht02@test01 ~]$echo 123 > /public/gfile1
-bash:/public/gfile1: 权限不够
[ht02@test01 ~]$
7)测试用户gelin01对/public/下的子目录gdir2和文件gfile2是否有写入权限
[root@test01 ~]#su - gelin01
[gelin01@test01~]$ mkdir /public/gdir2/gelindir
mkdir: 无法创建目录"/public/gdir2/gelindir":权限不够
[gelin01@test01~]$ echo 123 > /public/gfile2
-bash:/public/gfile2: 权限不够
[gelin01@test01~]$
基本权限和归属
附加权限控制
#################################################
一、基本权限和归属
1. 基本概念
用户在访问一个目录或文件时,由设置的访问权限+归属关系共同决定最终权限
访问权限
r 读取:允许查看内容-read
w 写入:允许修改内容-write
x 可执行:允许运行和切换-excute
** 若对目录有r权限,()
** 若对目录有w权限,()
** 若对目录有x权限,()
归属关系
u 所有者(属主):拥有此文件/目录的用户-user
g 所属组(属组):拥有此文件/目录的组-group
o 其他用户:除所有者、所属组以外的用户-other
a 所有用户:以上三类归属合称-all
2. 权限的数值表示
对 ls -l ...输出结果的分段解析:
权限位 硬链接数 属主 属组 大小 最后修改时间 文件/目录名称
|--> 类型+属主权限+属组权限+其他人权限
[root@svr5 ~]#ls -ld /etc/passwd /boot
drwxr-xr-x4 root root 1024 07-10 17:22 /boot
-rw-r--r-- 1 root root 1715 08-24 11:42 /etc/passwd
r-- ==> 100 ==> 4
-w- ==> 010 ==> 2
--x ==> 001 ==> 1
--- ==> 000 ==> 0
rwx ==> 111 ==> 7
rw- ==> 110 ==> 6
r-x ==> 101 ==> 5
r-- ==> 100 ==> 4
常见的目录权限:rwxr-xr-x 755
常见的文件权限:rw-r--r-- 644
3. 设置访问权限 —— chmod
格式:chmod [-R] [ugoa] [+-=][rwx] 文件...
chmod [-R] nnn 文件...
** 加选项 -R 可递归修改目标文件夹及其下的所有文档
4. 设置访问归属 —— chown
格式:chown 属主 文件... 【只修改属主】
chown :属组 文件... 【只修改属组】
chown 属主:属组 文件... 【同时修改属主、属组】
** 选项 -R 的含义同chmod
5. 目录和文件的默认权限
1)新建目录时手动指定:mkdir -m 755文件夹路径
2)根据umask值自动设置:
查看权限掩码值(自动去除的权限):umask
查看权限值(默认权限):umask -S
新目录的权限 = 777 - umask掩码
新文件的权限 = 666 - umask掩码 【安全起见,文件默认不给x权限】
二、附加权限控制
1. 特殊权限
SET UID,s,4 User的x位 可执行程序
SET GID,s,2 Group的x位 可执行程序/目录
Sticky Bit,t,1 Other的x位 目录
** SUID、SGID()
** Sticky Bit()
如何设置SUID:chmod 4755 ...
如何设置SGID:chmod 2755 ...
同时设置SUID、SGID:chmod 6755 ...
如何设置粘滞位:chmod 1777 ...
2. ACL访问控制
1)查看ACL策略 —— getfacl
getfacl 文件或目录
2)设置工具:setfacl
设置ACL策略:
setfacl -m u:用户名:权限 文件或目录...
setfacl -m g:组名:权限 文件或目录...
** 加选项 -R 可递归修改目标文件夹及其下的所有文档
设置可继承的ACL策略(对新建的子文档有效,不影响已有文档的权限):
setfacl -d -m u:用户名:权限 目录...
setfacl -d -m g:组名:权限 目录...
清除所有ACL策略:
setfacl -b 文件或目录...
清除指定用户的ACL策略:
setfacl -x u:用户名文件或目录...
setfacl -x g:组名文件或目录...
3. 关于目录权限的继承
强制继承:
chmod -R ... /parent/
chown -R ... /parent/
自动继承:
方法1:调控umask值,适用于当前用户的整个Shell环境
方法2:针对文件夹的归属关系,setuid、setgid
方法3:setfacl -d -m u:用户名:权限列表 文件或目录...
setfacl -d -m g:组名:权限列表 文件或目录...