目录:
(一)sodu用户切换
(二)Linux和Linux之间互相传输文件
(三)Linux和Windows之间互相传输文件
(四)find文件查找
(五)其余查找工具算法
(一)sodu用户切换
(1.1)咱们在系统中切换用户时候,是必需要知道对方的密码才能够切换的,可是不少时候root密码不可能让每一个人都知道。为了解决这个问题,可使用root用户去设置哪些用户拥有执行哪些命令的权限,而对应的用户使用“sudo”命令进行用户切换。
(1.2)咱们在vms002主机上进行操做,咱们使用root用户打开/etc/sudoers配置文件,其中配置文件的格式能够参考图1-2。
# gedit /etc/sudoers
(1.3)因为/etc/sudoers文件中的内容已经比较多了,咱们能够在/etc/sudoers.d/目录中进行编辑,而/etc/sudoers配置文件则会将/etc/sudoers.d/目录中的文件做为本身的一部分(图1-3),表示的是jerry用户在vms002.example.com主机上执行mount和umount命令的时候,将会按照root用户的权限进行执行(图1-4)。
# gedit /etc/sudoers.d/jerry
(1.4)此时咱们发如今没有建立/etc/sudoers.d/jerry文件以前咱们使用jerry用户是没法执行mount挂载命令的,接着咱们编辑/etc/sudoers.d/jerry文件容许jerry用户执行mount和umount命令,此时咱们登陆式切换到jerry用户后,使用sudo命令发现已经能够正常的使用mount挂载命令了(图1-5)。注意:咱们在使用jerry用户执行sudo命令的时候,须要执行一次jerry用户的密码,系统保存密码默认为5分钟,若是须要清除保存的密码咱们可使用“sudo -k”命令(图1-6)。
# sudo mount /dev/cdrom /mnt/
# sudo -k---清除系统保存的密码
# sudo -l---列出系统中全部容许执行的权限信息
(1.5)若是咱们但愿jerry用户在执行mount或者umount命令的时候不须要执行密码,则能够加上“NOPASSWD”参数,表示当jerry用户在vms002.example.com主机上执行mount和umount命令的时候,会按照root用户的权限执行命令,而且不须要输入密码信息(图1-8)。此时咱们执行的时候会发现jerry用户直接执行了mount命令,而且挂载成功了(图1-9)。
(1.6)若是咱们但愿jerry用户可以按照root用户的权限执行全部命令,则咱们可使用“ALL”参数,表示全部命令都是按照root用户的权限进行执行(图1-10),此时咱们使用“sudo -i”命令即可以切换到管理员root下,执行全部的命令了(图1-11)。
# sudo -i---切换到管理员权限
(1.7)通常咱们能够将sudo和网络用户进行和配合使用,例如咱们有一台目录服务主机存放的都是帐户信息,还有多台成员服务器,当网络用户的服务搭建好以后,例如如今咱们有一个tom网络用户,通常状况下咱们是能够从任意一台成员服务器使用tom网络用户名登陆到系统中的。而如今咱们在sudo的配置文件中设置,vms001主机上tom用户登陆时能够执行的相关权限,其余成员服务器主机上使用tom用户登陆时都没有任何的权限,这样就能够很好的进行权限的管理了。shell
(二)Linux和Linux之间互相传输文件
(2.1)在系统中有时候咱们须要传输一些小文件或者一些零散的文件,此时咱们须要一些传输的工具进行文件传输,一般在Linux系统和Linux系统之间传输文件的工具主要有scp和rsync两种工具可使用,这两种工具都是基于ssh服务创建起来的工具。
(2.2)scp使用方法
(2.2.1)首先咱们来了解scp工具,scp工具的语法以下:“scp -选项 /path1/file remoteIP:/path2”,表示将当前主机下目录中的文件拷贝到远端主机下的目录中。
(2.2.2)咱们尝试将vms001主机上的hosts文件拷贝到vms002主机的/opt/目录下,咱们能够按照以下的方式操做,发现能够正常的将vms001主机的文件拷贝传送到vms002主机上了(图2-3)。
# scp /etc/hosts vms002:/opt/
(2.2.3)接着咱们在vms001主机上切换到tom用户,而后一样尝试将/etc/hosts文件拷贝到vms002主机的/opt/目录中,咱们发现并不能拷贝传送文件成功,这是因为咱们在vms001主机上咱们没有指定用户名,因此此时默认使用的是当前的用户名tom传送文件(图2-4),查询/opt/目录的权限信息,咱们发现目录中其余用户并无可写的权限,所以咱们是没法拷贝传送文件成功的(图2-5)。而当咱们指定使用root用户传输到vms002主机的/opt目录下(图2-6),此时咱们发如今vms002主机的/opt目录能够正常的查看到hosts文件了(图2-7)。
# useradd tom---建立一个tom用户
# echo redhat | passwd --stdin tom---给tom用户建立密码
# ls -ld /opt/---查看opt目录的权限
(2.2.4)接着咱们在vms001主机上先会生成一个不须要输入密码的密钥对(图2-8),而后将公钥对从vms001主机拷贝到vms002主机上,此时咱们发现从vms001主机能够直接链接到vms002主机而不用输入密码(图2-9),同时咱们从vms001主机传送/etc/hosts文件到vms002主机时,也是不须要输入密码就能够传输成功的(图2-10)。
# ls .ssh/
# ssh-keygen -N ""---生成一个不须要输入密码的密钥对
# ssh-copy-id vms002---将公钥对从vms001主机拷贝到vms002主机上
# scp /etc/hosts vms002:/opt/---将vms001主机的文件拷贝到vms002主机上
(2.2.5)如今咱们的需求是将当前vms001主机的/boot目录下的文件拷贝到vms002主机的/opt目录下,此时咱们可使用scp -r递归的方式将目录中的文件进行拷贝(图2-11),此时咱们在vms002主机上看到/opt目录下已经产生了一个boot目录了(图2-12)。
# scp -r /boot/ vms002:/opt/
(2.2.6)咱们也是能够反过来操做的,便可以把远端主机的文件拷贝到本地的,例如咱们把vms002主机上的vms002.txt文件拷贝到vms001主机上,此时咱们发现vms001主机上能够看到vms002.txt的文件了。
# scp vms002:~/vms002.txt .---将vms002主机上的文件拷贝到本地
(2.3)rsync使用方法
(2.3.1)rsync命令是一个远程数据同步工具,可经过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不一样部分,而不是每次都整份传送,所以速度至关快。其中rsync的语法为:“rsync -选项 /path1/file remoteIP:/path2”,表示将当前主机的文件拷贝到远端主机的目录中。
(2.3.2)咱们尝试将/etc/hosts文件拷贝到vms002主机的/opt目录,此时咱们发现vms002主机上便已经有了vms001主机上的hosts文件了(图2-16)。
# rsync /etc/hosts vms002:/opt/---将/etc/hosts文件拷贝到vms002主机的/opt目录
(2.3.3)若是咱们想要将vms001主机的/boot/目录下的全部文件都拷贝到vms002主机的/opt目录下,则可使用rsync -r命令(图2-17),注意此处咱们使用的是“/boot/”表示的是boot目录下的全部的文件。此时咱们在vms002主机上发现/opt目录下已经存在了boot目录中的全部的文件了(图2-18)。
# rsync -r /boot/ vms002:/opt/---将/boot/目录下的全部文件都拷贝到vms002主机的/opt目录下
(2.3.4)若是咱们但愿将vms001主机的/boot/目录和目录下的全部文件总体拷贝到vms002主机的/opt目录下(图2-19),注意此处咱们使用的是“/boot”表示的是将目录及目录下文件做为一个总体进行拷贝,此时在vms002主机上发现/opt目录下已经产生了一个boot目录了,且boot目录中也有vms001传输过来的全部文件了(图2-20)。
# rsync -r /boot vms002:/opt/
(2.3.5)若是咱们但愿对文件的时间、属主、属组等全部信息都进行统一的拷贝传输,此时咱们可使用rsync -a命令实现这样的需求。
# rsync -a /boot vms002:/opt/
(2.3.6)有时候为了能够更好的使用rsync的服务,咱们也可使用图形化界面的工具grsync,常见的grsync版本为grsync-1.2.4-3.el7.nux.x86_64.rpm软件包。数据库
(三)Linux和Windows之间互相传输文件
(3.1)lrzsz使用方法
(3.1.1)在Linux和Windows系统之间进行文件传输,一般咱们是有不少小的工具可使用的,例如咱们常见的lrzsz,咱们首先要确保在服务器上已经安装了lrzsz,若是咱们使用的是图形化界面的安装方式,则lrzsz默认是已经安装好了的;若是咱们使用的是最小化安装系统的方式,则是没有默认安装lrzsz工具的。
(3.1.2)咱们能够在vms001主机上输入rz命令,这样就能够将Windows主机上的文件传输到Linux系统了。
(3.1.3)若是咱们但愿将Linux系统的文件传输到Windows主机时,咱们能够在vms001主机使用sz命令,即可以实现这个需求。
# sz vms002.txt
(3.1.4)咱们须要知道的是lrzsz工具是能够经过xshell、secureCRT等工具链接到服务器上的,可是若是咱们使用的是putty客户端时,则是不支持使用lrzsz工具的。
(3.2)通常来讲咱们上面使用的lrzsz是用来传输小文件比较便捷的,若是咱们想要传输大文件通常是不建议使用lrzsz的。此时咱们可使用xshell客户端提供的工具,咱们能够点击“新建文件传输”或者是经过快捷键“Ctrl+Alt+F”即可以将工具打开,此时咱们即可以使用很是快的速率传输大文件了。
(3.3)有时候咱们也可使用其余的一些工具实现Linux和Windows系统之间的文件传输,例如WinSCP 或者FileZilla,也是能够实现咱们的需求的。vim
(四)find文件查找
(4.1)通常咱们使用find命令进行文件的查找,find命令的格式为:“find 目录 -属性 值”,其中若是没有指明目录则默认是在当前目录下进行查询,其中属性主要包括:name、iname、user、group、nouser、nogroup、uid、gid、size、mtime、mmin、type、perm
(4.2)接着咱们在vms002主机上建立一个rh124目录,而后建立相关的文件,并给建立的文件设置对应的属主和属组信息。
# chown jerry aa---修改aa的属主为jerry
# chown jerry.jerry bb---修改bb的属主和属组为jerry
# chown .users cc---修改cc的属组为users
# chown 101.users dd---修改dd的属主为101属组为users
# chown .103 ee---修改ee的属组为103
(4.3)若是咱们想在系统中找到名字为lwang的文件,则可使用“-name”参数;若是咱们但愿在查询名字的时候忽略大小写,则可使用“-iname”参数。
# find / -name lwang---找到名字为lwang的文件,则可使用“-name”参数
# find / -iname lwang---查询名字的时候忽略大小写,则可使用“-iname”参数
(4.4)若是咱们想要查询属主为jerry用户的文件,则可使用“-user”参数;若是咱们想要查询属组为jerry的文件,则可使用“-group”参数查询。
# find -user jerry---查询属主为jerry用户的文件
# find -group jerry---查询属组为jerry用户的文件
(4.5)由于jerry用户的uid为1000,若是咱们想要查询uid为1000的文件,则可使用“-uid”参数;若是咱们想要查询gid为1000的文件,则可使用“-gid参数”
# find -uid 1000---查询uid为1000的文件
# find -gid 1000---查询gid为1000的文件
(4.6)若是想要查询没有所属主的文件,则可使用“-nouser”参数;若是想要查询没有所属组的文件,则可使用“-nogroup”参数。
# find -nouser---查询没有所属主的文件
# find -nogroup---查询没有所属组的文件
(4.7)若是咱们想要查询属主和属组都是jerry用户的文件,则咱们可使用“-a”参数进行链接,表示两个条件都要同时知足;而若是咱们想要查询属主是jerry或者属组是jerry用户的文件,则可使用“-o”参数,表示全部的条件只要有一个知足,都是符合条件的。
# find -user jerry -a -group jerry---查询属主和属组都是jerry用户的文件
# find -user jerry -o -group jerry---查询属主是jerry或者属组是jerry用户的文件
(4.8)接着咱们在vms002主机上从新建立以下的7个文件,若是咱们但愿查询文件大小正好等于3M的文件,则直接使用“3M”便可,若是咱们但愿查询大于3M的全部文件则可使用“+3M”参数,此时咱们即可以根据文件的大小size进行查询。
# rm -rf [a-z]*---删除rh124目录中的全部文件
# dd if=/dev/zero of=file1 bs=1M count=1---建立一个1M的文件file1
# find -size 3M---查询文件大小正好为3M的文件
# find -size +3M---查询文件大小大于3M的全部文件
# find -size +3M -o -size 3M---查询文件大小大于且等于3M的全部文件
(4.9)咱们还能够根据文件的时间属性进行查询,咱们能够查询建立的文件的时间间隔为1天的文件,建立的文件的时间间隔大于1天的文件,建立的文件的时间间隔小于1天的文件。
# find -mtime 1---查询所建立的文件的时间间隔为1天的
# find -mtime +1---查询所建立的文件的时间间隔大于1天的
# find -mtime -1---查询所建立的文件的时间间隔小于1天的
(4.10)咱们还能够经过mmin参数以分钟的精度查询文件的建立时间状态。
# find -mmin 44---查询文件的建立时间为44分钟的
# find -mmin -44---查询文件的建立时间少于44分钟的
# find -mmin +44---查询文件的建立时间超过44分钟的
(4.11)咱们还能够经过文件的类型type进行查询,咱们先在系统中建立一个目录rh124,再建立一个软链接从file6文件链接指向lwang文件(图4-15)。咱们知道在查询文件属性的时候“d”参数表示目录文件,“-”表示的普通文件,“l”表示的软链接,“b”表示的是块设备及block文件,“c”表示的是字符设备。若是咱们想要查询一个块设备类型的文件,则可使用“-b”参数,若是咱们想查询一个普通类型的文件设备,则可使用“-f”参数(图4-16)。
# ln -s lwang file6---建立一个软链接,file6链接到lwang文件上
# find -type b---查询块设备类型的文件
# find -type f---查询普通文件类型的设备
(4.12)咱们也能够经过权限perm来进行查询,例如咱们如今设计一个权限ugo=364(图4-17),同时咱们将file1文件的权限设置为364,而后咱们查询当前目录下权限彻底符合364设置的全部文件,此时发现全部文件中只有file1文件是符合权限要求的(图4-18)。
# chmod 364 file1---修改file文件的权限为364
# find -perm 364---查询当前目录下权限彻底符合364设置的全部文件
# find -perm +364
(4.13)咱们将权限至少为364的文件都挑选出来,所以发现file一、file二、file6三个文件是符合要求的。
# find -perm -364---查询的权限能够比364的权限多,可是不能够少
(4.14)咱们可使用/364表示只要文件的ugo三个权限中有任意一个位置的权限含于咱们查询的364三个位置上的一个权限,那么此文件就是符合要求的。此时咱们发现除了lwang的权限是不符合要求的,其余的文件都是符合要求的。
# chmod 200 file3---将file3文件设置为200
# chmod 004 file4---将file4文件设置为004
# chmod 020 file5---将file5文件设置为020
# chmod 411 lwang---将lwang文件设置为411
# find -perm /364---查询ugo三个权限中有任意一个位置的权限含于咱们查询的364三个位置上的一个权限的文件
(4.15)若是咱们想查询对应的文件的属性,可使用xargs命令进行操做,将查询出的file开头的文件经过xargs参数传递给ls命令,此时即可以查看查找出来的文件的属性信息了(图4-21)。同时咱们也可使用xargs参数执行删除的操做(图4-21-1)。
# find -name "file*" | xargs ls -l---查询file开头的全部文件的属性
# touch file{1..10}---建立10个file开头的文件
# find -name "file*" | xargs rm -rf---将file开头的文件所有删除
(4.16)第二种方式咱们也可使用“-exec”命令查看查询出来的文件的属性信息,经过使用“-exec”将查询出来的file开头的全部文件所有删除。
# find -name "file*" -exec rm -rf {} \;---将查询出来的file开头的全部文件所有删除
(4.17)若是咱们当前目录中除了文件还有目录,而且目录下还包含子文件夹,那么此时咱们在执行“# find -name lwang”的命令时,会自动的到子文件夹中作递归查询。若是如今咱们并不想作深层的查询,只但愿是作1层的查询,此时咱们可使用“# man find”进行查询,而后查找“maxdepth”关键字便可。递归查找
# find -maxdepth 1 -name lwang---在当前目录的第一层查找文件名为lwang的文件浏览器
(五)其余查找工具
(5.1)在Linux系统中咱们还有其余的经常使用工具用来进行查询操做,例如which命令,咱们想要查询date命令具体是在哪一个路径下执行的,则可使用“# which date”进行查询。
# which date---查询date命令具体是在哪一个路径
# which vim
# which ifconfig
(5.2)咱们还可使用locate命令,例如咱们想要查询系统中关于ceph关键字的全部文件信息,咱们可使用“# locate ceph”命令,此时咱们能够查询出系统中关于ceph关键字的全部文件信息(图5-2)。可是咱们若是在系统中临时建立一个文件ceph.txt,此时咱们发现并不能搜索到新建立的文件(图5-3),这是因为locate命令在查询的时候使用的是一个数据库中的信息,而这个数据库是在一周左右更新一次,因此此时咱们搜索刚刚建立的文件的时候是查询不到任何信息的,此时咱们须要作的就是更新数据库便可,此时咱们发现已经能够搜索到刚刚建立的根目录下的ceph.txt文件了(图5-4)。
# locate ceph---查询系统中关于ceph关键字的全部文件信息
# updatedb---更新数据库
(5.3)有时候咱们在使用locate命令的时候,很容易和locale命令混淆,由于它们长得太像了像双胞胎同样。其中locale命令是来设置咱们系统的默认编码的。咱们在xshell中使用ssh登陆的时候,系统的编码是UTF-8,所以咱们必需要保证ssh客户端的编码和系统编码保持一致,不然就会出现乱码的问题。
(5.4)例如咱们在打开浏览器的时候,当前系统默认是使用“LANG=zh_CN.UTF-8”即中文打开的,可是咱们想要以美式英语的方式打开,此时咱们可使用在执行firefox命令以前使用LANG命令指明美式英语编码便可(图5-7)。若是咱们想修改系统默认的编码,则应该在/etc/locale.conf配置文件中进行修改(图5-8)。
注意:在RHEL 6系统中,系统的默认编码是在/etc/sysconfig/i18n文件中进行配置的。
# LANG=en-us firefox &---使用美式英语的方式打开浏览器
# cat /etc/locale.conf服务器
—————— 本文至此结束,感谢阅读 ——————网络