在linux中,有以下三类用户
u=user,g=group,o=other
有三种权限rwx ,分别为可读,可写,可执行
对文件而言:
r: 可以查看文件内容
w: 可以修改文件内容
x:可以执行文件
对目录而言:
r:可以使用ls命令查看此目录中的文件的信息
w: 表示用户可以在此目录中创建文件,也可删除文件,如果有写权限,可以做
任何事情。所以,开放目录的写权限,要非常小心
x: 表示用户可以cd进这个目录,并且可以使用ls -l命令此目录中的文件的信息
目录通常要有x权限。
rwx,
r=4,w=2,x=1
有这三类权限
rwx 111 7
rw- 110 6
r-x 101 5
r-- 100 4
-wx 011 3
-w- 010 2
--x 001 1
--- 000 0
如 664 从上面可以看出,rw-rw-r--
怎么改变文件权限
chmod,chown,chgrp
chmod改变文件权限
-R 递归改变目录中的子目录的权限
1.通过数字改变权限,所有类别用户的权限
2.用一类用户改变,如u,g,o=rwx,rw- , u=rwx,go=r-- ,a=rw-
3.+号和-号。u,g,o+r
如a.txt
chmod 700 a.txt
chmod u=rwx,go=--- a.txt
如/home/fred ,保证属主的权限不变,其它用户没有权限
chmod -R 700 /home/fred 这种以改法不对,因为不能保证目录中所有的文件都
可执行,所以,用下面方法。
chmod -R go=--- /home/fred
三种方式中,肯定有一种方式是最适合的
chown改变文件属主,chgrp改变文件属组
都支持一个选项 -R ,递归改变
chwon [options] user file or dir
chgrp [options] group file or dir
chown --reference=b c (把c目录的权限改变成和b的一样,即参照b的权限)
默认权限umask
普通文件默认不能有执行权限
目录 777-umask
文件 666-umask
umask的设置只对当前系统有效,重启系统后,就无效了
第6章,shell
shell就相当于一个翻译官,就是一个软件,是一个接口,用来
与用户和内核打交道,人机接口。
语言风格类似于c语言。
shell的分类
sh->csh->ksd
bash 遵守GPL规范,功能异常强大,几乎所有的linux默认的都是bash
shell是解释运行的。是脚本语言。
bash的变量
1.本地变量:只对本shell有效,对于子shell无效。若想对子 shell有效,
必须声明成环境变量,用export var就行了。
2.环境变量
3.预定义变量(通常是位置变量)
4.特殊变量
如何声明一个变量,直接变量名=值,就可以了。
如,abc=123
如何引用一个变量,
如echo $abc
history命令的环境变量
HISTSIZE 历史中的命令数
HISTFILE 存储历史中的文件
HISTCONTROL 有以下几个参数
ignorespace
erasedups
ignoredups
ignorespale
命令补齐
$path环境变量中
文件名补齐
则是在已经指定的目录前缀为起点目录下查找所对应文件或目录
history 数字 :表示显示最近执行过的命令
!! 表示命令历史中的最近一条命令
!ec 表示命令历史中的最近一条以ec开头的命令
!56 表示执行命令历史中的第56条命令
!?abc 表示包含了abc的命令
!-3 表示倒数第三个命令
!$引用上一个参数的最后一个参数
命令历史中会保留重复的命令,怎么改变这种情况呢?可以用下面的命令
shell
开发语言
1.编译语言
2.解释语言:bash,perl,python,php,ruby
bash的变量类型:
1.本地变量:只对本shell有效,对于子shell无效。若想对子 shell有效,
必须声明成环境变量,用export var就行了。
2.环 境 变量
3.预定义变量:(通常是位置变量),
4.特 殊 变量
示例脚本
#!/bin/bash
cd /etc
pwd
cp -a /etc/skel /home/jack
chmod -R go=--- /home/jack
ls -ld /home/jack
useradd wendy
chown -R wendy /home/jack
id wendy