复制时出现重名,强制覆盖
在本次复制,临时取消别名
[root@A ~]# cp -r /boot/ /opt/
[root@A ~]# cp -r /boot/ /opt/
[root@A ~]# \cp -r /boot/ /opt/
#################################################
命令输出重定向
:覆盖重定向
:追加重定向
[root@A ~]# ls --help
[root@A ~]# ls --help > /opt/ls.txt
[root@A ~]# ls /opt/
[root@A ~]# less /opt/ls.txt
[root@A ~]# hostname
[root@A ~]# hostname > /opt/ls.txt
[root@A ~]# cat /opt/ls.txt
[root@A ~]# hostname >> /opt/ls.txt
[root@A ~]# cat /opt/ls.txt
[root@A ~]# echo haha
[root@A ~]# cat /opt/ls.txt
[root@A ~]# echo 123456 >> /opt/ls.txt
[root@A ~]# cat /opt/ls.txt
[root@A ~]# echo hello > /opt/ls.txt
[root@A ~]# cat /opt/ls.txt
##################################################
| 管道操作: 将前面命令的输出,交由后面命令处理
显示文件内容/etc/passwd的8~12行
[root@A ~]# head -12 /etc/passwd | tail -5
[root@A ~]# head -12 /etc/passwd | tail -5 | cat -n
[root@A ~]# cat -n /etc/passwd | head -12 | tail -5
[root@A ~]# ifconfig | less
[root@A ~]# ifconfig | head -2
##################################################
管理用户和组
用户:登录操作系统,不同的用户具备不同的权限
组:方便管理用户
用户唯一标识: UID
组唯一标识: GID
管理员root的UID为0
组的分类: 基本组(私有组) 附加组(从属组)
原则:一个用户必须至少属于一个组
基本组(私有组) :由系统创建与用户同名的组
附加组(从属组):由管理员root创建的组
[root@A ~]# useradd nsd01
[root@A ~]# 组:nsd01
附加组(从属组): caiwu meinv haha jishu
###################################################
添加用户
用户基本信息存放在 /etc/passwd 文件
[root@A ~]# head -1 /etc/passwd
root❌0:0:root:/root:/bin/bash
用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器程序
• 使用 useradd 命令
– useradd [选项]… 用户名
• 常用命令选项
– -u 用户id、-d 家目录路径、-s 登录解释器、-G 附加组
[root@A ~]# useradd nsd02 #创建nsd02用户
[root@A ~]# id nsd02 #查看nsd02用户基本信息
[root@A ~]# useradd nsd03
[root@A ~]# id nsd03
[root@A ~]# useradd -u 1500 nsd04 #指定用UID值创建
[root@A ~]# id nsd04
[root@A ~]# useradd -d /opt/abc nsd05 #指定用户家目录创建
[root@A ~]# ls /opt/
[root@A ~]# grep nsd05 /etc/passwd
用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器程序
[root@A ~]# useradd -d /opt/nsd06 nsd06
[root@A ~]# ls /opt/
[root@A ~]# grep nsd06 /etc/passwd
###################################################
-s 登录解释器
/sbin/nologin:禁止登录操作系统
[root@A ~]# useradd -s /sbin/nologin nsd06
[root@A ~]# grep nsd06 /etc/passwd
-G 附加组
[root@A ~]# groupadd stugrp #创建stugrp组
[root@A ~]# useradd -G stugrp nsd07
[root@A ~]# id nsd07
[root@A ~]# useradd -G stugrp nsd08
[root@A ~]# id nsd08
##################################################
设置登录密码
用户密码信息存放在 /etc/shadow 文件
[root@A ~]# tail -1 /etc/shadow
nsd08:
6
6
6VjFxZ9GD$XaYwBkrcR0eVnFNZrO/om1bQKFYzlsXW.aHMCx.nOGguVde19zLyyl1jBekeU6r49UfFcvWy4sUDw8iG2OSv2.:18022:0:99999:7:::
用户名:密码加密字符串:上一次修改密码的时间
1970-1-1~2019-5-6 18022
[root@A ~]# useradd nsd10
[root@A ~]# tail -1 /etc/shadow
nsd10:!!:18022:0:99999:7:::
第二个字段为!!,代表用户为锁定状态
• 使用 passwd 命令
– passwd [用户名]
[root@A ~]# useradd nsd08
[root@A ~]# passwd nsd08 #交互方式设置密码
更改用户 nsd08 的密码 。
新的 密码: #输入新的密码
无效的密码: 密码少于 8 个字符
重新输入新的 密码: #重新输入新的密码
passwd:所有的身份验证令牌已经成功更新。
[root@A ~]# su - nsd08 #命令行临时切换身份
[nsd08@A ~]$ passwd
更改用户 nsd08 的密码 。
为 nsd08 更改 STRESS 密码。
(当前)UNIX 密码: #输入旧密码
新的 密码: #输入新的密码
重新输入新的 密码: #重新输入新的密码
passwd:所有的身份验证令牌已经成功更新。
[nsd08@A ~]$ exit #退出回到root
非交互式设置密码
echo ‘密码’ | passwd --stdin 用户名
[root@A ~]# echo 123 | passwd --stdin nsd08
[root@A ~]# echo redhat | passwd --stdin nsd08
[root@A ~]# echo 654321 | passwd --stdin nsd08
#################################################
修改用户属性
• 使用 usermod 命令
– usermod [选项]… 用户名
• 常用命令选项
– -u 用户id、-d 家目录路径、-s 登录解释器、-G 附加组
[root@A ~]# useradd nsd11
[root@A ~]# id nsd11
[root@A ~]# grep nsd11 /etc/passwd
[root@A ~]# usermod -u 1800 -d /opt/test -s /sbin/nologin -G stugrp nsd11
[root@A ~]# id nsd11
[root@A ~]# grep nsd11 /etc/passwd
[root@A ~]# useradd nsd13
[root@A ~]# grep nsd13 /etc/passwd
[root@A ~]# ls /home/
[root@A ~]# usermod -d /opt/n13 nsd13
[root@A ~]# grep nsd13 /etc/passwd
[root@A ~]# ls /opt/n13
ls: 无法访问/opt/n13: 没有那个文件或目录
################################################
检查用户ID信息
• 使用 id 命令
– id 用户名
##################################################
删除用户
• 使用 userdel 命令
– userdel -r 用户名
-r:连同用户家目录一并删除.
[root@A ~]# ls /home/
[root@A ~]# userdel nsd01
[root@A ~]# ls /home/
[root@A ~]# id nsd01
id: nsd01: no such user
[root@A ~]# rm -rf /home/nsd01/
[root@A ~]# ls /home/
[root@A ~]# ls /home/
[root@A ~]# userdel -r nsd02
[root@A ~]# ls /home/
####################################################
管理组账号
添加组
组基本信息存放在 /etc/group 文件
[root@A ~]# grep linux /etc/group
linux❌1802:
组名:组的密码占位符:组的编号:组成员列表
• 使用 groupadd 命令
– groupadd [-g 组ID] 组名
[root@A ~]# groupadd linux
[root@A ~]# grep linux /etc/group
[root@A ~]# useradd natasha
[root@A ~]# useradd kaka
[root@A ~]# useradd jack
[root@A ~]# useradd xiha
管理组成员
组成员信息存放在 /etc/gshadow 文件
• 使用 gpasswd 命令
– gpasswd -a 用户名 组名
– gpasswd -d 用户名 组名
[root@A ~]# grep linux /etc/group
[root@A ~]# gpasswd -a natasha linux #将用户加入组
[root@A ~]# grep linux /etc/group
[root@A ~]# id natasha
[root@A ~]# gpasswd -a kaka linux
[root@A ~]# grep linux /etc/group
[root@A ~]# gpasswd -a jack linux
[root@A ~]# grep linux /etc/group
[root@A ~]# gpasswd -d kaka linux #将用户从组中删除
[root@A ~]# grep linux /etc/group
案例1:配置用户和组账号
• 新建用户 alex,其用户ID为3456,密码是flectrag
[root@A ~]# useradd -u 3456 alex
[root@A ~]# id alex
[root@A ~]# echo flectrag | passwd --stdin alex
• 创建下列用户、组以及组的成员关系:创建一个名为 adminuser 的组
[root@A ~]# groupadd adminuser
[root@A ~]# grep adminuser /etc/group
• 创建natasha 的用户,其属于 adminuser 组,这个组是该用户的从属组
[root@A ~]# gpasswd -a natasha adminuser
[root@A ~]# grep adminuser /etc/group
• 创建harry 的用户,其属于 adminuser 组,这个组是该用户的从属组
[root@A ~]# gpasswd -a harry adminuser
[root@A ~]# grep adminuser /etc/group
• 创建 sarah 的用户,其在系统中没有可交互的Shell(解释器),不是 adminuser 组的成员
[root@A ~]# useradd -s /sbin/nologin sarah
[root@A ~]# grep sarah /etc/passwd
• natasha 、harry、sarah 的密码都要设置为 flectrag
[root@A ~]# echo flectrag | passwd --stdin natasha
[root@A ~]# echo flectrag | passwd --stdin harry
[root@A ~]# echo flectrag | passwd --stdin sarah
###################################################
删除组
• 使用 groupdel 命令
– groupdel 组名
[root@A ~]# groupdel linux
[root@A ~]# grep linux /etc/group
###############################################
tar备份与恢复
作用:减少占用的空间,零散的文件整理到一个压缩包
压缩格式:
gzip-----> .gz
bzip2-----> .bz2
xz -----> .xz
制作tar包:打包
格式: tar 选项 /路径/压缩包的名字 /路径/源文档 …
解包
格式: tar 选项 /路径/压缩包的名字 /释放位置
• tar 集成备份工具
– -c:创建归档
– -x:释放归档
– -f:指定归档文件名称
– -z、-j、-J:调用 .gz、.bz2、.xz格式的工具进行处理
– -t:显示归档中的文件清单
– -C:指定释放路径
f选项必须放在,所有选项的最后
制作tar包:打包
]# tar -zcf /opt/file.tar.gz /home/ /etc/passwd
]# ls /opt/
]# tar -jcf /opt/nsd.tar.bz2 /home/ /etc/passwd
]# ls /opt/
]# tar -Jcf /opt/abc.tar.xz /home/ /etc/passwd
]# ls /opt/
-z:gzip压缩格式
-j:bzip2压缩格式
-J:xz压缩格式
[root@A ~]# mkdir /nsd02
[root@A ~]# tar -xf /opt/file.tar.gz -C /nsd02
[root@A ~]# ls /nsd02/
[root@A ~]# ls /nsd02/etc/
[root@A ~]# ls /nsd02/home/
[root@A ~]# mkdir /nsd03
[root@A ~]# tar -xf /opt/nsd.tar.bz2 -C /nsd03
[root@A ~]# ls /nsd03
[root@A ~]# tar -tf /opt/abc.tar.xz #查看包里内容
案例2:创建一个备份包
使用 tar 工具完成以下备份任务:
– 创建一个名为 /root/backup.tar.bz2 的归档文件
– 其中包含 /usr/local 目录中的内容
– tar 归档必须使用 bzip2 进行压缩
[root@A ~]# tar -jcf /root/backup.tar.bz2 /usr/local/
[root@A ~]# ls /root/
[root@A ~]# tar -tf /root/backup.tar.bz2 #查看包里内容
#####################################################
周期性任务
cron任务概述
• 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
• 日志文件:/var/log/crond
执行周期 配置说明
分钟 从0到59之间的整数
小时 从0到23之间的整数
日期 从1到31之间的整数
月份 从1到12之间的整数
星期 0~7之间的整数,0或7代表星期日
• 使用 crontab 命令
– 编辑:crontab -e [-u 用户名]
– 查看:crontab -l [-u 用户名]
– 清除:crontab -r [-u 用户名]
如何编写crontab任务记录
– 分 时 日 月 周 任务命令行(绝对路径)
30 8 * * * #每天早晨的8:30
30 23 * * 5 #每周的周五晚上11:30
30 8 1 * * #每月的1号早晨的8:30
30 23 * * 1-5 #周一至周五晚上11:30
30 23 * * 1,3,5 #周一或周三或周五晚上11:30
*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n ...
1 */2 * * * #每隔2个小时执行一次
*/5 * * * * #每隔5分钟执行一次
30 23 1 * 1 #周一或每月一号 晚上11:30
##################################################
每分钟记录当前系统时间,将系统时间每分钟写入文件/opt/time.txt
[root@A ~]# date
[root@A ~]# date >> /opt/time.txt
[root@A ~]# cat /opt/time.txt
[root@A ~]# crontab -e -u root
-
-
-
-
- date >> /opt/time.txt
-
-
-
[root@A ~]# crontab -l -u root
[root@A ~]# cat /opt/time.txt
###################################################
[root@A ~]# crontab -e -u root
*/2 * * * * date >> /opt/time.txt
[root@A ~]# crontab -l -u root
[root@A ~]# cat /opt/time.txt
##################################################
真机,设置永久的别名,修改系统级配置文件
~/.bashrc #设置永久别名配置文件,每开一个终端会被执行一次
[student@room9pc01 ~]$ vim /home/student/.bashrc
.bashrc
alias gos=‘ssh -X root@172.25.0.11’
alias god=‘ssh -X root@172.25.0.10’
新开一个终端验证:
[student@room9pc01 ~]$ gos
[student@room9pc01 ~]$ god
#################################################
权限和归属
基本权限
• 访问方式(权限)
– 读取:允许查看内容-read r
– 写入:允许修改内容-write w
– 可执行:允许运行和切换-execute x
对文本文件:
r: cat less head tail
w: vim 保存 > >>
x: 书写Shell脚本或Python脚本
• 权限适用对象(归属)
– 所有者(属主):拥有此文件/目录的用户-user u
– 所属组(属组):拥有此文件/目录的组-group g
– 其他用户:除所有者、所属组以外的用户-other o
zhangsan 1.txt 所有者的基本组成为该文件的所属组
####################################################
查看权限
• 使用 ls -l 命令
– ls -ld 文件或目录…
以d开头:目录
以-开头:文件
以l开头:快捷方式
[root@server0 ~]# ls -ld /etc/
[root@server0 ~]# ls -l /etc/passwd
[root@server0 ~]# ls -l /etc/shadow
[root@server0 ~]# ls -ld /home/student
[root@server0 ~]# ls -ld /tmp
####################################################
设置基本权限
• 使用 chmod 命令
– chmod 归属关系±=权限类别 文档…
[root@server0 ~]# mkdir /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod g+w /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod u-w /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod o=— /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod u=rwx,g=rx,o=rx /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod ugo=rwx /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# mkdir -p /opt/aa/bb/cc
[root@server0 ~]# ls -ld /opt/aa
[root@server0 ~]# ls -ld /opt/aa/bb/
[root@server0 ~]# ls -ld /opt/aa/bb/cc/
[root@server0 ~]# chmod -R o=— /opt/aa
[root@server0 ~]# ls -ld /opt/aa
##################################################
Linux判定用户具备的权限 匹配及停止
1.判定用户对该文档的身份 所有者>所属组>其他人
2.查看相应身份 权限位的权限
Permission denied :权限不足
目录的 r 权限:能够 ls 浏览此目录内容
目录的 w 权限:能够执行 rm/mv/cp/mkdir/touch/等更改目录内容的操作
目录的 x 权限:能够 cd 切换到此目录
以root用户新建/nsddir目录,在此目录下新建readme.txt文件
并进一步完成下列操作
1)使用户lisi能够在此目录下创建子目录 切换用户 su - lisi
chmod o+w /nsddir/
2)使用户lisi不能够在此目录下创建子目录
chmod o-w /nsddir/
3)使用户lisi能够修改readme.txt文件内容
chmod o+w /nsddir/readme.txt
4)调整此目录的权限,使所有用户都不能cd进入此目录
chmod u-x,g-x,o-x /nsddir/
5)为此目录及其下所有文档设置权限 rwxr-x—
chmod -R u=rwx,g=rx,o=— /nsddir/
-R:递归设置权限,目录下及目录下所有
##################################################
设置文档归属
• 使用 chown 命令
– chown -R 属主 文档…
– chown -R :属组 文档…
– chown -R 属主:属组 文档…
[root@server0 ~]# groupadd tedu
[root@server0 ~]# mkdir /nsd03
[root@server0 ~]# ls -ld /nsd03
[root@server0 ~]# chown lisi:tedu /nsd03
[root@server0 ~]# ls -ld /nsd03
[root@server0 ~]# chown zhangsan /nsd03
[root@server0 ~]# ls -ld /nsd03
[root@server0 ~]# chown :root /nsd03
[root@server0 ~]# ls -ld /nsd03
################################################
利用root用户新建/nsd06目录,并进一步完成下列操作
1)将属主设为gelin01,属组设为tarena组
[root@server0 /]# useradd gelin01
[root@server0 /]# useradd gelin02
[root@server0 /]# groupadd tarena
[root@server0 /]# chown gelin01:tarena /nsd06
2)使用户gelin01对此目录具有rwx权限
除属主与属组之外的人,对此目录无任何权限
[root@server0 /]# chmod o=— /nsd06
3)使用户gelin02能进入、查看此目录内容
[root@server0 /]# gpasswd -a gelin02 tarena
4)将gelin01加入tarena组, 将nsd06目录的权限设为rw-r-x—
再测试gelin01用户能否进入此目录
[root@server0 /]# gpasswd -a gelin01 tarena
[root@server0 /]# chmod u=rw,g=rx /nsd06
###################################################
让lisi用户可以读取/etc/shadow文件内容,您有几种办法
1.利用其他用户
chmod o+r /etc/shadow
2.利用所属组
chown :lisi /etc/shadow
chmod g+r /etc/shadow
3.利用所有者
chown lisi /etc/shadow
chmod u+r /etc/shadow
###################################################
附加权限(特殊权限)
Set GID
• 附加在属组的 x 位上
属组的权限标识会变为 s
适用于目录,Set GID可以使目录下新增的文档自动设置与父目录相同的属组
让父目录下,新增的子文档继承父目录的所属组身份
[root@server0 ~]# mkdir /nsd07
[root@server0 ~]# chown :tedu /nsd07 #修改所属组
[root@server0 ~]# ls -ld /nsd07
[root@server0 ~]# mkdir /nsd07/abc
[root@server0 ~]# ls -ld /nsd07/abc
[root@server0 ~]# chmod g+s /nsd07/ #设置Set GID权限
[root@server0 ~]# ls -ld /nsd07/
[root@server0 ~]# mkdir /nsd07/test
[root@server0 ~]# ls -l /nsd07/
[root@server0 ~]# touch /nsd07/1.txt
[root@server0 ~]# ls -l /nsd07/
###################################################
/nsd09 rwx r-x --- 存放打卡记录
2019-5-6.txt
2019-5-7.txt
2019-5-8.txt
2019-5-9.txt
groupadd caiwu
chown :caiwu /nsd09
chmod g+s /nsd09
##################################################
Set UID
• 附加在属主的 x 位上
属主的权限标识会变为 s
适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限
[root@server0 ~]# /usr/bin/mkdir /opt/haha
[root@server0 ~]# ls /opt/
[root@server0 ~]# cp /usr/bin/mkdir /usr/bin/hahadir
[root@server0 ~]# /usr/bin/hahadir /opt/xixi
[root@server0 ~]# ls /opt/
[root@server0 ~]# chmod u+s /usr/bin/hahadir
[root@server0 ~]# ls -l /usr/bin/hahadir
[root@server0 ~]# su - lisi
[lisi@server0 ~]$ /usr/bin/mkdir test01
[lisi@server0 ~]$ /usr/bin/hahadir test02
[lisi@server0 ~]$ ls
test01 test02
[lisi@server0 ~]$ ls -l
[lisi@server0 ~]$ exit
###################################################
Sticky Bit
• 附加在其他人的 x 位上
其他人的权限标识会变为 t
适用于开放 w 权限的目录,可以阻止用户滥用 w 写入权限(禁止操作别人的文档)
[root@server0 ~]# mkdir /public
[root@server0 ~]# chmod ugo=rwx /public
[root@server0 ~]# ls -ld /public
[root@server0 ~]# chmod o+t /public/
[root@server0 ~]# ls -ld /public/