linux文件系统-文件权限

linux的文件权限和目录配置

一、用户与用户组

1.1 概念

1、所有者 (User)
2、用户组(Group)
    每个账号都可以有个多个用户组的支持
3、其他人(Others)

1.2 用户身份与用户组所记录的文件

1、用户身份(/etc/passwd)
[root@VM_0_4_centos ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
2、用户密码(/etc/shadow)
[root@VM_0_4_centos ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
3、用户组(/etc/group)
[root@VM_0_4_centos ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:centos
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:

二、文件权限

2.1、文件属性

[root@VM_0_4_centos chenwei]# ll -al var.sh
d   rwxr-xr-x  3    root root   4096 Jun 20 21:39 program 
-   rwxr-xr-x  1    root root   138  Jun 16 13:37 var.sh
[1] [   2   ] [3]   [4]   [5]   [6]     [7]        [8]

1、文件类型
- d : 目录
- - :文件
- l : 连接文件
- b : 设备文件里面的可供存储的接口设备
- c : 设备文件里面的串行端口设备,如键盘,鼠标。
2、文件权限(permission)
- r : 可读(read)
- w : 可写(write)
- x : 可执行(execute)
- -: 没有权限
3组权限
- 文件所有者
- 用户组的权限
- 其他人

3、有多少文件名连接到到此节点(i-node)
每个文件名链接一个i-node, 这个属性记录的就是有多少不同的文件名连接了相同的一个i-node号码

4、所有者账号
5、所属用户帐户
6、文件大小,默认单位是B
7、文件的创建时间或者是最近的修改日期
默认显示(月/日 )以及时间,如果修改的太久的话,时间将会显示年。

[root@VM_0_4_centos chenwei]# ls -al --full-time
total 108
drwx------   4 chenwei chenwei  4096 2018-06-20 21:39:42.833955055 +0800 .

8、文件名
如果文件之前有一个. 表示的是隐藏文件

2.2、修改文件属性和权限

  • chgrp : 修改用户组 change group
  • chown : 修改所有者 change owner
  • chmod : 修改权限

    2.2.1、 改变用户组(chgrp)
    2.2.1.1、语法

chgrp [-R] 组名 dirname/filename ...
2.2.1.2、选项
    -R:递归(recursive),持续更改,连同子目录下的所有文件,目录

2.2.1.3、案例
-rwxr--r-- 1 root  root     99 Jun 17 14:37 case.sh
[root@VM_0_4_centos chenwei]# chgrp chenwei case.sh
-rwxr--r-- 1 root chenwei   99 Jun 17 14:37 case.sh
2.2.1.4、 注意
    用户组 必须存在, 也就是用户组必须存在/etc/group中
[root@VM_0_4_centos chenwei]# chgrp xxx case.sh 
chgrp: invalid group: ‘xxx’

2.2.2、改变文件所有者(chown)
2.2.2.1、语法

chown [-R] 用户名 dirname/filename 
chown [-R] 用户名:用户组 dirname/filename 
chown [-R] 用户名.用户组 dirname/filename
chown [-R] .用户组 dirname/filename  
2.2.2.2、选项
    -R:递归(recursive),持续更改,连同子目录下的所有文件,目录
2.2.2.3、 案例
[root@VM_0_4_centos chenwei]# ll db.sh
-rwxr--r-- 1 root root 639 Jun 17 16:05 db.sh
[root@VM_0_4_centos chenwei]# chown chenwei db.sh
[root@VM_0_4_centos chenwei]# ll db.sh
-rwxr--r-- 1 chenwei root 639 Jun 17 16:05 db.sh

## 更改所在用户和用户组
[root@VM_0_4_centos chenwei]# chown root:chenwei db.sh
[root@VM_0_4_centos chenwei]# ll db.sh
-rwxr--r-- 1 root chenwei 639 Jun 17 16:05 db.sh
2.2.2.4、注意

- 用户 必须存在,也就是用户必须存在/etc/passwd/中
- . 可以等同: 但是用户名中如果有. 就无效了,推荐使用:
- . 可以被用来直接刚刚用户组

2.2.3、改变文件权限(chmod)
2.2.3.1、数字类型改变文件权限
r: 4
w: 2
x: 1
2.2.3.1.1、 语法

chmod [-R] xyz dirname/filename 
        2.2.3.1.2、 案例
[root@VM_0_4_centos chenwei]# ll db.sh
-rwxr--r-- 1 root chenwei 639 Jun 17 16:05 db.sh
[root@VM_0_4_centos chenwei]# chmod 777 db.sh
[root@VM_0_4_centos chenwei]# ll db.sh
-rwxrwxrwx 1 root chenwei 639 Jun 17 16:05 db.sh
2.2.3.2、字符类型改变文件权限
  2.2.3.2.1、说明

u :
g :
o :
a :
+: 加权限
-: 减权限
=: 设置权限

  2.2.3.2.2、案例
[root@VM_0_4_centos chenwei]# chmod u=rwx,go=rx db.sh
[root@VM_0_4_centos chenwei]# chmod u=rwx, go=rx db.sh
chmod: invalid mode: ‘u=rwx,’
Try 'chmod --help' for more information.

-rwxr-xr-x 1 root chenwei 639 Jun 17 16:05 db.sh
[root@VM_0_4_centos chenwei]# chmod g+w db.sh
[root@VM_0_4_centos chenwei]# ll db.sh
-rwxrwxr-x 1 root chenwei 639 Jun 17 16:05 db.sh
  2.2.3.2.3、注意
      设置u g o 是不能有空格

2.3、目录和文件的权限意义

2.3.1、权限对目录的意义(目录主要的内容记录文件名的列表,文件名与目录有强烈的关系)

1. r : 可读取目录结构列表的权限
2. w: 可更改该目录结构列表的
- 新建新的文件和目录
- 删除已存在的文件和目录(不论文件权限如何)
- 将已存在的文件重命名
- 转移该目录内的文件、目录位置
3. x: 代表用户是否可以进入该目录。

2.3.2、权限对文件的意义(文件记录的是文件的实际内容)
  1. r: 可读取此文件的实际内容
  2. w: 可以编辑、新增或者是修改该文件的内容(不包括删除该文件,修改该文件名称)
  3. x: 可被系统执行

2.4、Linux 文件种类与扩展名

2.4.1、文件种类

- 普通文件 (regular file)(-)
(1) 纯文本文件(ASCII)
(2) 二进制文件(binary)
(3) 数据格式文件(data):某些程序在运行的过程中会读取某些特定格式的文件。
-目录 (directory)(d)
- 连接文件(link) (l)
- 设备与设备文件(dervice)
通过这个文件在/dev/下
(1) 块(block)设备文件,就是一些存储数据,以提供系统随机访问的接口设置,如硬盘,软盘。(b)
(2) 字符(character)设备文件,一些串行端口的接口设备,如键盘,鼠标。特征就是“一次性读取”的,不能够截断输出。(c)
- 套接字(socket)(s)
通过在/var/run这个目录下
(1) 用在网络上的数据连接
- 管道(FIFO, pipe)(p)
在多个程序同时方式同一个文件时,FIFO就是first-in-first-out。

2.4.2、文件扩展名
    文件名只是让我们了解该文件可能的用途而已,真正的执行与否仍然需要权限的规范才行。

- .sh: 脚本或批处理文件(scripts),是使用shell编写的
- .Z,.tar,.tar.gz, .zip, .tgz: 经过打包的压缩文件
- .html, .php

2.4.3、linux文件长度限制
-Ext2/Ext3 文件系统时
    (1) 文件名最长为255字符;
    (2) 包括完整路径名称及目录(/)的文件名为4096个字符。

2.4.4、linux文件名限制
    最好避免设置一些特殊的字符(* ? > < ; $ ! [] | \ ' " ` () {} + -)

参考

鸟哥的linux私房菜

猜你喜欢

转载自blog.csdn.net/ab_xue/article/details/80785334