Linux文件权限与属性详解 之 一般权限
Linux文件权限与属性详解 之 一般权限
Linux文件权限与属性详解 之 ACL
Linux文件权限与属性详解 之 SUID、SGID & SBIT
Linux文件权限与属性详解 之 chattr & lsattr
Linux文件权限与属性详解 之 su & sudo
一般属性
- iNode: 3152621
1). 何为iNode
2). iNode内容
3). iNode 大小
4). iNode 号 - 文件类型
1). 文件和目录
2). 字符串设备和块设备文件:
3). 链接文件
4). socket文件 - 文件访问权限
- 链接数目:
- 文件所有者
- 文件所属组
- 文件大小
- 修改时间
- 文件名称
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
对于文件或目录,除了具备一般的读写执行等普通属性(权限)外,其实还具备了很多的特殊属性(权限),下面听我慢慢道来!
一般属性
Linux的文件或目录属性主要包括:文件或目录的节点、种类、权限、链接数量、所有者和所属组、最近访问或修改的时间等内容;
例如,我们可以使用 ls -alih
[niesh@aat-sh aat-r1a]$ ls -alih
total 116K
1595625 drwxr-x---. 11 niesh niesh 4.0K Jul 26 15:40 .
1575954 drwx------. 10 niesh niesh 4.0K Jul 26 15:40 ..
1595627 -rw-r--r--. 1 niesh niesh 43K Jul 21 17:37 .13ca1a0c-b2e8-11e6-a60b-8b459dcd00e6
3152621 -rwxr-xr-x. 1 niesh niesh 12K Jul 21 17:34 aat
3152671 -rw-rw-r--. 1 niesh niesh 367 Jul 24 15:08 AAT.conf
1600855 drwxr-xr-x. 17 niesh niesh 4.0K Jul 21 17:34 data
3152663 drwxr-xr-x. 4 niesh niesh 4.0K Jul 21 17:34 license
3151254 drwxrwxr-x. 15 niesh niesh 4.0K Jul 21 17:34 local
3151228 drwxrwxr-x. 2 niesh niesh 4.0K Jul 24 14:19 log
1575043 -rwxr-xr-x. 1 niesh niesh 12K Jul 24 15:42 .serviceaat
[niesh@aat-sh aat-r1a]$
以上总共对应了8段字符,每段字符的解释如下:
- iNode:节点,文件/目录在文件系统中对应的唯一值
- 文件类型:目录、文件还是其它
- 文件权限:不同用户对该文件所具备的权限
- 链接数目:硬链接数目
- 文件所有者:文件的主人
- 文件所属组:文件所属的组
- 文件大小:
- 文件修改时间:文件最后的访问/修改时间
- 文件名:
此处,我们以 aat 为例进行解释:
3152621 -rwxr-xr-x. 1 niesh niesh 12K Jul 21 17:34 aat
1. iNode: 3152621
1). 何为iNode
顾名思义为索引节点
.
每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是 inode
,另一部份是 Block
. Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件.
2). iNode内容
我们可以使用 stat aat
来查看aat文件的iNode的详细内容。
[niesh@aat-sh aat-r1a]$ stat aat
File: `aat'
Size: 12046 Blocks: 24 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 3152621 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 558/ niesh) Gid: ( 558/ niesh)
Access: 2017-07-24 14:08:09.178005527 +0800
Modify: 2017-07-21 17:34:14.773005438 +0800
Change: 2017-07-21 17:37:05.799005438 +0800
[niesh@aat-sh aat-r1a]$
由以上信息可以看出,iNode包含如下信息:
- 文件名
- 文件大小(以字节为单位)
- 文件数据的Block位置
- 链接数
- UID
- GID
- 文件的执行权限
- 时间戳:atime(最近访问时间),ctime(状态改变时间),mtime(最近修改时间)
3). iNode 大小
iNode同样会占用硬盘空间, 所以硬盘格式化的时候,OS会自动分成两个区域:iNode区(存放iNode)和Block区(存放数据).
一个iNode所占用空间的大小一般为128/256Byte,我们可以使用 df -i
查看系统的iNode总量和使用情况,如下:
niesh@server65:~$ df -ih|grep -v none
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 12M 111K 12M 1% /
udev 3.0M 453 3.0M 1% /dev
tmpfs 3.0M 597 3.0M 1% /run
/dev/sda1 299K 298 298K 1% /boot
查看一下iNode占用空间的大小,使用 dumpe2fs -ih /dev/sda1 | grep -i node
进行查看:
niesh@server65:~$ dumpe2fs -ih /dev/sda1 | grep -i node
Inode size: 256
4). iNode 号
每个inode都有一个号码,Linux系统内部不使用文件名,而使用inode号来识别文件。对于系统来说,文件名只是inode号码便于识别的别称。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
我们可以使用 ls -i
命令查看文件/目录的iNode号
[niesh@aat-sh aat-r1a]$ ls -il aat
3152621 -rwxr-xr-x. 1 niesh niesh 12046 Jul 21 17:34 aat
2. 文件类型
Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件)。
Linux文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等
可使用 file <file-name>
命令进行查看文件类型:
[niesh@niesh Desktop]$ file other.py
other.py: Python script, ASCII text executable
1). 文件和目录
我们使用 ls -lh
查看一下桌面文件:
[niesh@niesh Desktop]$ ls -lh
总用量 8.0K
-rw-rw-r--. 1 niesh niesh 2.2K 7月 27 10:20 endian.c
drwxr-xr-x. 2 root root 70 6月 19 16:36 LN
-rw-r--r--. 1 niesh niesh 115 6月 15 17:07 other.py
查看第一个字符:
- :普通文件(包括字符文件和二进制文件),可使用
touch <file-name
进行创建;
d : 目录文件,可使用mkdir <dir-name>
进行创建
2). 字符串设备和块设备文件:
我们去查看/dev
目录下的文件,显示如下:
[niesh@niesh ~]$ ls -lh /dev/
crw--w----. 1 root tty 4, 0 6月 29 23:18 tty0
brw-rw----+ 1 root cdrom 11, 0 6月 29 23:18 sr0
c : 为字符串设备,若路由器等设备
b : 块设备,若硬盘、光驱等
3). 链接文件
同样去查看/dev
目录,我们发现了一些以l开头的文件,如下所示:
[niesh@niesh ~]$ ls -lh /dev/
lrwxrwxrwx. 1 root root 15 6月 29 23:18 stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 6月 29 23:18 stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 6月 29 23:18 stdout -> /proc/self/fd/1
l : 为链接文件,具体请看第4小节目
4). socket文件
查看 /dev
目录下的文件,会发现有s类型的文件,如下所示:
[niesh@niesh ~]$ ll /dev/
srw-rw-rw-. 1 root root 0 6月 29 23:18 log
s:套接字文件,仅作了解即可
3.文件访问权限
Linux的访问权限分为 读、写、执行三种,可以使用 ls -l
进行查看:
[niesh@niesh Desktop]$ ls -lh
总用量 8.0K
-rw-rw-r--. 1 niesh niesh 2.2K 7月 27 10:20 endian.c
drwxr-xr-x. 2 root root 70 6月 19 16:36 LN
r:可读(4)
w:可写(2),对于目录来说表示可在目录中新建文件
x:可执行(1),对于目录来说为可进入到该目录中
-:表示无对应位上的权限
仔细数一下,你会发现权限位总共有9位,每3位一组,那么这三组分别为何方神圣呢?(以 LN
为例)
第一组(rwx):表示文件所有者的权限,该文件的所有者为root,具备
可读
可写
可执行
的全部权限
第二组(r-x):文件所属组的权限,具备可读
可执行
第三组(r-x):其他人的权限(跟本文件无关的人),具备可读
可执行
- 更改文件权限
命令:chmod xxx < file-name >
r=4, w=2, x=1
[niesh@niesh Desktop]$ ls -lh
-rw-rw-r--. 1 niesh niesh 2.2K 7月 27 10:20 endian.c
[niesh@niesh Desktop]$ chmod 754 endian.c
[niesh@niesh Desktop]$ ls -lh
-rwxr-xr--. 1 niesh niesh 98 7月 27 10:34 endian.c
4代表读权限,2代表写权限,1代表执行权限
7=4+2+1,表示拥有可读可写可执行权限
5=4+1,表示拥有可读可执行权限,但是没有写权限
4 代表拥有可读权限
0 代表没有任何权限
以此类推
4. 链接数目:
对于一个文件来说,有唯一的索引接点与之对应,而对于一个索引接点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件。
链接文件,是Linux中经常使用和非常重要的一个概念,Linux下,链接可以分为两类:
- 软链接:
又称为符号链接,类似于Windows下的快捷方式,方便文件的查询等,只是一段文字,里面包含着它所指向的文件的名字,系统看到软链接后自动跳到对应的文件位置处进行处理
创建方式:ln -s source target
- 硬链接:
硬链接相当于为本文件开设了一个新的文件,但两个文件执行同一个iNode,改变一个文件的内容另一个随之改变,相当于“连体婴”;两个文件时平权的,一个删除另一个照样可用
创建方式:ln source target
可以使用ls -l
进行查看,如下:
[niesh@niesh ~]$ ls -lh /dev/
lrwxrwxrwx. 1 root root 15 6月 29 23:18 stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 6月 29 23:18 stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 6月 29 23:18 stdout -> /proc/self/fd/1
目录,用于记录本目录下的文件名等信息,iNode本身不记录文件名,因此对文件的新增、删除、修改必须具备上层目录的 w(写) 权限。
多个档名对应同一个inode,硬链接只是在某个目录下新增一笔档名链 接到某个inode号码的关联记录而已。如果将上图中任何一个档名删除,档案的inode与block都还存在,依然还可以通过另一个档名来读取正确的档 案数据。此外,不论用哪一个档名来编辑,最终的结果都会写入相同的inode和block中,因此均能进行数据的修改。
软连接就是建立一个独立的文件,而这个文件会让数据的读取指向它link的那个档案的档名,由于只是作为指向的动作,所以当来源档案被删除之后,软连接的档案无法开启,因为找不到原始档名。连结档的内容只有档名,根据档名链接到正确的目录进一步取得目标档案的inode,最终就能够读取到正确的数据。如果目标档案的原始档名被删除了那么整个环节就进行不下去了。
我们使用ls -l
查看到的链接数目,其实就是有多少个文件/目录链接到本文件/目录;对文件而言比较容易理解;对目录而言,内部包含多少个子目录就有多少个链接文件(目录不允许用户创建软连接):
[niesh@niesh ~]$ ll
总用量 0
drwxr-xr-x. 3 niesh niesh 77 7月 27 10:34 Desktop
以上,Desktop有3个链接文件,为 . .. LN
[niesh@niesh Desktop]$ ll
总用量 20
drwxr-xr-x. 3 niesh niesh 77 7月 27 10:34 .
drwx------. 19 niesh niesh 4096 7月 27 13:51 ..
drwxr-xr-x. 2 root root 70 6月 19 16:36 LN
[niesh@niesh Desktop]$ mkdir test
我再建一个目录test
[niesh@niesh Desktop]$ ll
总用量 20
drwxr-xr-x. 3 niesh niesh 77 7月 27 10:34 .
drwx------. 19 niesh niesh 4096 7月 27 13:51 ..
drwxr-xr-x. 2 root root 70 6月 19 16:36 LN
drwxrwxr-x. 2 niesh niesh 6 7月 27 13:54 test
下面我们查看一下Desktop的链接数目:
[niesh@niesh ~]$ ll
drwxr-xr-x. 4 niesh niesh 88 7月 27 13:54 Desktop
变为4个了,验证完毕
5. 文件所有者
即文件的拥有者,通常为文件的创建者。
创建文件/目录有其默认的属性:
文件:-rw-rw-rw- (666)
目录:drwxdwxdwx (777)
但实际上我们新建文件/目录后,查看属性,发现并不是以上默认值:
[niesh@niesh Desktop]$ mkdir dir
[niesh@niesh Desktop]$ touch file
[niesh@niesh Desktop]$ ls -lh
总用量 0
drwxrwxr-x. 2 niesh niesh 6 7月 27 14:37 dir
-rw-rw-r--. 1 niesh niesh 0 7月 27 14:37 file
drwxr-xr-x. 2 root root 70 6月 19 16:36 LN
以上可以看出
- 文件的权限为
-rw-rw-r--
- 目录的权限为
drwxrwxr-x
这是由于 umask
造成的
[niesh@niesh Desktop]$ umask
0002
umask的默认值为0002,
第一位为特殊权限(后面讲解),
第二位为文件所有者权限,
第三位为文件所属组权限
第四位为其它人权限
则用户创建后的权限为:
文件权限: -rw-rw-rw- - -------w- = -rw-rw-r--
目录权限:drwxdwxdwx - ----w--w- = dwrxrwxr-x
当然你也可以自己更改:
[niesh@niesh Desktop]$ umask 007
[niesh@niesh Desktop]$ umask
0007
[niesh@niesh Desktop]$ touch aa
[niesh@niesh Desktop]$ mkdir bb
[niesh@niesh Desktop]$ ls -lh
总用量 0
-rw-rw----. 1 niesh niesh 0 7月 27 14:53 aa
drwxrwx---. 2 niesh niesh 6 7月 27 14:53 bb
drwxr-xr-x. 2 root root 70 6月 19 16:36 LN
[niesh@niesh Desktop]$
你看,改了吧!
- 更改文件所有者
命令:chown username file|directory
[niesh@niesh Desktop]$ ll
总用量 0
drwxr-xr-x. 2 root root 70 6月 19 16:36 LN
[niesh@niesh Desktop]$ sudo chown niesh LN
[sudo] password for niesh:
[niesh@niesh Desktop]$ ll
总用量 0
drwxr-xr-x. 2 niesh root 70 6月 19 16:36 LN
6. 文件所属组
即文件的所属Group,其设置等方法类似文件所有者
。
- 更改文件所属组
命令:chgrp groupname file|directory
[niesh@niesh Desktop]$ ll
总用量 0
drwxr-xr-x. 2 niesh root 70 6月 19 16:36 LN
[niesh@niesh Desktop]$ chgrp niesh LN
[niesh@niesh Desktop]$ ll
总用量 0
drwxr-xr-x. 2 niesh niesh 70 6月 19 16:36 LN
[niesh@niesh Desktop]$
7. 文件大小
文件大小即文件锁占用的字节数,这对于文件来说很容易理解,但对于目录,需要清晰的知道目录是什么,占用空间的目的等。
- 何为目录
目录其实就是文件夹,是一组信息的集合,用于连接和包含各个文件名- 目录内容
RedHat 默认的目录最小为4k,但我的CentOs是按照实际显示的
你可以用 vim 来查看目录锁包含的内容
[niesh@niesh Desktop]$ ll
总用量 0
drwxr-xr-x. 2 niesh niesh 70 7月 27 15:29 LN
[niesh@niesh Desktop]$ ll LN/
总用量 32
-rwxr-xr-x. 1 root root 8976 6月 19 16:36 getlongopt
-rwxrwxrwx. 1 root root 1578 6月 19 16:40 getlongopt.c
-rwxrwxrwx. 1 root root 8734 6月 19 13:29 getopt
-rwxrwxrwx. 1 root root 1237 6月 19 13:29 getopt.c
[niesh@niesh Desktop]$ vim LN/
看,里面是不是包含了所有的文件/目录名?
里面的.swp
文件为swap,请自行google.
8. 修改时间
一般,文件包括三个时间:
- atime (access time):
最近访问时间,即最近在社么时间访问了该文件- ctime (changed time):
状态该表时间,即对文件的执行权限进行了修改的时间- mtime (modify time):
修改时间,即最近什么时候对文件进行了修改
PS: Linux没有创建时间的概念
ls
显示的时间为mtime
另外,你可以使用 stat <file-name>
查看文件的详细信息(上面已述)
9. 文件名称
这里只有一点需要注意:
文件名前加
.
为隐藏文件
Linux文件权限与属性详解 之 一般权限的更多相关文章
- Linux文件权限与属性详解 之 SUID、SGID & SBIT
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- Linux文件权限与属性详解 之 ACL
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- Linux文件权限与属性详解 之 chattr & lsattr
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- Linux文件权限与属性详解 之 su & sudo
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- 轻松学习Linux之Shell文件和目录属性详解
轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...
- Linux文件权限与属性详解 之 SUID、SGID&SBIT
一.SetUID 1.Linux普通用户可以修改自己的密码,这个是一个合情合理的设置; 修改密码其实修改的是/etc/shadow这个文件,这个文件的属性: ----------. 1 root ro ...
- linux 文件查找 find命令详解
一,从索引库查找文件:locate 索引库:操作系统会周期性的遍历根文件系统,然后生成索引库 手动更新索引库:updatedb 语法:locate [OPTION]... PATTERN... 只匹配 ...
- linux学习7 Linux文件系统功能和作用详解
一.终端 1.用户界面 GUI: GNome KDE CLI: bash,zsh,sh,csh,tcsh,ksh 2.远程连接 a.ssh协议. 查看系统是否监听于tcp协议的22号端口: ss - ...
- Linux文件处理命令 ls 详解
Linux系统的应用场景最多的就是用作服务器的系统了,简洁,安全,高效,一般我们服务器端不会安装Linux的图形化界面,虽然现在一些Linux发行版的图形界面也很漂亮,但是,服务器最主要的是高效.所以 ...
随机推荐
- 2019浙大校赛--G--Postman(简单思维题)
一个思维水题 题目大意为,一个邮递员要投递N封信,一次从邮局来回只能投递K封.求最短的投递总距离.需注意,最后一次投递后无需返回邮局. 本题思路要点: 1.最后一次投递无需返回邮局,故最后一次投递所行 ...
- Linux 下 ftp的使用
最近需要在Linux上搭建FTP服务,通过网上的一些大神学习了一些新知识,在这个做一个总结: Linux 下FTP 为 vsftp (linux red hat)1.FTP配置路径:/etc/vsft ...
- kubernetes1.7.6 ha高可用部署
写在前面: 1. 该文章部署方式为二进制部署. 2. 版本信息 k8s 1.7.6,etcd 3.2.9 3. 高可用部分 etcd做高可用集群.kube-apiserver 为无状态服务使用hap ...
- VUE项目 npm run build卡住不动,也不报错
npm config set registry http://registry.cnpmjs.org try again npm run build 居然能动了....
- linux sshd 登录不需要密码
ssh 安全外壳协议 协议22 linux 默认放行了 22 号接口 ssh 默认安装 自行安装 应该是 openssh-server ssh命令是 openssh ssh-keygen 生成密钥 生 ...
- 求N!的位数
#include<iostream> #include <cstdio> #include <cmath> using namespace std; const d ...
- hadoop配置笔记
接上回,hadoop的配置文件都在下载的压缩包目录中的etc/hadoop/中 hadoop-env.sh有个地方配置java_home 其他常用的设置文件有: core-site.xml yarn- ...
- 最小化安装的centos7.5上编译安装git2.19
VMware Workstation已经采用最小化安装CentOS7,显示版本为CentOS7.5,准备采用yum安装git. 采用yum list git发现可安装的GIT软件包版本1.8.3.1, ...
- C#算法与数据结构之线性结构
线性结构是什么? 线性结构是一种数据结构,它有一对一的关系,就像一个长对,一个接一个,特点是,除第一个元素和最后一个元素外,其它元素前后只有一个元素. 简单示例1: static void Main( ...
- [转] Firewall and network filtering in libvirt
Firewall and network filtering in libvirt There are three pieces of libvirt functionality which do n ...