linux是多人多任务操作系统,任何一个文件都具有用户(User)、所属群组(Group)、其他人(Others)三张身份的个别权限。但是注意,root账号权限最高,不受约束。一个用户,可以归属多个群组。
linux中,账号都记录在 /etc/passwd 文件内,账号密码保存在/etc/shadow,所有用户组名记录在/etc/group,这三个文件不能随意删除。
1 文件权限
1.1 文件属性
ls 查看文件(list)
ls -al 列出所有文件以及详细权限和属性
具体字段含义
1.1.1 文件类型与权限(第一栏)
第一个字符代表文件类型,比如是目录(d)、文件(-)、链接文件(l)等等,上图第一个为-,表示为文件
后续字符以三个为一组,均为 r(可读read)w(可写,write) x(可执行excute),或 - (代表没有对应权限)
第一组(rw-)为 文件拥有者 可具备的权限,可读可写,但不可执行
第二组 (r—)为 加入此用户组之账号的权限
第三组 (r—) 为 非本人且没有加入本用户组的其他账号的权限
1.1.2 多少文件链接到此节点(第二栏)
1.1.3 文件(目录)的拥有者(第三栏)
1.1.4 文件(目录)所属用户组(第四栏)
上图皆为root组,一个用户可以加入多个用户组中,假如账号student1加入到root用户组,那他对上图.autorelabel文件有什么权限呢,对应到第一栏第二组(r—)表示仅仅拥有可读权限。
1.1.5 文件大小(第五栏)
1.1.6 文件创建日期或最近修改日期(第六栏)
时间太长,则只会显示年份,较近则显示详细时间,ls -l —full-time 则可显示完整时间
1.1.7 文件名(第七栏)
如果前面带有. 则表示为隐藏文件,ls不显示隐藏文件,ls -a则显示隐藏文件
1.2 修改文件属性和权限
1.2.1 chgrp 修改文件所属用户组(change+group)
chgrp groupname [-R] dirname/filename
用户组必须在 /etc/group已经存在, -R用在目录上,表示递归,里面所有的子文件都改变。
1.2.2 chown 修改文件拥有者(change+owner)
chown user [-R] dirname/filename
chown user:group [-R] dirname/filename (同时修改拥有者和用户组)
1.2.3 chmod 修改文件权限(change+modify)
文件的基本权限有9个(三组),既ls -al显示的第一栏, 权限设置有两种方式
数字方式:
权限会对应数字: r:4, w:2, x:1
每种身份(owner、group、others)各自的三个权限(r、w、x)数字需要累加,
比如上面就是(4+2+0=6)(4+0+0=4) (4+0+0=4) 644
改成rwxrwx—-,也就是(4+2+1=7)(4+2+1=7) (0+0+0=0) 770
符号方式:
chmod |
u (User) | +(增加权限) | r | 文件或目录 |
---|---|---|---|---|
g (Group) | -(减少权限) | w | ||
o (Others) | =(设置权限) | x | ||
a (all) |
比如:
设置
chmod u=rwx,g=rx,o=rw dirname/filename
增加
chomd a+w dirname/filename (给所有人可写入的权限)
1.3 权限对文件和目录的意义
对于文件,rwx权限只针对文件内容本身,读取/修改/执行文件,但是不能删除文件
对于目录,r 读取目录下的文件名,w 改变目录下的文件(包括删除文件),x 进入目录的权限(cd进去)
2 linux文件种类和扩展
2.1 任何设备在linux下都是文件
类型 | ls -l第一栏显示 | |
---|---|---|
常规文件 | 纯文本ASCII/二进制文件binary /数据文件data |
- |
目录 | 目录directory | d |
链接文件 | link,类似window桌面快捷方式 | l(L小写) |
设备与设备文件 | device,常见于/dev目录下 | b(区块设备文件) c(字符设备文件) |
数据接口文件 | sockets,网络数据交换,常见于/run或/tmp | s |
数据输送文件 | FIFO(first-in-first-out),pipe | p(管道pipe) |
2.2 文件扩展
linux的文件是没有所谓的扩展名,文件能否执行 跟 是否有文件x(可执行)权限决定的。(不同于window上面的.exe等等由扩展名决定)
但是能否执行成功,是由文件数据内容决定的,比如对a.txt纯文本有x权限,但是纯文本并不能执行。
linux系统上文件扩展名 只是 用来表示文件种类,常用的扩展名:
.sh | 脚本或批处理文件 | 因为批处理文件使用shell写成 |
---|---|---|
Z、.tar、tar.gz 、.zip 、 .tgz | 经过打包过的压缩文件 | 压缩软件gunzip/tar/……. |
.html .php |
3 目录配置
按标准FHS配置,定义了 :
/ (根目录,启动有关)
/usr (unix software resource,与软件安装执行有关)
/var (variable, 与系统运行过程有关)
必须存在的目录:
/bin /boot /dev /etc /lib /media /mnt ….
建议存在的目录:
/home /lib /root
4 目录树
绝对路径:/root/b 从根目录(/)开始
相对路径:./home/abc 或 ../../home/abc 以当前所在位置的相对位置.
( . 代表当前的目录,也可以用./ )
( .. 代表上一层目录,也可以用../ )