5.1 文件系统安全(访问权限)
在unixstuff目录中,输入
% ls -l
会输出很多有关目录的内容细节
每一个文件和目录都有相关的访问权限,可以看出是什么用户什么组拥有这个文件。
-rwxrw-r-- 1 ee51ab beng95 2450 Sept29 11:52 file1
最左边一列的是十个字符组成的字符串,是由d,r,w,x,-,还有s或者S组成的,如果开头是d的
话就代表是一个目录,开头是-的话就代表是字符串的开始。
其余的九个字符显示的就是文件访问权限,三个一组加起来是九个。
- 最左边的一组表示的文件所有者的权限
- 中间的一组表示同一组的成员的权限
- 最右边的一组表示所有其他人的权限
符号r,w,等的含义根据文件或者目录来讲含义是不一样的。
文件的访问权限
- r表示可以读取,就是有读和拷贝的权限
- w表示写权限,就是可以修改文件
- x表示可以执行的权限
目录的访问权限
- r表示用户可以列印目录的内容
- w意思是用户可以删除目录里的文件或者往目录里添加文件
- x就可以访问目录里的文件,也就是可以读取目录里的所有文件
所以,想要读一个文件,首先要有这个文件所在的目录的执行权限。
一些例子
权限 | 意思 |
---|---|
-rwxrwxrwx | 可以对一个文件可读可写可执行,还有可删除 |
-rw------- | 只有所有者可以读写,其他人不能读写也没有执行权(例如邮件) |
5.2 更改访问权限
符号 | 意思 |
---|---|
u | user |
g | group |
o | other |
a | all |
r | read |
w | write(and delete) |
x | execute(and access directory) |
+ | add permission |
- | take away permission |
chmod(changing a file mode)
只有所有者可以使用chmod来更改文件的权限。
符号 | 意思 |
---|---|
u | user |
g | group |
o | other |
a | all |
r | read |
w | write(and delete) |
x | execute(and access directory) |
+ | add permission |
- | take away permission |
例如移除组成员和其他人对biglist文件的写和执行权限
% chmod go-rwx biglist
习题 5a
尝试改变文件science.txt和目录backups的访问权限
5.3 进程和任务
一个进程,就是以PID(进程ID)来定义的执行程序。可以使用以下信息来看看进程相关信息。
% ps
一个进程可以再前台运行,也可以在后台运行,也可以挂起。一般来说shell会在程序运行结束之后
才返回提示符。
一些进程所花的时间会很长很长,占据着终端屏幕,也不能做其他事情。后台运行一个进程就可以
马上回到UNIX提示符,可以操作其他任务了就。
运行后台进程
为了将进程后台运行,在命令行的结尾可以加一个&符号,例如,sleep命令可以使得计算机进行等
待,时间是10秒。
% sleep 10
在提示符出现之前会有十秒的时间间隔,在出现之前,什么也做不了。
也可以将这个等待命令放到后台运行
% sleep 10 &
[1] 6259
符号&会将进程放到后台运行,并且直接返回提示符,允许你在运行期间做其他的事情。
上面第一行是用户的输入命令,第二行是机器返回的信息,作业号和进程ID。用户被告知的是第一
个作业号(数字1),由方括号包裹。后面的PID会在进程完成的时候返回。后台运行在作业运行时
间很长的时候是非常有用的。
将前台的进程放到后台去
在提示符中输入,
% sleep 1000
你可以通过按下[Ctrl]+[z]来挂起进程,这个进程会进入一个作业的序列,jobs命令可以查看这个
序列。
[1] Suspended sleep 1000
[2] Running netscape
[3] Running matlab
将作业重新拉回前台运行,只要输入
% fg %jobnumber
比如,重新唤醒sleep 1000,
% fg %1
fg命令不带参数的话就会唤醒最近的一个挂起进程。
5.5 杀死一个进程
kill(终结或者中断一个进程)
有时候必须杀死一个进程,比如程序陷入无限循环。杀死一个前台的进程可以使用组合键
[Ctrl]+[c]。
% sleep 100
^C
杀死一个挂起的或者后台运行的进程可以使用kill命令
% kill %jobnumber
比如现在
% sleep 100 &
% jobs
如果他的作业号是4
% kill %4
ps(process status)
杀死一个进程,可以使用作业号或者使用进程ID,都可以
% sleep 1000 &
% ps
PID TT S TIME COMMAND
20077 pts/5 S 0:05 sleep 1000
21563 pts/5 T 0:00 netscape
21873 pts/5 S 0:25 nedit
通过进程号来杀死进程
% kill 20077
如果进程拒绝被终止,那就可以启用-9选项来强制执行
% kill -9 20077
注意:想要终止其他用户的进程是不可能的。
小结
命令 | 意思 |
---|---|
ls -lag | 列出所有文件访问权限 |
chmod [选项] 文件 | 改变文件的访问权限 |
命令 & | 将命令后台运行 |
^c | 组合键来终止前台进程 |
^z | 组合键来挂起前台进程 |
bg | 后台运行挂起的进程 |
jobs | 列出现在的作业 |
fg %1 | 将作业1拿到前台运行 |
kill %1 | 终止作业1 |
ps | 列出当前的进程 |
kill 26152 | 终止进程26152 |
网友评论