器→工具, 工具软件

Linux文件权限查看与修改

钱魏Way · · 102 次浏览

Linux 是一个多用户、多任务的系统,常常有多人同时使用一台机工作,为了保护每个人的隐私权,“文件所有者”的角色就显得相当重要了。当Linux用户登录系统之后,就会携带一个用户身份(User ID,UID)和一个用户组身份(Group ID,GID),相当于自己的名片。当需要访问文件或程序时,刷一下名片就能知道是否能读、写、执行了。

Linux文件权限的查看与解读

在根目录下输入 ls -l  可看到如下信息:

[root@localhost /]# ls -l
total 32
lrwxrwxrwx.   1 root root    7 Aug 18 21:27 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 Aug 26 06:10 boot
drwxr-xr-x.  20 root root 3160 Aug 27 23:44 dev
drwxr-xr-x.  74 root root 8192 Aug 28 00:39 etc
drwxr-xr-x.   3 root root   15 Aug 18 21:31 home
lrwxrwxrwx.   1 root root    7 Aug 18 21:27 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Aug 18 21:27 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Aug 12  2015 media
drwxr-xr-x.   2 root root    6 Aug 12  2015 mnt
drwxr-xr-x.   2 root root    6 Aug 12  2015 opt
dr-xr-xr-x. 364 root root    0 Aug 27 23:43 proc
dr-xr-x---.   2 root root 4096 Aug 18 21:31 root
drwxr-xr-x.  21 root root  620 Aug 28 00:39 run
lrwxrwxrwx.   1 root root    8 Aug 18 21:27 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Aug 12  2015 srv
dr-xr-xr-x.  13 root root    0 Aug 27 23:43 sys
drwxrwxrwt.   7 root root 4096 Aug 28 00:30 tmp
drwxr-xr-x.  13 root root 4096 Aug 18 21:27 usr
drwxr-xr-x.  19 root root 4096 Aug 27 23:43 var

每条记录由7部分组成,以 lrwxrwxrwx. 1 root root 7 Aug 18 21:27 bin -> usr/bin 为例,按照顺序,具体代表的含义是:

  • lrwxrwxrwx.代表的是文件类型和权限
  • 1 代表文件连接数
  • root 代表拥有者
  • root 代表所属用户组
  • 7 代表文件大小(以K为单位)
  • Aug 18 21:27 代表文件最后修改时间
  • bin -> usr/bin 文件名

先来拆分下lrwxrwxrwx.这串字符,其中第一个字符用来描述文件的类型,可选值为:

  • – 代表普通文件
  • d 代表目录
  • l 代表这个是软连接或硬连接
  • b 代表块设备,如磁盘等保存大块数据的设备
  • c 代表字符设备,如鼠标、键盘等需要连续串行读写的设备
  • s 代表套嵌字(socket)文件
  • p 代表命名管道文件

这个文件l,则代表是一个软连接或硬连接。紧接的9个字符,需要三个三个的看,分别代表着:

  • 拥有者的权限
  • 所属组的权限
  • 其他用户的权限

顺序为rwx,对应的是Read(读)、Write(写)、eXecute(执行)的权限,如果不具有某项权限,则使用-表示。

最后一个.可能让人很疑惑,是用来做什么的,查询了下,资料显示这个点表示的是存在“SELinux的安全标签”!,如果关闭了selinux,则不过出现该点。

rwx 权限详解

rwx 作用到文件
[r]代表可读(read):可以读取,查看
[w]代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是该文件所在目录有写权限
[x]代表可执行(execute):可以被执行

rwx 作用到目录
[r]代表可读(read):可以读取,查看
[w]代表可写(write):可以修改,目录内创建+删除+重命名目录
[x]代表可执行(execute):可以进入该目录

另外注意到最后的这次演示的最后的文件名,存在着一个 -> 代表则软连接或硬连接,接下来就来学习下软连接和硬连接的区别。

  • 软连接(也称作符号链接——symbolic link, symlink or soft link),是一类特殊的文件, 其包含有一条以绝对路径或者相对路径的形式指向其它文件或者目录的引用。有点类似于windows的快捷方式。创建方式是:ln -s source dist
  • 硬连接,指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。创建方式是:ln source dist

通过一些梳理,可以知道软连接与硬连接的一些异同:

  • 使用时差别不大,都相当于一个文件具有不同的路径或文件名
  • 输入删除文件连接的目标文件,软连接会失效,硬连接仅是“连接数-1”
  • 软链接可以创建在任何位置,包括网络,而硬连接必须在同一磁盘上

关于软连接和硬连接的详细介绍到整理inode相关知识点的时候再做介绍。

Linux文件权限的修改

接下来学习的是修改文件的属性和权限,首先学习的是修改所属用户或用户组。命令格式:chown [-R] username:group filename (其中-R 在修改文件夹的时候使用,代表的是递归修改。)

修改读写权限共有两种方法:

数字法

权限rwx对应的是4,2,1,实际为3位的二进制,如果只要读 权限就是4,如果用户有读写权限,那么就是4+2=6,以此类推。

chmod 700 filename 执行的是设定用户有读写执行的权限,用户组、其他用户都没有权限。

# 权限 rwx 二进制
7 读 + 写 + 执行 rwx 111
6 读 + 写 rw- 110
5 读 + 执行 r-x 101
4 只读 r– 100
3 写 + 执行 -wx 011
2 只写 -w- 010
1 只执行 –x 001
0 000

文字法

文字法首先要引入四个字母:u、g、o、a,其中u代表user,g代表group,o代表other,a代表all。另外需要学习三个符号:+、-、=,分别代表增加、减去和设定,如:chmod ug+w filename ,意味着给filename 的用户及用户组添加写权限。

补充内容

掩藏文件

刚开始的ls -l  其实并没有把目录下的所有文件都显示出来,可以使用ls -al 将所有的信息显示出来:

[root@localhost ~]# ls -al
total 32
dr-xr-x---.  2 root root 4096 Aug 18 21:31 .
dr-xr-xr-x. 17 root root 4096 Aug 18 21:31 ..
-rw-------.  1 root root 1141 Aug 18 21:31 anaconda-ks.cfg
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc

可以看到root的home目录下有很多前面带.的文件,这些文件就是Linux中的掩藏文件,在Linux中将文件在文件名前面加一.即可将文件掩藏。

特殊目录

Linux 下有几个特殊的目录:“.”、“..”、“-”、“~”

  • “.” 当前目录
  • “..” 上层目录
  • “-” 上一个工作目录
  • “~” 当前用户的home目录

特殊文件权限

Linux的文件除了rwx以外,还有s、t这两个特殊的权限。平时用的不多,不做深入学习。

chmod:更改文件权限

语法:
    chmod <选项> <参数>

选项:
    -c或--changes                 # 效果类似“-v”参数,但仅回报更改的部分
    -f或--quiet或--silent        # 不显示错误信息
    -R或--recursive               # 递归处理,将指令目录下的所有文件及子目录一并处理
    -v或--verbose                 # 显示指令执行过程
    --reference=<参考文件或目录>    # 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同

参数:
    权限模式                       # 指定文件的权限模式
    文件                         # 要改变权限的文件

实例:
    # 第一种方式:+、-、=变更权限
    # u:所有者    g:所有组    o:其他人    a:所有人(u、g、o总和)
    chmod u=rwx,g=rx file         # 表示该文件者拥有读、写、执行权限,同一用户组拥有读、执行权限,其他人未设置拥有之前的权限
    chmod g+w file                # 表示该文件在原权限上添加同一用户组可写权限
    chmod a-x file                # 表示该文件在原权限上取消所有人的执行权限

    # 第二种方式:通过数字变更权限
    # r=4    w=2    x=1    -=0    如:rwx=4+2+1=7
    chmod 755 file                # 相当于chmod u=rwx,g=rx,o=rx file

chown:更改文件所有者

语法:
    chown <选项> <参数>

选项:
    -c或--changes               # 效果类似“-v”参数,但仅回报更改的部分
    -f或--quite或--silent      # 不显示错误信息
    -h或--no-dereference        # 只对符号连接的文件作修改,而不更改其他任何相关文件
    -R或--recursive             # 递归处理,将指定目录下的所有文件及子目录一并处理
    -v或--version               # 显示指令执行过程
    --dereference                # 效果和“-h”参数相同
    --reference=<参考文件或目录>   # 把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同

参数:
    用户:组                    # 指定所有者和所属工作组。当省略“:组”,仅改变文件所有者
    文件                        # 指定要改变所有者和工作组的文件列表。支持多个文件和目标,支持shell通配符

实例:
    chown tom file               # 改变文件的所有者
    chmod tom:group file         # 改变用户的所有者和所有组

chgrp:更改文件所在组

语法:
    chgrp <选项> <参数>

选项:
    -c或--changes              # 效果类似“-v”参数,但仅回报更改的部分
    -f或--quite或--silent        # 不显示错误信息
    -h或--no-dereference       # 只对符号连接的文件作修改,而不更改其他任何相关文件
    -R或--recursive            # 递归处理,将指定目录下的所有文件及子目录一并处理
    -v或--version              # 显示指令执行过程
    --reference=<参考文件或目录>  # 把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同

参数:
    组                         # 指定新工作名称
    文件                      # 指定要改变所属组的文件列表。多个文件或者目录之间使用空格隔开

实例:
    chgrp group file           # 改变文件的所有组

发表评论

邮箱地址不会被公开。 必填项已用*标注