本文所有示例均在CentOS发行版上完成
虚拟机的安装(未完成)
常用命令
在日常运维管理工作中,快捷键可以大大提高工作效率。
快捷键
- Ctrl十C:结束(终止)当前命令。如果你输人了一大串字符,但不想运行,可以按Ctrl+C组合键,此时光标将跳人下一行.而在刚刚的光标处会留下一个^C的标记.
- Tab:实现自动补全功能。这个键比较重要,使用频率也很高。当你输人命令、文件或目录 的前几个字符时,它会自动帮你补全。
- Ctl+D:退出当前终端。同样,你也可以愉人命令exit实现该功能。
- Ctrl+Z:暂停当前进程。这和Ctrl+C是有去区别的,暂停后,使用fg命令恢复该进程。
- Ctrl+L:清屏,使光标移动到屏幕的第一行。当命令和显示的结果占满整个屏幕时.我们每运行一个命令.都会在最后一行显示,这样看起来不太方便.此时就可以使用这个快捷键.让光标移动到屏幕第一行,也就是所谓的清屏。
- Ctl+A:可以让光标移动到命令的最前面。有时候一条命令很长,快敲完时现前面某个字母不对,此时可以直接用这个快捷键把光标定位到行首,然后再用左右方向键微调光标的位置。
- Ctl+E:可以让光标移动到最后面,作用同上。
查看命令man
man:用于查看命令的帮助文档,其格式为man 命令。例如如下命令:
如果屏幕不能显示完整,可以按空格键下翻,或者按上下方向键前后移动文本。若想退出帮助文档,按字母键q。
ls命令
ls是list的缩写,该命令用于列出指定目录或者文件
- 后面不加任何选项也不跟目录名或者文件名:会列出当前目录下的文件和目录。不包含隐藏文件。
- 后面加-a选项、不加目录名或者文件名:会列出当前目录下所有文件和日录,含有隐藏文件。
- 后面加-l选项、不加目录名或者文件名:会列出当前目录下除隐藏文件外的所有文件和日录的详细信息。包含其权限、所属主、所属组以及文件创建日期和时间
- 后面不加选项、只跟文件名:会列出该文件,使用时通常都是加上-1选项。用来查看该文件的详细信息。
- 后面不加选项、只跟目录名:会列出指定目录下的文件和目录。
关机和重启
如果要关机或重启,必须要保证当前系统中没有其他用户在登录系统。可使用who命令查看是否还有其他人在登录,或者使用命令ps -aux查看是否还有后台进程运行。
关机的命令有shutdown -h now、halt、poweroff、init 0,重启系统的命令有shutdown -r now、reboot、init 6,例如
不管是重启系统还是关闭系统,首先要运行sync命令,它可以把当前内存中的数据写人磁盘中,防止数据丢失。
文件和目录管理
系统目录结构
“/”是Linux操作系统里面最核心的一个目录,所有的文件和目录全部在它下面,所以称它为“根目录”。
- /bin:bin是Binary的缩写,该目录下存放的是最常用的命令。
- /boot:该目录下存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
- /dev:dev是Device(设备)的缩写。该口录下存放的是Linux的外部设备。在Linux中,访问设备的方式和访问文件的方式是相同的。
- /etc:该目录下存放的是所有系统管理所需要的配置文件和子目录。
- /home:这是用户的家目录。在Linux中.每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /lib和/lih64:这两个目录下存放的是系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。其中/lib64为64位的软件包的库文件所在日录。
- /media:系统会自动识别一些设备(如U盘、光驱等),当识别后,Linux会把识别的设备挂载到该目录下。
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统。我们可以将光驱挂载到/mnt/上,然后进人该目录查看光驱里的内容。
- /opt:这是给主机额外安装软件所设置的目录,该目录默认为空。比如,你要安装一个Oracle数据库,可以放到该目录下。
- /proc:该目录是一个虚拟目录,是系统内存的映射,可以直接访问它来获取系统信息。该目录的内容在内存里,我们可以直接修改里面的某些文件。比如可以通过下面的命令来屏蔽主机的ping命令,使其他人无法ping你的机器。在日常工作中,你会经常用到类似的用法:
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
- /root:该目录是系统管理员的用户家目录。
- /run:这个目录其实和/var/run是同一个目录,这里面存放的是一些服务的pid。一个服务启动完后.是有一个pid文件的。
- /shin:s就是Super User的意思,该目录存放的是系统管理员使用的系统管理程序。
- /srv:该目录存放的是一些服务启动之后需要提取的数据。
- /svs:该目录存放的是与硬件驭动程序相关的信息。
- /tmp:该目录用来存放一些临时文件。
- /usr:这是一个非常重要的目录,类似于Windows下的Program Files目录,用户的很多应用程序和文件都存放在该目录下
- /usr/bin:该目录存放的是系统用户使用的应用程序。
- /usr/sbin:该目录存放的是超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src:该目录是内核源代码默认的放置目录。
- /var:该目录存放的是不断扩充且经常修改的日录,包括各种日志文件或者pid文件,其中刚刚提到的/var/run就是在这个目录下面。
注:有几个重要的目录不要误删除或者随意更改其内部文件。
1. /etc目录下是系统的配置文件,如果更改了该目录下的某个文件,可能会导致系统无法正常启动。
2. /bin、/sbin、/usr/bin和/usr/sbin目录是系统顶设的执行文件的放置目录,其中/bin和/usr/bin目录下是供系统用户使用的指令(除root外的通用账户),而/sbin和/usr/sbin目录下则是供root使用的指令。比如,ls指令就存放在/bin/目录下。
3. /var也是一个非常重要的目录,系统上运行各个程序时所产生的日志都被记录在该目录下(即/var/log目录中)。另外mail指令的预设也放置在这里。
绝对路径和相对路径
- 绝对路径:路径的写法一定是由根目录写起的,例如/usr/local/mysql
- 相对路径:路径的写法不是由根目录/写起的。例如.首先用户进人到/home,然后再进人到test,执行的命令为
文件属性
用ls -l命令查看当前目录下的文件时,共显示了9列内容
第1列:第1列共11位,其中第1位用来描述该文件的类型。
注:最后1位的“.”,老版本CentOS 5是没有这个点的,是因为新版本的ls添加了SELinux或者acl的属性。如果文件或者目录使用了SELinux context的属性,这里会是一个点“.”;如果设置了acl的属性,这里会是一个加号“+”。
- d:directory 表示该文件为目录。
- -:regular file 表示该文件为普通文件。
- l:link file表示该文件为链接文件,类似windows下的快捷方式
- b:block 表示该文件为块设备,比如/dev/sda就是这样的文件,磁盘分区文件就是这种类型。
- c:character 表示该文件为串行端口设备文件(又称字符设备文件),比如键盘、鼠标、打印机、tty终端等都是这样的文件。
- s:socket 表示该文件为套接字文件,用于进程之间的通信。
文件类型后面的9位,每3位为一组。
- r代表可读,w代表可写,x代表可执行。
- 前3位为所有者(user)的权限
- 中间3位为所属组(group)的权限
- 最后3位为其他非本群组用户(others)的权限
如:
- 一个文件的属性为-rwxr-xr-,该文件为普通文件,文件拥有者可读、可写且可执行,文件所属组对其可读、不可写但可执行,其他用户对其只可读。
- 任何一个目录必须要有x权限才能打开并查看该目录下的内容。
- 一个目录的属性为drwxr–r–,其所有者为root,那么除root之外的其他用户是不能打开这个目录的。
第2列:表示该文件占用的节点(inode),如果是目录,那这个数值与该日录下是子目录数量有关。
第3列:表示该文件的所有者。
第4列:表示该文件的所属组。
第5列:表示该文件的大小。
第6列、第7列和第8列:表示该文件最后一次被修改的时间(mtime),依次为月份、日期及时间。
第9列:表示文件名。
文件后缀名
在Linux系统中,文件的后缀名没有具体意义。是为了便于区分,习惯在定义文件名时加后缀名。例如1.sh、2.tac.gz、my.cnf,test.zip等。
- 1.sh:代表它是一个shell脚本
- 2.tar.gz:代表它是一个压缩包
- my.cnf:代表它是一个配置文件
- test.zip:代表它是一个压缩文件
环境变量PATH
命令which:用于查找某个命令的绝对路径
|
环境变量PATH的作用为:使用命令时,只需直接写出命令,而不需写出命令的绝对路径
|
因/bin目录在PATH中,所以可以找到ls。由于PATH里没有/root目录,如果将ls移到/root目录下,当执行ls命令时,系统将找不到可执行文件,会提示command not found!
解决办法有两种:
- 直接将/root路径加人到$PATH当中
# PATH=$PATH:/root |
- 使用绝对路径
# /root/ls |
创建与删除
命令cd:切换
命令cd (change directory的简写)是用来变更用户所在目录的,如果后面什么都不跟,就会直接进人当前用户的根目录下。如果后面跟目录名,则会直接切换到指定目录下。命令cd后面只能是目录名,如果跟了文件名,则会报错
,示例如下:
|
特殊符号: “.”表示当前目录, “..”表示当前目录的上一级目录
|
命令mkdir:创建
命令mkdir (make directory的简写)用于创建目录,格式为:
mkdir [-p] [目录名称] |
-p:若所建的上层目录不存在,则会级联创建上层目录;若创建的目录已存在,它不会做任何事情,并且不会报错;示例如下:
|
|
命令rmdir:删除空目录
命令rmdir(remove directory的简写)用于删除空目录,后面可以是一个目录,也可以是多个目录(用空格分隔)。只能删除目录,不能删除文件。rmdir有和mkdir具有相同的选项-p,可以级联删除目录,但如果某一个目录里还有目录或者文件时,将删除失败。示例如下:
|
命令rm:删除
格式如下,在此介绍最常用的两个选项
rm [-rf] [目录或文件名称] |
-r:删除目录,类似于rmdir,删除目录时,会询问是否删除,如果输入‘y’则会删除,如果输人‘n’则不删除。另外能删除非空目录。示例如下:
|
-f:表示强制删除。如果后面跟一个不存在的文件或者目录,也不会报错。但如果要删除一个存在的目录时,即使加上-f选项也会报错。所以,使用命令rm删除目录时,一定要加-r选项。示例如下:
|
注:rm -rf命令后面不能加‘/’否则会把系统文件全部删除!
复制与移动
命令cp:复制
cp是copy(即复制)的简写,命令的格式为:
cp [选项] [来源文件] [目的文件] |
常用选项:
-r:如果要复制一个目录,必须加-r选项,否则不能复制。示例如下:
|
-i:如果遇到一个已存在的文件,会询问是否覆盖,示例如下:
|
命令mv:移动
mv是move的简写,格式为:
mv [选项] [源文件或目录] [目标文件或目录] |
- 当目标文件是目录时:
如果该目录存在,则会把源文件或目录移动到该目录中。
如果该目录不存在,则会把源目录重命名为给定的目标文件名。
|
- 当目标文件是文件时:
如果该文件存在,则会询问是否覆盖。
如果该文件不存在,则会把源文件重命名为给定的目标文件名。
|
查看文档内容
命令cat:查看
查看文件的内容并将其显示在屏幕上。cat后面可以不加任何选项,直接跟文件名。
-n:查看文件时,把行号也显示到屏幕上。示例如下:
# echo '111111111' > dirb/filee |
-A:显示所有的内容,包括特殊字符。不加-A选项,每行后面的$符号是看不到的,示例如下:
|
命令tac:倒序查看
和命令cat一样,但显示结果和命令cat相反,如下所示:
|
命令more:搜索查看
用于查看文件的内容,后面直接跟文件名。当文件内容太多,按Ctrl+D向上翻屏,按Ctrl+F向下翻屏(按空格键也行)。看完所有内容后就会退出,如想提前退出,按q键。
命令less:查看搜索
和命令more一样,后面直接跟文件名,比more功能多一些。按空格键可以翻页,按 j 键可以向下移动一行,按 k 键可以向上移动一行。可以按一下 / 键(在当前行向下搜索),并输人一个字符串,然后回车查找字符串,可以按 n 键显示下一个。另外,也可以用 ? 键(?是在当前行向上搜索)替代 / 键来搜索字符串.
补充:快捷键 Ctrl+f 上一屏,Ctrl+b 下一屏
命令head:查看内容前几行
命令head后面直接跟文件名,默认显示文件的前10行,加-n选项,则显示文件的前n行,示例如下:
|
注:选项-n后有无空格均可,也可省略字母n,-后面直接跟数字
命令tail:查看内容最后几行
和命令head类似,默认显示文件的最后10行,加-n选项,则显示文件的最后n行
;-f选项,动态显示文件的最后10行,如文件内容在不断增加,可以实时地查看文件最后10行内容。
更改文档权限
命令chgrp:更改所属组
chgrp(change group的简写)命令可以更改文件的所属组,其格式为:
chgrp [-R] [组名] [文件名或目录名] |
常用选项:
-R:只适用于目录,实现级联更改子目录以及子文件所属组
示例如下:
|
|
命令chown:更改所有者
chown (change owner的简写)命令可以更改文件的所有者,其格式为:
chown [-R] 账户名 文件/目录名 |
示例如下:
|
命令chmod:更改读写权限
为了方便更改文件的权限,Linux使用数字代替rwx:r等于4,w等于2,x等于1,-等于0
,目录的默认权限为755,而文件的默认权限为644
。如:rwxrwx—用数字表示就是770,算法为:rwx=4+2+1=7,rwx=4+2+1=7,—=0+0+0=0
chmod( change mode的简写)命令用于改变用户对文件/目录的读写执行权限,格式为:
chmod [-R] xxx 文件/目录名 |
示例如下:
|
|
|
命令chattr:修改文件/目录特殊属性
命令chattr(change attribute)的格式为:
chattr [+-=] [Asaci] [文件或者目录名] |
其中,+、-和=分别表示增加、减少和设定。各个选项的含义如下
A:表示文件或目录的atime(访问或执行时间)将不可修改。
s:会将数据同步写人磁盘中。
a:表示只能追加,不能删除,非root用户不能设定该属性。
c:表示自动压缩该文件,读取时会自动解压。
i:表示文件不能删除、重命名、设定链接、写入以及新增数据。
常用选项a、i示例如下:
|
|
|
搜索文档
命令which:查找可执行文件的绝对路径
which只能用来查找PATH环境变量中出现的路径下的可执行文件。示例如下:
|
命令find:搜索文件
格式为:
find [路径] [参数] |
常用参数
-atime +n/-n:access time表示访问或执行时间大于或小于n天的文件。
-ctime +n/-n:change time表示写入、更改inode属性(如更改所有者、权限或者链接〕的时间大于或小于n天的文件。
-mtime +n/-n:modified time表示写入时间大于或小于n天的文件。
-mmin +n/-n:表示写入时间大于或小于n分钟的文件。
inode(索引节点)用来存放档案及目录的基本信息,包含时间信息、文档名、所有者以及所属组等。inode是Unix操作系统中的一种数据结构,其本质是结构体,在文件系统创建时生成,且个数有限。可以通过命令df -i(如下图)来查看各个分区的inode总数以及使用情况。
atime不一定在访问文件之后被修改,因为在使用ext3文件系统时,如果mount使用了noatime参数,那么就不会更新atime的信息。这三个time属性值都放在了inode中。若mtime,atime被修改,那么inode就一定会改,既然inode改了,那ctime也跟着要改了。
stat命令可用来列出文件的atime,ctime和mtime,示例如下:
|
命令find示例如下:
|
常用选项
-name filename:表示直接查找该文件名的文件,示例如下:
|
-type filetype:表示通过文件类型查找文件。filetype包含f, b, c, d, l, s等类型,示例如下:
|
链接文件
链接文件分为硬链接(hard link)和软链接(symbolic link)两种。两种链接的本质区别在于inode。
- 硬链接:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块区域将数据取出来。而硬链接是直接再建立一个inode链接到文件放置的块区域,即进行硬链接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。硬链接有两个限制:(1)不能跨文件系统,因为不同的文件系统有不同的inode
table; (2)不能链接目录。 - 软链接:软链接是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。例如,现在有一个文件a,我们做了一个软链接文件b(只是一个链接文件,非常小),b指向了a。当读取b时,b就会把读取的动作转发到a上,这样就读取了文件a,当我们删除文件a时,链接文件b不会被删除;但如果再次读取b时,会提示无法打开文件。然而,当我们删除b时,a是不会有任何影响的。
命令ln:建立链接
格式为:
ln [-s] [来源文件] [目的文件] |
该命令常用的选项是-s。如果不加-s选项就是建立硬链接,加上-s选项就建立软链接
硬链接特性
示例如下:
|
删除源文件,再比较。示例如下:
|
再来看硬链接的另外一个限制,不允许目录做硬链接,示例如下:
|
软链接特性
示例如下:
|
目录不可以做硬链接,但可以做软链接,示例如下:
|
系统用户与用户组管理
最重要的两个文件
这两个文件是Linux系统最重要的文件之一。如果没有这两个文件或者这两个文件出了问题,则无法正常登录系统。
/etc/passwd
|
每行以”:”分割成7个字段,每个字段的含义如下:
第1个字段:为用户名(root就是用户名),它是代表用户账号的字符申。用户名中的字符可以是大小写字母、数字、减号(不能为首位,不建议使用,容易造成混淆)、点(不建议使用,尤其是首位)或下划线
第2个字段:存放的是该账号的口令。早期的Unix系统口令确实存放在这里,但基于安全因素,后来就将其存放到/etc/shadow中了,这里只用x代替。
第3个字段:为一个数字,这个数字代表用户标识号,也称为uid。系统就是通过这个数字识别用户身份的。0就是root,可以修改test用户的uid为0,那么系统会认为root和test为同一个账户。uid的取值范围是0-65535(但实际上已经可以支持到429 496 729 4 ),0是超级用户(root )的标识号,CentOS 7的普通用户标识号从1000开始。自定义建立一个普通用户,会看到该账户的标识号是大于或等于1000的。
第4个字段:也是数字,表示组标识号,也称为gid。这个字段对应着/etc/group中的一条记录,其实/etc/group和/etc/passwd基本类似。
第5个字段:为注释说明,没有实际意义。通常记录该用户的一些属性,例如姓名、电话、地址等。可以使用chfn(不常用,此文不详解)命令来更改这些信息
第6个字段:为用户的家目录,当用户登录时,就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/usemame,用户家目录是可以自定义的。比如,建立一个普通用户test1,要想让tes1的家目录/data目录下,只要将/etc/passwd文件中对应该用户那行中的本字段修改为/data即可。
第7个字段:为用户的shell。用户登录后,要启动一个进程,用来将用户下达的指令传给内核,这就是shell。Linux的shell有sh、csh、ksh、tcsh、bash等多种,而Red Hat/CentOS的shell就是bash。查看/etc/passwd文件,该字段中除了/bin/bash,还有很多/sbin/nologin,它表示不允许该账号登录。如果想建立一个不允许登录的账号,可以把该字段改/sbin/nologin,默认是/bin/bash.
/etc/shadow
由:分割成9个字段,示例如下:
.cat /etc/shadow ahead -n 3 |
每个字段的含义如下所示。
- 第1个字段:为用户名,与/etc/passwd相同。
- 第2个字段:为用户密码。密码已经加密,但是有些黑客还是能够解密的。所以,将该文件属性设世为000,但root账户是可以访问或更改的。使用命令ls
-l查看该文件的权限,示例如下:# ls -l /etc/shadow ---------- 1 root root 1275 2月 18 11:31 /etc/shadow
- 第3个字段:为上次更改密码的日期,以1970年1月1日和上次更改密码的日期为基准计算而来。如,更改密码的日期为2012年1月1日,则这个值就是365*(2012-1970)+(2012-1970)/4+1=15341。如果是闰年,则有366天。
- 第4个字段:为要过多少天才可以更改密码,默认是0,即不受限制。
- 第5个字段:为密码多少天后到期,即在多少天内必须更改密码。例如,这里设置成30,则30天内必须更改一次密码;否则,将不能登录系统。默认是99999,可以理解为永远不需要改。
- 第6个字段:为密码到期前的警告期限。若这个值设置成7,则表示当7天后密码过期时,系统就发出警告,提醒用户他的密码将在7天后到期。
- 第7个字段:为账号失效期限。如果这个值设置为3,则表示密码已经到期,然而用户并没有在到期前修改密码,那么再过3天,这个账号便失效,即锁定。
- 第8个字段:为账号的生命周期。跟第3个字段一样,这个周期是按距离1970年1月1日多少天算的。它表示的含义是,账号在这个日期前可以使用,到期后账号将作废。
- 第9个字段:作为保留用的,没有什么意义。
用户和用户组管理
命令groupadd:新增组
命令格式为
groupadd [-g GID] groupname |
示例如下:
|
如果不加-g选项,则按照系统默认的gid创建组。跟uid一样,gid也是从1000开始的。也可以自定义gid:
|
命令groupdel:删除组
|
有一种情况不能删除组,如user1组中包含user1账户,只有别除user1账户后才可以删除该组,如下所示:
|
命令useradd:增加用户
命令格式为
useradd [-u UID] [-g GID] [-d HOME] [-M] [-s] username |
各个选项的具体含义如下。
- -U:表示自定义UID
- -g:表示使新增用户属于已经存在的某个组,后面可以跟组id,也可以跟组名。
- -d:表示自定义用户的家目录。
- -M:表示不创建家目录。
- -s:表示自定义shell
下面我们先来新建一个用户test 10,示例如下:
|
如果useradd不加任何选项,直接跟用户名,则会创建一个跟用户名同名的组。
自定义uid, gid或者所属的组,示例如下:
|
加上-M选项后,则不建立用户家目录,但在etc/passwd文件中仍然有这个字段。如果你使用命令ls /home/user11
查看一下,会提示该目录不存在。所以-M选项的作用只是不创建那个目录。示例如下:
|
命令userdel:删除用户
命令格式为
userdel [-r] username |
-r选项的作用是,当删除用户时,一并删除该用户的家目录。
示例如下:
|
不加-r选项,则会直接删除用户user12,但保留其家目录,如下所示:
|
加上-r选项删除user1用户,如下所示:
|
用户密码管理
命令passwd:设置密码
账户创建后,密码默认为空,只有设置好密码后,才可以登录系统,建议按照如下规则设置密码:
- 长度大于10个字符;
- 包含大小写字母、数字以及特殊字符中*、&、%等;
- 不规则性(不要出现happy、love、linux、7758520、111111等单词或者数字);
- 密码中不要带有自己的名字、电话、生日以及公司名字等。
命令格式为
passwd [username] |
该命令后面若不加用户名字,则是为自己设定密码
,示例如下:
|
如果你登录的是root账户,后面可以跟普通账户的名字,意思是修改指定账户的密码
,示例如下:
|
注意:只有root才可以修改其他账户的密码,普通账户只能修改自己的密码。
命令mkpasswd:密码生成
有些Linux版本没有这个命令,需要安装一个expect软件包。安装如下:
|
指定长度的密码
,用mkpasswd命令也可以满足。比如,生成12位长度的密码,示例如下:
|
指定密码中有几个特殊字符或几个数字
,示例如下:
|
只不过这密码不方便记忆,可借助KeePass工具来记录密码。
用户身份切换
Linux系统中,有些事情只有root用户才能做,普通用户是不能做的,这时就需要临时切换到root身份了。创建test账户,并修改其密码,使用test账户登录Linux了。操作如下:
|
用test帐户登录Linux,示例如下:
login as: test |
登录后,使用whoami命令查看,发现当前用户是test。普通用户和root用户的shell提示符号有些区别,root账户是 #,普通用户是 $
命令su:切换用户身份
命令su的格式为
su [-] username |
普通用户的su命令不加username时,就是切换到root用户
。当然,root用户同样可以使用su命令切换到普通用户,当由root切换到普通用户时,不需要输入密码
。加与不加-的区别,示例如下:
$ pwd |
命令sudo:
为了避免当普通用户切换root时,密码泄露的安全问题,命令sudo诞生了。默认情况下,只有root用户能使用sudo命令(需要输人密码,这个密码不是root的密码,而是用户自己的密码)
,普通用户想要使用sudo,是需要root预先设定的。可以使用visudo命令编辑/etc/sudoers配置文件(必须使用root用户,如没有visudo这个命令,请使用命令yum install -y sudo安装
),即输人i进人编辑模式,编辑完成后,按Esc键,再输人:wq完成保存。操作方法如下:
## Allow root to run any commands anywhere |
从左到右,第一段test,为指定需要sudo特权的用户名
;第二段ALL=(ALL),左边的ALL指的是所有的主机,右边的ALL指的是获取哪个用户的身份,第二段几乎都不用配置
;第三段ALL,设定可以使用sudo的命令有哪些。
验证test账户权限,如下操作在root账号下进行:
|
由于切换到test账户后当前目录还是/root, test账户没有任何权限,所以使用命令ls查看时,提示权限不够。然而使用命令sudo ls输入test账户自身的密码后,就有权限了。初次使用sudo命令时,会出现上面的一大段提示,当再次使用sudo命令时则不再提示。
统一给普通用户设置sudo特权
,可以加如下配置:
%wheel ALL=(ALL) ALL |
意思是,wheel这个组的所有用户都拥有了sudo的权利。接下来,只要把需要设置sudo权限的所有用户加人到wheel这个组中即可
。如下所示:
## Allows people in group wheel to run all commands |
配置文件/etc/sudoers包含了许多配置项,可以使用命令man sudoers来获得帮助信息。
实用案例:
把Linux服务器设置成,只允许使用普通账户登录,登录后可不输入密码,就能用sudo切换到root帐户。输入如下命令:
|
- 第一行:设定一个user别名,其实这个USER_SU相当于是test, test1和aming三个账户;
- 第二行:设定一个命令别名,SU相当于/usr/bin/su;
- 第三行:
第一段test,为指定需要sudo特权的用户名
;第二段ALL=(ALL),左边的ALL指的是所有的主机,右边的ALL指的是获取哪个用户的身份,第二段几乎都不用配置
;第三段ALL,设定可以使用sudo的命令有哪些。
保存后使用test, test1,aming这3个账户登录Linux。执行命令sudo su -
切换到root账户,获取root账户的所有权利,如下所示:
|
不允许root直接登录Linux
不允许root直接远程登录Linux(默认允许root账户通过ssh远程登录Linux),只需要修改sshd服务的配置文件/etc/ssh/sshd_config
,在文件中查找#PennitRootLogin yes
并修改为PermitRootLogin no
。保存配置后,需要重启sshd服务,如下所示:
注意:只适用于通过ssh远程登录Linux的情况。
文本编辑工具Vim
Vi和Vim的最大区别就是编辑一个文本时Vi不会显示颜色,而Vim会显示颜色。Vim有3种模式:一般模式、编辑模式和命令模式如果系统里没有Vim工具,可按如下方法安装:
一般模式
当使用命令vim filename
编辑文件时,默认进人一般模式。常用操作如下:
编辑模式
在一般模式下不可以修改某一个字符,如要修改字符,只能进人编辑模式。只需按i、I、a、A、o、O、r和R中的某一个键即可进人编辑模式
。
当进人编辑模式时,在屏幕的尾行会显示INSERT或REPLACE的字样(若CentOS支持中文,则会显示”插人”)。
从编辑模式回到一般模式,只需按Esc键即可(注:编辑文档回到一般模式后,还需进入命令模式保存文本或其他操作
)。常用操作如下:
命令模式
在一般模式下,输入:或者/
即可进人命令模式。在该模式下,可以搜索某个字符或者字符串,也可以实现保存、替换、退出、显示行号等操作(输入命令后,按回车即可执行
)。常用操作如下:
文档压缩与打包
在Linux下,不能识别.rar(Windows下)这种格式的压缩文件,它有自己独特的压缩工具。但.zip格式的文件在Windows和Linux下都能使用
。
Linux下最常见的压缩文件通常都是.tar.gz格式的,除此之外,还有.tar、.gz、.bz2、.zip等格式。为了判断压缩文件是由哪种压缩工具所压缩的,而后才能正确地解压缩此文件。(曾介绍过Linux下的文件后缀名无意义可加可不加,但为了便于区分,压缩文件最好加上后缀名
)常见压缩后缀名如下:
- .gz:表示由gzip压缩工具压缩的文件。
- .bz2:表示由bzip2压缩下具压缩的文件。
- .tar:表示由tar打包程序打包的文件(tar并没有压缩功能,只是把一个目录合并成一个文件)
- .tar.gz:可以理解为先由tar打包,然后再由gzip压缩。
- .tar.bz2:可以理解为先由tar打包.然后再由bzip2压缩。
- .tar.xz:可以理解成先由tar打包.然后再xz压缩。
gzip压缩工具
gzip命令的格式为gzip [-d#] filename
,其中#为1-9的数字。-d:该参数在解压缩时使用。 -#:表示压缩等级,1为最差,9为最好,6为默认(一般使用默认足矣)
示例如下:
|
解压该压缩文件如下所示:
# .gzip -d 1.txt.gz #-d后面跟压缩文件表示解压压缩文件 |
gzip不支持压缩目录,压缩目录时会报错
,如下所示:
# .gzip test |
bzip2压缩工具
bzip2命令的格式为bzip2 [-dz] filename
,只有-z(压缩)和-d(解压缩)两个常用选项
。压缩级别有1-9,默认级别是9。加或不加-z选项都可以压缩文件。示例如下:
|
bzip2命令也不可以压缩目录,压缩目录时会报错
,如下所示:
|
xz压缩工具
xz命令的格式为xz [-dz] filename
,常用的有-z(压缩)和-d(解压缩)这两个选项
。加或不加-z选项都可以压缩文件。示例如下:
# bzip2 -d 1.txt.bz2 |
xz命令同样也不可以压缩目录,压缩目录时会报错
,如下所示:
|
tar打包工具
tar可以把目录打包成一个文件,方便复制或者移动。该命令的格式为tar [-zjJxcvfpP] filename.tar [filename]
,filename.tar指打包或解压的文件名
,filename指需要打包的目录或文件名(解压时不需要指定此属性),如果有多个目录或文件,则以空格隔开
。使用tar命令打包或解压后,原文件不会消失,但会覆盖当前相同已存在的文件或者目录
,常用选项如下:
- -z:表示同时用gzip压缩。
- -j:表示同时用bzip2压缩。
- -J:表示同时用xz压缩。
- -x:表示解包或者解压编。
- -t:表示查看tar包里的文件。
- -c:表示建立一个tar包或者压缩文件包。
- -v:表示可视化。
- -f:后面跟文件名(-f filename)表示压缩后的文件名为filename,或者解压后的文件名为filename,
如果是多个参数组合的情况下,请把-f参数写到最后面
。 - -p(小写):表示使用原文件的属性,压缩前什么属性压编后还什么属性。(不常用)
- -P(大写):表示可以使用绝对路径。(不常用)
- –exclude filename:表示在打包或压缩时,不要将filename文件包括在内。(不常用)
示例如下:
|
tar命令不仅可以打包目录,也可以打包文件
,打包时不加-v选项,表示不可视化。示例如下:
|
覆盖当前相同已存在的文件或者目录,示例如下:
|
exclude选项
排除文件的用法
,示例如下:
|
排除目录的用法
,示例如下:
排除多个文件或目录的用法
,示例如下:
注:exclude选项放在目标打包文件(或目录)名前面或者后着都可以
使用gzip压缩
tar命令非常好用的一个功能就是可以在打包时直接压缩,它支持gzip压缩、bzip2压缩和xz压缩。使用-z选项,可以压缩成gzip格式的文件
,示例如下:
|
使用-tf选项,可以查看包或者压缩包的文件列表
,示例如下:
|
使用-zxvf
选项,可以解压.tar.gz格式的压缩包,示例如下:
|
使用bzip2压缩
使用-cjvf选项来压缩
,压缩过程如下:
|
使用-tf
选项来查看压缩包的文件列表,示例如下:
|
使用-jxvf
选项来解压.tar.bz2格式的压编包,示例命令如下:
|
注:打包的同时使用xz压缩工具压缩和gzip、bzip2相同,在此不再累述
zip压缩工具
若CentOS没有压缩和解压缩命令,需要使用yum工具安装
,如下所示:
压缩
zip压缩包可以压缩目录和文件,该命令的格式为zip filename.tar filename
,filename.tar指打包或解压的文件名
,filename指需要打包的目录或文件名
,压编目录时,需要指定目录下的文件
。示例如下:
|
zip命令仅仅是把二级目录本身压缩而已
。当目录下还有二级目录甚至更多级目录时,如果想要一并压缩二级目录下的文件,必须加上-r
选项,如下所示:
|
也可以不加-r
选项,而使用通配符*,如下所示:
# zip test111.zip test111/* |
注:使用-r选项和通配符*,压缩还是有区别的,看到亮点了嘛
解压
解压.zip格式文件时是用unzip命令。例如,解压1.txt.zip的命令为:
zcat、bzcat命令
使用-t选项可以查看tar压缩包的文件列表。对于gzip2或者bzip2压缩格式的文本文档,也可以使用zcat, bzcat命令直接查看文档内容。示例如下:
|