[root@localhost ~]#
表示 Linux 系统的命令提示符。
[]:这是提示符的分隔符号,没有特殊含义。
root:显示的是当前的登录用户,笔者现在使用的是 root 用户登录。
@:分隔符号,没有特殊含义。
localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。
~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。
#:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $。
Linux 命令的基本格式:
[root@localhost ~]# 命令 [选项] [参数]
命令格式中的 [] 代表可选项,也就是有些命令可以不写选项或参数,也能执行。
1) 选项的作用
ls 命令之后不加选项和参数也能执行,不过只能执行最基本的功能,即显示当前目录下的文件名。
2) 参数的作用
参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作;命令一般都需要加入参数,用于指定命令操作的对象是谁。如果可以省略参数,则一般都有默认参数;
备注:命令的选项用于调整命令功能,而命令的参数是这个命令的操作对象。
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。因此Linux 系统为每个文件都添加了很多的属性,最大的作用就是维护数据的安全。
Linux 系统中,用户等级权限的划分是非常清楚的,root 用户拥有最高权限,可以修改任何文件的权限,而普通用户只能修改自己文件的权限(所有者是自己的文件)
Linux 系统中,文件或目录的权限信息,可以使用 ls 命令查看。如:
每个文件的属性由左边第一部分的10个字符来确定(如下图)。
位数 |
说明 |
||
第 0 位 |
确定文件类型 (d, - , l , c , b) |
l 是链接,相当于 windows 的快捷方式; 指向同一索引节点的那些目录条目,文件后面以"->"指向所连接的文件。 |
|
d 是目录,包括文件名,子目录名及其指针.它是Linux储存文件名的唯一地方。 |
|||
- 普通文件,如文本文件,C语言源代码,shell脚本,二进制的可执行文件等。 可用cat,less,more,vi,emacs来查看内容,用mv来改名。 |
|||
c 是字符设备文件,表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。 |
|||
b 是块设备,表示为装置文件里面的可供储存的接口设备(例如:硬盘) |
|||
第 1-3 位 |
确定所有者(该文件的所有者)拥有该文件的权限 |
User |
以三个为一组,且均为『rwx』 的三个参数的组合; [ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。 |
第 4-6 位 |
确定所属组(同用户组的)拥有该文件的权限 |
Group |
|
第 7-9 位 |
确定其他用户拥有该文件的权限 |
Other |
实际案例说明:
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
10 个字符确定不同用户能对文件干什么 |
第一个字符代表文件类型: - l d c b |
其余字符每 3 个一组(rwx) 读(r) 写(w) 执行(x) |
|
第一组 rwx : 文件拥有者的权限是读、写和执行 |
|
第二组 rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行 |
|
第三组 r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行 |
|
1 |
文件:硬连接数或 目录:子目录数 |
root |
用户 |
root |
组 |
1213 |
文件大小(字节),如果是文件夹,显示 4096 字节 |
Feb 2 09:39 |
最后修改日期 |
abc |
文件名 |
Linux 是注重安全性的操作系统,而安全的基础在于对权限的设定,不仅所有已存在的文件和目录要设定必要的访问权限,创建新的文件和目录时,也要设定必要的初始权限。
在 Linux 系统中,文件和目录的最大默认权限是不一样的,对文件来讲,其可拥有的最大默认权限是 666,即 rw-rw-rw-。也就是说,使用文件的任何用户都没有执行(x)权限。原因很简单,执行权限是文件的最高权限,赋予时绝对要慎重,因此绝不能在新建文件的时候就默认赋予,只能通过用户手工赋予。对目录来讲,其可拥有的最大默认权限是 777,即 rwxrwxrwx。
Windows 系统中,新建的文件和目录时通过继承上级目录的权限获得的初始权限,而 Linux 不同,它是通过使用 umask 默认权限来给所有新建的文件和目录赋予初始权限的,可以通过 umask命令查看umask 默认权限的值。
[root@localhost ~]# umask
0022
#root用户默认是0022,普通用户默认是 0002。
文件和目录的真正初始权限,可通过以下的计算得到:
文件(或目录)的初始权限 = 文件(或目录)的最大默认权限 - umask权限;
说明:
实例1:新建文件
[root@localhost ~]# umask
0022
#默认umask的值是0022
[root@localhost ~]# touch file <--新建file空文件
[root@localhost ~]# ll -d file
-rw-r--r--. 1 root root 0 Apr 18 02:36 file
实例2:新建目录
[root@localhost ~]# umask
0022
[root@localhost ~]# mkdir catalog <--新建catalog目录
[root@localhost ~]# ll -d catalog
drwxr-xr-x. 2 root root 4096 Apr 18 02:36 catalog
实例3:
[root@localhost ~]# umask
0033
[root@localhost ~]# mkdir catalog <--新建catalog目录
[root@localhost ~]# ll -d catalog
drw-r--r--. 2 root root 4096 Apr 18 02:36 catalog
umask 权限值可以通过如下命令直接修改:
[root@localhost ~]# umask 002
[root@localhost ~]# umask
0002
[root@localhost ~]# umask 033
[root@localhost ~]# umask
0033
不过,这种方式修改的 umask 只是临时有效,一旦重启或重新登陆系统,就会失效。如果想让修改永久生效,则需要修改对应的环境变量配置文件 /etc/profile。
在profile文件中,普通用户的 umask 由 if 语句的第一段定义,而超级用户 root 的 umask 值由 else 语句定义即可。 修改此文件,则 umask 值就会永久生效。
作用:用于修改文件(或目录)的所属组。
基本格式:[root@localhost ~]# chgrp [-R] 所属组 文件名(目录名)
说明:
应用实例:
当以 root 身份登录 Linux 系统时,主目录中会存在一个名为 install.log 的文件,我们可以使用如下方法修改此文件的所属组:
[root@localhost ~]# groupadd group1
#新建用于测试的群组 group1
[root@localhost ~]# chgrp group1 install.log
#修改install.log文件的所属组为group1
[root@localhost ~]# ll install.log
-rw-r--r--. 1 root group1 78495 Nov 17 05:54 install.log
#修改生效
[root@localhost ~]# chgrp testgroup install.log
chgrp: invaild group name 'testgroup'
可以看到,在具有 group1 群组的前提下,我们成功修改了 install.log 文件的所属组,但我们再次试图将所属组修改为 testgroup 时,命令执行失败,就是因为系统的 /etc/group 文件中,没有 testgroup 群组。
作用:可以修改文件或者目录的权限。
语法二:chmod [-R] 权限值 文件名
说明:
案例演示
案例1:设定 .bashrc 文件的权限为 rwxr-xr-x,则可执行如下命令:
[root@localhost ~]# chmod u=rwx,go=rx .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Sep 22 2004 .bashrc
案例2:
[root@www ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod a+w .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
案例3:将 /home/abc.txt 文件的权限修改成 rwxr-xr-x,
使用给数字的方式实现:
chmod 755 /home/abc.txt
作用:主要用于修改文件(或目录)的所有者,也可以修改文件(或目录)的所属组。
语法一: chown [-R] 所有者 文件或目录
语法二:chown [-R] 所有者:所属组 文件或目录【但修改所属组通常使用 chgrp 命令,因此并不推荐大家使用 chown 命令】
说明:
案例演示
请将 /home/abc.txt 文件的所有者修改成 tom
chown tom /home/abc.txt
请将 /home/test 目录下所有的文件和目录的所有者都修改成 tom
chown -R tom /home/test
作用:查看文件的所有者。
语法:ls –ahl
说明:
应用实例
使用 fox 来创建一个文件,看看该文件属于哪个组?
-rw-r--r--. 1 fox monster 0 11 月 5 12:50 ok.txt
作用:创建一个组
语法:groupadd 组名
应用实例
创建一个组,monster
groupadd monster
创建一个用户 fox ,并放入到 monster 组中
useradd -g monster fox
作用:删除组
语法:groupdel 组名
注意: 用户组里面有用户,必须先把用户删除了,才能删除组。
在添加用户时,可以指定将该用户添加到哪个组中,同样的用 root 的管理权限可以改变某个用户所在的组。
改变用户所在组
usermod –g 新组名 用户名
usermod –d 目录名 用户名 改变该用户登陆的初始目录。
特别说明:用户需要有进入到新目录的权限。
应用实例
将 zwj 这个用户从原来所在组,修改到 wudang 组
usermod -g wudang zwj
Linux 的目录结构为树状结构,最顶级的目录为根目录 /。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
作用:显示目录文件
语法:ls 选项[-ald] [文件或目录]
说明:
语法:cd [目录]
作用:切换目录
实例:
语法:pwd [-P]
作用:显示当前目录
说明:
实例:$ pwd
/tmp/Japan
作用:创建新目录
语法:mkdir [-mp] 目录名称 [目录名]
说明:
实例1:请到/tmp底下尝试创建数个新目录看看:
[root@www ~]# cd /tmp
[root@www tmp]# mkdir test <==创建一名为 test 的新目录
[root@www tmp]# mkdir -p test1/test2/test3/test4 <==创建多级目录
实例2:创建权限为 rwx--x--x 的目录。
[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。
如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx--x--x 的权限。
作用: 删除空目录
语法:rmdir [-p] 目录名称
说明:
实例1:
[root@www tmp]# rmdir test
作用:复制文件或目录
语法:cp -rp [原文件或目录] [目标目录]
说明:
实例:
$ cp -r /tmp/Japan/cangjing /root
将目录/tmp/Japan/cangjing复制到目录/root下
$ cp -rp /tmp/Japan/boduo /tmp/Japan/longze /root
将/tmp/Japan目录下的boduo和longze目录复制到/root下,保持目录属性
作用:删除文件
语法:rm [-rif] [文件或目录]
说明:
实例:$ rm /tmp/yum.log
删除文件/tmp/yum.log
$ rm -rf /tmp/Japan/longze
删除目录/tmp/Japan/longze
语法:
[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
作用:
实例1:复制一文件,创建一目录,将文件移动到目录中
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
将某个文件移动到某个目录去,就是这样做!
实例2:将刚刚的目录名称更名为 mvtest2
[root@www tmp]# mv mvtest mvtest2
作用:由第一行开始显示文件内容
语法:cat [参数] [文件名]
说明:
实例:
$ cat /etc/issue
$ cat -n /etc/services
作用:从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
作用:显示的时候,顺道输出行号!
作用:分页显示文件内容
语法:more [文件名]
说明:在 more 这个程序的运行过程中,你有几个按键可以按的:
实例: $ more /etc/services
作用:与 more 类似,分页显示文件内容(可向上翻页);
语法:less [文件名]
说明:less运行时可以输入的命令有:
实例:$ less /etc/services
作用:显示文件前面几行
语法:head [文件名]
说明:
实例: $ head -n 20 /etc/services
作用:显示文件后面几行
语法:tail [nf] [文件名]
说明:
实例: $ tail -n 18 /etc/services
查询实时日志时可用此命令