初识Linux

首先,我们介绍一下chmod指令,chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或者目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

linux系统中的每个文件和目录都有访问权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。

文件或目录的访问权限分为只读、只写、可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何更改操作。可执行权限表示允许将文件作为一个程序执行。文件被创建时,文件所有者自动拥有对文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可以根据需要把访问权限设置为需要的任何组合。

有三种不同类型的用户可对文件或目录进行访问:文件所有者、同组用户、其他用户

所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写、和执行权限;与属主同组的用户的读、写、和执行权限;系统中其他用户的读、写和执行权限。

当用 ls -l 命令显示文件或者目录的详细信息时,最左边的一列问文件的访问权限。例如:

我们以test为例,drwxrwxr-x共有10个位置,第一个字符指定了文件类型,在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,三个字符为一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表可读,w代表可写,x代表可执行。

确定了⼀个⽂件的访问权限后,⽤户可以利⽤Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利⽤chown命令来更改某个⽂件或目录的所有者。利⽤chgrp命令来更改某个⽂件或目录的⽤户组。

chmod命令详细情况如下:

1. 命令格式:
chmod [-cfvR] [--help] [--version] mode file  
2. 命令功能:
⽤于改变⽂件或目录的访问权限,⽤它控制⽂件或目录的访问权限。
3. 命令参数:
(1)必要参数:
-c 当发⽣改变时,报告处理信息
-f 错误信息不输出
-R 处理指定目录以及其子目录下的所有⽂件
-v 运行时显示详细处理信息

(2)选择参数:
--reference=<目录或者文件> 设置成具有指定目录或者文件具有相同的权限
--version 显示版本信息
<权限范围>+<权限设置> 使权限范围内的目录或者文件具有指定的权限
<权限范围>-<权限设置> 删除权限范围的目录或者文件的指定权限
<权限范围>=<权限设置> 设置权限范围内的目录或者文件的权限为指定的值
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号:
r :读权限,用数字4表
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限

该命令有两种用法。⼀种是包含字母和操作符表达式的⽂字设定法;另⼀种是包含数字的数字设定法。
  1)文字设定法:
   chmod [who] [+ | - | =] [mode] ⽂件名
  2)数字设定法:
  我们必须首先了解用数字表示的属性的含义:表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
数字设定法的⼀般形式为:chmod [mode] 文件名。
数字与字符对应关系如下:r=4,w=2,x=1
若要rwx属性则4+2+1=7;若要rw-属性则4+2=6;若要r-x属性则4+1=7

例如:对test.c文件的(u)(g)增加 x 权限:

例如:对test.c文件的(o)删除 x 权限:

例如:使用“=”设置权限:

说明撤销了原来(o)的所有权限,然后增加了x权限。

通过上面的一系列知识铺垫,我们提出以下问题:

1.进入目录需要哪些权限。

2.在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限。

此时,我们并不能下结论说有x权限就可以进入目录;所以我们取消目录test的r和w权限,再次进入目录,这时依然可以进入,我们才可以下结论说,u有x权限就可以进入目录。

通过上面的操作,我们可以看到只要有x权限,我们就可以cd进入目录。

通过以上面的操作,我们可以看到当权限为wx时,才可以进行touch文件。

通过以上面的操作,我们可以看到当权限为rx时,才可以进行ls文件。

通过上面的操作,我们可以看到当权限为wx时,才可以进行rm文件。

通过上面的操作,我们可以看到当权限为wx时,才可以进行mv文件。

(1)了解以下Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp

 

首先说明一点:usr 指 Unix System Resource,而不是User

简单说,/lib是内核级的;/usr/bin是系统级的;/usr/local/bin是用户级的。

 

【/proc】: 一个虚拟的文件系统(不是实际存储在磁盘上的)

【/sys】 :文件系统下的目录结构

【/SElinux 】:提供一个灵活的,可配置的MAC机制

【/bin 】:系统的一些指令

【/usr/bin】: 后期安装的一些软件的运行脚本

【/uer/local】: 安装软件的目录

【/var】: 用于储存variable(或不断改变的)文件

【/tmp】: 用户和程序的临时目录(/tmp给予所有系统用户读写权)

(2)了解以下重要命令. du, df, top, free, pstack, su, sudo(sudo -, sudo -s), useradd, password

【du】:  查看每个文件和目录的磁盘使用空间

选项                                      含义
zebra stripes are neat
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或–total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或–dereference - args 显示指定符号链接的源文件大小。
–exclude = <目录或文件> 略过指定的目录或文件。
-h或–human - readable 以K,M,G为单位,提高信息的可读性。
-H或–si 与 - h 参数相同,但是K,M,G是以1000为换算单位。
-l或–count - links 重复计算硬件链接的文件。
-k或–kilobytes 以KB(1024bytes)为单位输出。
-L<符号链接>或–dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-m或–megabytes 以MB为单位输出。
-s或–summarize 仅显示总计,只列出最后加总的值。
-S或–separate - dirs 显示个别目录的大小时,并不含其子目录的大小。
-x或–one - file - xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>或–exclude - from = <文件> 在<文件>指定目录或文件。

 

【df】:显示目前在linux系统上的文件系统的磁盘使用情况统计,默认情况下以1kb为单位

选项                 含义
-a 全部文件系统列表
-h 方便阅读方式显示
-H 等于“ - h”,但是计算式,1K = 1000,而不是1K = 1024
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地文件系统
-m 区块为1048576字节
–no - sync 忽略 sync 命令
-P 输出格式为POSIX
–sync 在取得磁盘信息前,先执行sync命令
-T 文件系统类型
–block - size = <区块大小> 指定区块大小
-t<文件系统类型> 只显示选定文件系统的磁盘信息
-x<文件系统类型> 不显示选定文件系统的磁盘信息
–help 显示帮助信息  
–version 显示版本信息  

 

【 top】:  显示系统中各个进程资源占用情况等信息

选项        含义
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数

常用top操作命令

q:退出top命令
s:设置刷新时间间隔
c:显示命令完全模式
t::显示或隐藏进程和CPU状态信息
m:显示或隐藏内存状态信息
l:显示或隐藏uptime信息
f:增加或减少进程显示标志
S:累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+
P:按%CPU使用率排行
T:按MITE+排行
M:按%MEM排行
u:指定显示用户进程
r:修改进程renice值
i:只显示正在运行的进程
W:保存对top的设置到文件~/.toprc,下次启动将自动调用toprc文件的设置。
h:帮助命令。
q:退出

 【free】:  显示系统使用和空闲的内存情况

选项                    含义
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-g 以GB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。

 

【pstack】:  显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。

 【su】:  切换用户权限,从普通用户切换至超级用户

 【sudo】: 以其他身份来执行命令,预设的身份为root,用户使用sudo时,必须要先输入密码,然后有五分钟有效期,超过期限必须重新输入密码

 【sudo -s】:  执行指定的shell

 

选项                                              含义
-b 在后台执行指令
-h 显示帮助
-H 将HOME环境变量设为新身份的HOME环境变量
-k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码
-l 列出目前用户可执行与无法执行的指令
-p 改变询问密码的提示符号
-s 执行指定的shell
-u<用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份
-v 延长密码有效期限5分钟
-V 显示版本信息

 

 【useradd】:  在Linux中创建新的系统用户,useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

 

选项                               含义
-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中
-d<登入目录> 指定用户登入时的启始目录
-D 变更预设值
-e<有效期限> 指定帐号的有效期限
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号
-g<群组> 指定用户所属的群组
-G<群组> 指定用户所属的附加群组
-m 自动建立用户的登入目录
-M 不要自动建立用户的登入目录
-n 取消建立以用户名称为名的群组
-r 建立系统帐号
-s 指定用户登入后所使用的shell
-u 指定用户id

 

【password】:  用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

 

选项                                     含义
-d 删除密码,仅有系统管理者才能使用
-f 强制执行
-k 设置只有在密码过期失效后,方能更新
-l 锁住密码
-s 列出密码的相关信息,仅有系统管理者才能使用
-u 解开已上锁的帐号

 

吐舌头……