有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户.所有者一般是文件的创建者.所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户.在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录.
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限.当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限.例如:
$ ls?-l sobsrc.?tgz
横线代表空许可.r代表只读,w代表写,x代表可执行.注意这里共有10个位置.第一个字符指定了文件类型.在通常意义上,一个目录也是一个文件.如果第一个字符是横线,表示是一个非目录的文件.如果是d,表示是一个目录.例如:
– rw- r– r–
普通文件 文件主 组用户 其他用户
是文件sobsrc.tgz 的访问权限,表示sobsrc.tgz是一个普通文件;sobsrc.tgz的属主有读写权限;与sobsrc.tgz属主同组的用户只有读权限;其他用户也只有读权限.
确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限.也可以利用chown命令来更改某个文件或目录的所有者.利用chgrp命令来更改某个文件或目录的用户组.
下面分别对这些命令加以介绍.
chmod 命令
chmod命令是非常重要的,用于改变文件或目录的访问权限.用户用它控制文件或目录的访问权限.
以主文件夹下的一个名为"cc"的文件夹为例.下面一步一步介绍如何修改权限:
①打开终端.输入"su"(没有引号)
其中每一位的权限用数字来表示.具体有这些权限:
x(eXecute,执行,权限值为1):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限.
一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则用1表示,没有则有0表示,那么rwx则可以表示成为:111
一般都是最高位表示文件所有者权限值,第二位表示群组用户权限,最低位表示其他用户权限.
下面来举些例子熟悉下.
权限 ? ?数值 ?
该命令有两种用法.一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法.
① 文字设定法
chmod [who] [+ | – | =] [mode] 文件名?
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示"用户(user)",即文件或目录的所有者.
g 表示"同组(group)用户",即与文件属主有相同组ID的所有用户.
o 表示"其他(others)用户".
a 表示"所有(all)用户".它是系统默认值.
操作符号可以是:
+ 添加某个权限.
– 取消某个权限.
= 赋予给定权限并取消其他所有权限(如果有的话).
设置mode所表示的权限可用下述字母的任意组合:
r 可读.
w 可写.
x 可执行.
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性.
s 在文件执行时把进程的属主或组ID置为该文件的文件属主.方式"u+s"设置文件的用户ID位,"g+s"设置组ID位.
t 保存程序的文本到交换设备上.
u 与文件属主拥有一样的权限.
g 与和文件属主同组的用户拥有一样的权限.
o 与其他用户拥有一样的权限.
-c?:?若该档案权限确实已经更改,才显示其更改动作
-f?:?若该档案权限无法被更改也不要显示错误讯息
-v?:?显示权限变更的详细资料
-R?:?对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help?:?显示辅助说明
–version?:?显示版本
文件名:以空格分开的要改变权限的文件列表,支持通配符.在一个命令行中可给出多个权限方式,其间用逗号隔开.例如:chmod g+r,o+r example使同组和其他用户对文件example 有读权限.
例1:
$ chmod a+x sort
即设定文件sort的属性为:
文件属主(u) 增加执行权限
与文件属主同组用户(g) 增加执行权限
其他用户(o) 增加执行权限
$ chmod ug+w,o-x text
即设定文件text的属性为:
文件属主(u) 增加写权限
与文件属主同组用户(g) 增加写权限
其他用户(o) 删除执行权限
$ chmod u+s a.out
假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看):
并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为"–rw——-",即该文件只有其属主具有读写权限.
当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能.
所以呢,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵.
$ chmod a–x mm.txt
$ chmod?–x mm.txt
$ chmod ugo–x mm.txt
以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者.
数字设定法的一般形式为:chmod [mode] 文件名?
$ ls?–l
即设定文件mm.txt的属性为:
文件属主(u)inin 拥有读、写权限
与文件属主同组人用户(g) 拥有读权限
其他人(o) 拥有读权限
即设定wchtxt这个文件的属性为:
文件主本人(u)inin 可读/可写/可执行权
与文件主同组人(g) 可读/可执行权
其他人(o) 没有任何权限
chgrp命令
功能:改变文件或目录所属的组.
语法:chgrp?[选项] group filename?
参数:
-c或–changes 效果类似"-v"参数,但仅回报更改的部分.
-f或–quiet或–silent 不显示错误信息.
-h或–no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件.
-R或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理.
-v或–verbose 显示指令执行过程.
–help 在线帮助.
–reference=lt;参考文件或目录gt; 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同.
–version 显示版本信息.
该命令改变指定指定文件所属的用户组.其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名.文件名是以空格分开的要改变属组的文件列表,支持通配符.如果用户不是该文件的属主或超级用户,则不能改变该文件的组.
该命令的各选项含义为:
– R 递归式地改变指定目录及其下的所有子目录和文件的属组.
$?chgrp?-?R book?/opt/local?/book
改变/opt/local /book/及其子目录下的所有文件的属组为book.
chown?命令
功能:更改某个文件或目录的属主和属组.这个命令也很常用.例如root用户把自己的一个文件拷贝给用户yusi,为了让用户yusi能够存取这个文件,root用户应该把这个文件的属主设为yusi,否则,用户yusi无法存取这个文件.
语法:chown?[选项] 用户或组 文件
说明:chown将指定文件的拥有者改为指定的用户或组.用户可以是用户名或用户ID.组可以是组名或组ID.文件是以空格分开的要改变权限的文件列表,支持通配符.
参数说明:
user : 新的档案拥有者的使用者 ID
group : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本
$ chown?-?R yusi.users?/demo
例如:chown qq /home/qq ?(把home目录下的qq目录的拥有者改为qq用户)
例如:chown -R qq /home/qq ?(把home目录下的qq目录下的所有子文件的拥有者改为qq用户)
对于每个文件,其都由不同的信息组成,如图所示,这是我们之前创建的一个名为CAT1的空文件,该文件的详细信息如下所示.
文本文件与目录文件的区别就在于第一个描述符不同,目录则以"d"为描述符.如图所示,这是之前所创建的一个名为CAT的目录,该目录的详细信息及相关介绍如下所示.
使用带有-l选项的ls命令,可从许可字符串的首字母来识别所列出每个文件的类型,以下是几个常见的标识号.
●-:一般文件(硬链接).
● l:符号链接(软链接,可使用带有-s选项的ln命令来创建一个软链接).
● d:目录.
● c:字符设备文件.
● p:命名管道.
● s:套接字.
● b:块设备特殊文件.
从刚创建的CAT1文件中看到,该文件虽是cat用户创建的,但cat用户对该文件并没有可执行权限.现在要为CAT1添加可执行权(x),将这项任务交给chmod命令就可以.使用chmod命令也非常简单,如下所示,为cat用户添加对CAT1文件的可执行权.
通过以上操作后,cat用户拥有了对CAT1文件的可执行权.当然,要添加其他权限的操作也差不多,也可以使用"chmod+rwx 文件名"来授权.感兴趣的读者可以试试,这里只讲方法,可以通过这种方法来进行练习,以便更好地掌握.
如果对CAT目录下的目录同时授予可执行权,则可以使用带有-R选项的Chmod命令进行操作,其格式如下:
使用-R选项,可递归地授予各种权限.
此时此刻呢讲解取消某个用户(或用户组)拥有该文件的权限,使用的命令还是chmod,如下所示,取消cat用户对文件CAT1拥有的可执行权.
有时为了方便,把文件的拥有权授予其他人,可以使用chown来改变文件的拥有者,下面演示将cat用户的CAT1文件转给dog用户,先切换到root用户,然后才可以执行.由于CAT1文件在cat用户的主目录下,所以呢使用/home/CAT1.
命令名称:chmod
命令英文原意:change the permissions mode of a file
有两种角色可以执行该命令,一种是 root 用户,另一种就是文件的所有者.
语法:
大括号里的内容表示只能选一个,其中 u 表示该文件的所有者,g 表示所属组,o 表示其他人,a 表示所有角色.
比如,给 abc.txt 文件的所属组加一个写的权限:
也可以同时做多个授权,比如给文件所有者加上执行权限,给其他人去掉写权限:
还可以用数字表示权限.权限的数字表示:
这样文件的权限就改成 rw-r----- 了.
还有一个选项 -R 是递归修改权限,该选项的功能是更改某个目录的权限的同时更改该目录下所有的子目录和文件的权限.
命令名称: chown
英文原意:change owner
语法:chown 用户名 文件
只有管理员账户可以更改文件的所属用户.
例如:
命令名称:chgrp
英文原意:change group
语法:chgrp 组名 文件
命令名称:umask
使用命令 umask -S 可以查看新建文件或目录的默认权限.
现在显示的是新建目录的默认权限,该目录的所有者的默认权限是 rwx,所属组的默认权限是 rx,其他人的默认权限是 rx.为什么说这是新建目录的默认权限而不是新建文件的默认权限,如果你查看新建文件的权限,会发现是 rw-r--r-- ,与新建目录的权限 rwxr-xr-x 相比,每种角色的权限都少了 x.所以说,只要知道了新建目录的默认权限,再去掉 x 权限,就是新建文件的默认权限.
如果直接执行 umask 命令,会显示一个数字.
若想更改新建目录或文件的默认权限,只需执行 umask 权限掩码 即可.
虽然 Linux 系统的目录或文件的默认权限可以修改,但是 Linux 这样分配权限是有一定道理的,最好不要轻易修改.
权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以 查看某个目录下的文件或目录的权限
示例:在随意某个目录下ls -l
第一列的内容的信息解释如下:
第一段(第1位)表示是目录还是文件,-表示是文件,d表示是目录;
注:
②r–可读,w–可写,x–可执行.
③每一段的三位顺序不可变,如果没有对应的权限,则使用-表示
案例:
-rwxrwxrwx
示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限,
其他用户只有读的权限
chmod u=rwx,g=rw,o=r aaa.txt
上述示例还可以使用数字表示:
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等
df? df -h 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计
补充:
关机命令
reboot? 重新启动操作系统
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h +10? 系统再过十分钟后自动关机
总结
Linux命令
? 目录操作
? ? ? cd usr/? ? ? ? ? ? ? ? ? ? ? ? ? ? 切换到该目录下usr目录
? ? ? cd ..? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 切换到上一层目录
? ? ? cd /? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 切换到系统根目录
? ? ? mkdir 目录名称? ? ? ? ? ? ? 创建目录
? ? ? ls? ? ? 目录名称? ? ? ? ? ? ? ? 查询该目录下所有的目录和文件
? ? ? ls [-a]? 目录名称? ? ? ? ? ? ? 查询该目录下所有的目录和文件,包含隐藏文件
? ? ? ls [-l]? 目录名称? ? ? ? ? ? ? 查询该目录下所有的目录和文件的详细信息
? ? ? find / -name 目录名称? ? 查找/root下的目录(文件)
? ? ? mv 目录名称 新目录名称? 修改目录名称
? ? ? mv 目录名称 目录的新位置? ? ? 剪切
? ? ? cp -r 目录名称 目录的目标位置? 拷贝
? ? ? rm -rf? 目录? ? ? ? ? ? ? ? ? 强制删除目录
? 文件操作
? ? ? touch 文件名称? ? ? ? ? ? 创建空文件
? ? ? cat/more/less/tail 文件? 查看文件内容
? ? ? tail -f 文件? ? ? ? ? ? ? ? ? 动态查看/实时查看文件(日志)
? ? ? grep 要搜索的字符串 要搜索的文件? ? ? ? ? ? ? ? 关键字搜索
? ? ? vi/vim? 文件? ? ? ? ? ? ? ? 修改文件内容
? ? ? rm -rf 文件? ? ? ? ? ? ? ? 强制删除文件
? 文件的打包
? ? ? tar -zcvf 文件名.tar? 要打包的文件
? 文件的解压?
? ? ? tar -xvf 文件名.tar
? 扩充:将文件解压到固定位置
? ? ? tar -xvf 文件名.tar -C 指定解压的位置
? 查询当前所在位置
? ? ? pwd? ? ?
? 查看进程
? ? ? ps -ef | grep 进程名称(tomcat/mysql)
? 杀死进程
? 查看端口号
? 查看服务器ip
? ? ? ifconfig
? 查看网络是否能正常使用
? ? ? ping 外网地址? ? ? ? ? ? 查看是否能访问外网
? ? ? ping 内网ip? ? ? ? ? ? ? ? 查看是否能访问内网
? 权限命令
? 查看cpu
? ? ? top
? 查看磁盘信息
? ? ? df -h
? 查看内存信息
? ? ? free? ?
? 关机命令
? ? ? shutdown -h now? 立刻关机,其中now相当于时间为0的状态
? ? ? shutdown -h +10? ? 系统再过十分钟后自动关机
? 重新启动
? ? ? reboot? ? 重新启动操作系统
+++-