Linux基础命令基本使用(gzip、bzip2、zip、unzip、tar、scp、rsync、chmod、chown、setfcal、chattr)
环境:Server1(172.20.26.167),Server2(172.20.26.198)
操作系统:CentOS 7.6
登录172.20.26.167服务器,在boot目录下,使用dd命令 创建一个解压缩文件jfedu,方便实验
dd if=/dev/zero of=jfedu bs=1M count=100
1、gzip 压缩命令
(1)gzip jfedu 压缩jfedu100M的文件,压缩后文件jfedu.gz大小为100k,并删除源文件。
(2)使用gzip -d 解压缩jfedu.gz 文件,并删除源压缩包文件jfedu.gz
(使用gunzip 解压缩jfedu.gz文件,并删除源压缩包文件jfedu.gz 效果是一样的)
(3)如果压缩后要保留源文件jfedu,使用gzip -c 把文件重定向到压缩文件里,命令如下:
gzip -c jfedu > jfedu.gz
(4)压缩目录
使用mkdir 创建一个文件夹,把一些文件放到这个文件夹里
mkdir wordpress 创建worddpress 文件夹
然后把fstab 和passwd 文件拷贝到worddpress 文件夹里
cp /etc/fstab wordpress
cp /etc/passwd wordpress
(5)将wordpress文件夹下的文件(fstab、passwd)递归压缩,删除源文件,而不是把wordpress这个文件夹压缩,
gzip -r wordpress/
ll wordpress/
(6)解压缩:将wordpress文件夹下的文件(fstab.gz、passwd.gz)递归解压缩,删除源压缩文件(fstab.gz、passwd.gz)
gzip -dr wordpress/
ll wordpress/
2、bzip2 压缩
(1) bzip2 jfedu 用bzip2 命令将jfedu文件压缩,压缩力度比gzip大,把100M的文件压缩成100字节的文件
(2)bzip2 -k jfedu 压缩文件jfedu并保留源文件jfedu
(3)bzip2解压缩
bzip2 -d jfedu.bz2 解压jfedu.bz2压缩文件,并删除源压缩文件jfedu.bz2
3、zip 压缩命令:可以压缩目录,并且不删除源文件
格式: zip 压缩后的文件名 要压缩的文件名
zip jfedu.zip jfedu
将wordpress 目录压缩成wordpress.zip文件,源文件保留:
zip -r wordpress.zip wordpress/
移除源文件: -m(move)
zip -rm wordpress.zip wordpress/
4、unzip解压,不删除源压缩文件
unzip jfedu.zip
5、tar命令
是归档工具,用来打包和备份;
打包是指将一大堆文件或目录变成一个总的文件;
压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
格式:tar -cf 归档后的文件名 要归档的文件1 要归档的文件2
例如:
tar -cf j_w.tar jfedu wordpress.zip 将文件jfedu wordpress.zip 打包成j_w.tar文件
再用gzip 命令对j_w.tar包进行压缩
gzip j_w.tar
其实可以用一条命令完成打包和压缩
tar -czf j_w.tar.gz jfedu wordpress.zip
tar xf j_w.tar.gz 解压缩j_w.tar.gz文件
6、scp 命令
scp是用加密的方式在本地主机和远程主机之间复制文件。( cp + ssh)
例如:将jfedu.gz 文件复制到远程服务器172.20.26.198的tmp目录下
scp jfedu.gz 172.20.26.198:/tmp/
或者
scp jfedu.gz root@172.20.26.198:/tmp/
到172.20.26.198服务器上查阅jfedu.gz文件
复制目录
scp -r wordpress root@172.20.26.198:/tmp/
到172.20.26.198服务器上查阅wordpress文件下是否有 fstab、passwd 文件
扩展:
如果是要禁止所有用户(包括root)都不能使用scp命令
最简单的办法是chmod 000 /usr/bin/scp
也可以参考下图例子,vi /etc/sudoers在sudoers 里添加 !/usr/bin/scp
这些都是禁止运行的命令,照着添加其他命令即可。
7、rsync命令
rsync是远程数据同步工具,它传送两个文件的不同部分,而不是每次都整份传
送,因此速度相当快。
需要注意:本地与远程服务器都需要安装好rsync软件包。
将jfedu 文件同步到tmp 目录下:
rsync -av jfedu /tmp/
stat /tmp/jfedu 查看文件的状态
同步wordpress目录的文件到tmp目录下,并且tmp里的文件与wordpress里的文件一致
rsync -av --delete wordpress/ 172.20.26.198:/tmp/ 同步的文件的时间属性一致。
本机(172.20.26.167)wordpress 目录下的fstab、passwd
172.20.26.198服务器上的tmp目录下的fstab、passwd
同步wordpress目录到172.20.26.198的tmp目录下,要注意的是,wordpress 后面没有/,否则只同步目录的文件而不同步该目录
rsync -av wordpress 172.20.26.198:/tmp/
到172.20.26.198服务器上查看wordpress文件的同步情况,连同wordpress目录及目录下的文件都已同步的tmp下
这要注意与scp 命令相区别,scp 加不加/都是把目录及目录下的文件都同步过去
scp -r wordpress/ 172.20.26.198:/tmp/ 与scp -r wordpress 172.20.26.198:/tmp/ 是一样的
scp -r wordpress/ 172.20.26.198:/tmp/
172.20.26.198服务器上:
scp -r wordpress 172.20.26.198:/tmp/
172.20.26.198服务器上:
rsync 更多的帮助内容,使用rsync --help 查看
8、chmod命令 :变更文件或目录的权限
u 用户user,文件或目录的所有者。
g 用户组group,文件或目录所属群组
o 其它用户others
a 所有用户all,系统默认使用此项
+ 添加某些权限
- 取消某些权限
= 设置文件的权限为给定的权限
r 表示可读权限
w 表示可写权限
x 表示可执行权限
文件准备:
mkdir -p /data/ 创建data目录
cp /etc/fstab . 将fstab 文件拷贝到data目录下
cd /data 进入data目录
ll -h 即可看到fstab 前面10个信息,第一个-代表fstab是个文件,后面9个表示文件属性,每三个分为一组,rw-代表用户的权限,中间的r--代表组的权限,后面的r--代表其他人的权限,第一个root 表示fstab文件的所有者,第二个root表示fstab文件的属组
其他用户没有写的权限
只有只读权限,不能写入,q!退出
可以对其他人赋予写的权限即可
- 对普通文件授权:
chmod o+w fstab 或者chmod o=rw fstab 将其他人赋予fstab文件写的权限
jfedu2 用户也可以有写的权限,如下图:
chmod o-w fstab 或者 chmod o=r fstab 将其他人赋予fstab文件只读的权限
chmod a+x fstab 给所有人添加可执行权限
chmod a-x fstab 去掉所有人的可执行权限
- 对目录进行授权,R表示递归
chmod -R o+w jfedu/ 递归赋予其他人的写权限
chmod -R o-w jfedu/ 取消其他人写的权限
将目录权限设置为其他用户可写,这时普通用户是可以进入到目录中任意删除,修改文件名(即使不是自己的文件),对文件的其他用户权限为不可写的文件也可以强制保存,这种操作很危险。
父目录其他用户没有可写权限,其下子文件只有可写才有写入权限,但不具备删除,修改文件名权限。
- 设置权限suid和sgid,使用权限组合“u+s”设置文件的用户的ID位,使文件在执行阶段具有文件所有者的权限;“g+s” 设置组ID位,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。
例如netstat -nltp 命令查看端口状态
普通用户无法查到PID/Program name 的信息
我们可以查到netstat 的路径以及所有者
which netstat
ll /usr/bin/netstat
chmod u+s /usr/bin/netstat 让jfedu2用户以root身份来执行netstat命令
在到其他用户jfedu2 中执行netstat –nltp ,即可查看到PID/Program name 的信息
chmod g+s /data/ root 添加/data/ 的g+s权限
chmod o+w /data/ 赋予其他人可写权限
data 下其他用户创建的文件passwd也具有root 属组的权限
- 设置t权限:对目录设置特殊权限,用户只能删除自己的文件。
chmod o+w,o+t /data/
/tmp 目录即是这样的权限的目录,大家可以使用,也只能删除自己的文件,不能删除别人的文件
9、chown命令
改变fstab的所有者,让jfedu用户也能写,还能保留其他人还是制只读权限:
chown jfedu fstab
Fstab的所有者已经是Jfedu用户,并已有写的权限
也可以将fstab的所有者和属组都改为jfedu
chown jfedu:jfedu fstab 或者 chown jfedu. fstab
再将fstab的所有者和属组都改为root
chown root. fstab
递归授权,将jfedu目录里所有文件的所有者和属组都改为root
10、setfcal命令
fstab 文件除了root 用户有可读写权限外,jfedu也需要可读写权限
setfacl -m u:jfedu:rw fstab 设置添加fstab的控制列表
getfacl fstab 查看控制列表信息
jfedu 用户拥有可读写的权限
而jfedu2用户仍然没有写权限
setfacl -m u:jfedu:- fstab 设置取消jfedu用户对fstab的控制
setfacl -b fstab 取消所有的设置
批量修改acl规则:通过acl.txt 文件提前将用户的权限写好
setfacl -M acl.txt fstab
getfacl fstab
setfacl -b fstab 取消所有
临时降低权限
setfacl -m mask::r acl.txt
11、chattr命令
chattr +a passwd 修改passwd文件的属性
lsattr passwd 查看
chattr -a passwd 取消修改passwd文件的属性
chattr +i passwd 完全限制系统中某个关键文件(如:passwd),不能被修改,删除
lsattr passwd 查看
chattr -i passwd 取消锁定
也作用于目录