2.2 文件的基本权限

一、权限的作用

通过对文件设定权限可以达到以下三种访问限制权限:
只允许用户自己访问;
允许一个预先指定的用户组中的用户访问;
允许系统中的任何用户访问。

二、查看权限

[chendajie@CHENDAJIE ~]$ ll /etc/passwd
-rw-r--r-- 1 root root 2127 9月  25 19:54 /etc/passwd

文件权限的基本解释
在这里插入图片描述
第一位是文件类型:

p代表命名管道文件
d表示目录文件
l表示符号连接文件
-表示普通文件
s表示socket 套接口文件,比如我们启用mysql时,会产生一个mysql.sock文件
c表示字符快设备文件,例:控制台或tty0
b表示块设备文件,例:sda, cdrom

例:

[chendajie@CHENDAJIE ~]$ ll /dev/sda /dev/cdrom /etc/passwd /dev/tty0
lrwxrwxrwx 1 root root    3 10月 12 14:19 /dev/cdrom -> sr0
brw-rw---- 1 root disk 8, 0 10月 12 14:19 /dev/sda
crw--w---- 1 root tty  4, 0 10月 12 14:19 /dev/tty0
-rw-r--r-- 1 root root 2127 9月  25 19:54 /etc/passwd

三、权限说明

对于文件来说:
r:读
w:写
x:执行
对于目录来说:
r:读(看到目录里面有什么) ls
w:在目录里面建文件,删除,移动 touch mkdir rm mv cp
x:进入 cd cat

四、文件拥有者

UGO:所有者–用户组–其它用户
所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。
用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。
其它用户:系统内的其他所有者用户就是other用户类

1、常见的几种文件权限组成

  • rwx — ---:文件所有者对文件具有读取、写入和执行的权限。
  • rwx r-- r–: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限
  • rw- rw- r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
    drwx–x—x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
    drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
    举例如下:
    每个用户都拥有自己的专属目录,通常放置/home下
[chendajie@CHENDAJIE ~]$ ll /home
总用量 4
drwx------. 14 chendajie chendajie 4096 10月 12 14:19 chendajie

注: [rwx------]表示目录所有者本身拥有的权限,其它用户是无法进入的。 root可以。

例2: 你以什么用户身份登录,那么你创建的文件或目录,自动成为该文件的所属主和组

[chendajie@CHENDAJIE ~]$ su chendajie
密码:
[chendajie@CHENDAJIE ~]$ touch a.txt
[chendajie@CHENDAJIE ~]$ ll a.txt 
-rw-rw-r-- 1 chendajie chendajie 0 10月 12 15:57 a.txt

2、更改文件的属主和属组

改变文件的所属关系用到命令:
chown: 可以用来改变文件(或目录)的属主
chgrp: 可以用来改变文件(或目录)的默认属组
如果你要对目录进行操作,加参数 -R
chown
语法:
chown user:group filename 比如:chown hr:san a.txt 把文件的属主和属组改为hr,san
chown user filename 比如:chown san a.txt 把文件的属主改为san用户
chown :group filename 比如: chown :miao a.txt 把文件的属组改为miao这个组
chown user: filename 比如:chown san: a.txt 自动继承这个用户所有的组
chgrp hr filename 比如: chgrp hr f.txt

-R:递归(目录下的所有内容都更改,否则值修改目录)
例:

[root@CHENDAJIE my_test]# touch {a,b,c}txt
[root@CHENDAJIE my_test]# ll *txt
-rw-r--r-- 1 root root 0 10月 12 17:00 atxt
-rw-r--r-- 1 root root 0 10月 12 17:00 btxt
-rw-r--r-- 1 root root 0 10月 12 17:00 ctxt
[root@CHENDAJIE my_test]# touch {a,b,c}txt
[root@CHENDAJIE my_test]# ll *txt
-rw-r--r-- 1 root root 0 10月 12 17:00 atxt
-rw-r--r-- 1 root root 0 10月 12 17:00 btxt
-rw-r--r-- 1 root root 0 10月 12 17:00 ctxt
[root@CHENDAJIE my_test]# chown chendajie atxt 
[root@CHENDAJIE my_test]# ll atxt 
-rw-r--r-- 1 chendajie root 0 10月 12 17:00 atxt
[root@CHENDAJIE my_test]# chown chendajie:chendajie btxt 
[root@CHENDAJIE my_test]# ll btxt 
-rw-r--r-- 1 chendajie chendajie 0 10月 12 17:00 btxt
[root@CHENDAJIE my_test]# chown :root btxt 
[root@CHENDAJIE my_test]# ll btxt 
-rw-r--r-- 1 chendajie root 0 10月 12 17:00 btxt

小问题:一个文件只有读的权限,拥有者是否可以写这个文件?
实验:
1、在chendajie用户下创建文件a.txt

[chendajie@CHENDAJIE ~]$ touch a.txt
[chendajie@CHENDAJIE ~]$ ll a.txt 
-rw-rw-r-- 1 chendajie chendajie 0 10月 13 15:53 a.txt

2、在另一个终端上用root身份登录,修改a.txt文件的权限为000

[root@CHENDAJIE chendajie]# chmod 000 /home/chendajie/a.txt 
[root@CHENDAJIE chendajie]# ll a.txt 
---------- 1 chendajie chendajie 0 10月 13 15:53 a.txt

3、回到chendajie用户的终端,以vim编辑文件a.txt,写入aaa。wq!保存

[chendajie@CHENDAJIE ~]$ whoami
chendajie
[chendajie@CHENDAJIE ~]$ vim a.txt

4、回到root用户查看a.txt文件

[root@CHENDAJIE chendajie]# cat /home/chendajie/a.txt 
aaaaa

此时发现文件是已经写进去了。
结论:文件的所有者一定可以写文件,就像root可以对shadow强制写,因为shadow的拥有者是root。

3、修改权限

1)使用字符修改设定

修改权限用的命令:chmod
作用:修改文件,目录的权限
语法:chmod [options] mode file…
chmod [选项] [文件名]
u---->用户user,表示文件或目录的所有者
g---->用户组group,表示文件或目录所属的用户组
o---->其他用户oters
a---->所有用户all
操作符:

+添加权限
-减少权限
=直接给定一个权限

权限:r、w、x

例:chmod 修改权限

[root@CHENDAJIE my_test]# touch 1.txt
[root@CHENDAJIE my_test]# ll 1.txt 
-rw-r--r-- 1 root root 0 10月 13 16:05 1.txt
[root@CHENDAJIE my_test]# ^C
[root@CHENDAJIE my_test]# chmod u-w 1.txt 
[root@CHENDAJIE my_test]# ll 1.txt 
-r--r--r-- 1 root root 0 10月 13 16:05 1.txt

可以看到user权限中的写权限(w)已经消失。

[root@CHENDAJIE my_test]# chmod g+w 1.txt    
[root@CHENDAJIE my_test]# ll 1.txt 
-r--rw-r-- 1 root root 0 10月 13 16:05 1.txt

group中加入了写权限(w)

2)使用八进制(0-7)数字表示权限法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
语法:
chmod 755 文件或文件夹名字
chmod a=rwx b.txt 等于chmod 777 b.txt

例:

[root@CHENDAJIE test]# ls
aa.sh  hack.sh
[root@CHENDAJIE test]# ll aa.sh 
-rw-r--r-- 1 root root 0 10月 10 20:50 aa.sh
[root@CHENDAJIE test]# chmod 755 aa.sh 
[root@CHENDAJIE test]# ll aa.sh 
-rwxr-xr-x 1 root root 0 10月 10 20:50 aa.sh
[root@CHENDAJIE test]# chmod 700 aa.sh 
[root@CHENDAJIE test]# ll aa.sh 
-rwx------ 1 root root 0 10月 10 20:50 aa.sh

3)

权限对文件和目录的影响
有三种权限可以应用:读取、写入与执行,这些权限访问文件和目录的影响如下:

在这里插入图片描述在这里插入图片描述

4)补码

1:为什么我们创建的文件的权限是644呢?
2:我们创建文件的默认权限是怎么来的?
umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字
文件默认权限=666 ,目录默认权限=777
我们一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。
永久生效,编辑用户的配置文件vim .bash_profile
在这里插入图片描述
【注】UID大于199且用户的组名和用户名一样,那么umask值为002,否则为022
【注】-gt 在shell中表示大于;id -g 显示用户组ID,id -gn 显示组名

临时生效:umask 权限补码
例:

[root@CHENDAJIE test]# umask 055
[root@CHENDAJIE test]# touch ss.txt
[root@CHENDAJIE test]# ll ss.txt 
-rw--w--w- 1 root root 0 10月 17 15:47 ss.txt

权限科学的计算方法:
1、将默认权限(目录777,文件666)和umask值都转换为2进制
2、对umask取反
3、将默认权限和umask取反后的值做与运算
4、将得到的二进制值再转换8进制,即为权限,
例1: umask 为022
6 6 6 umask 0 2 2
110 110 110 000 010 010 # 转成二进制
111 101 101 # umask取反的值
110 110 110 与 #第二步,默认权限和umask取反后的值做与运算
111 101 101 # umask取反的值
110 100 100
6 4 4 #转成8进制

例2: umask 为033 结果为: 644
6 6 6 umask 0 3 3
110 110 110 000 011 011 # 转成二进制
111 100 100 # umask取反的值
110 110 110 与 #默认权限和umask取反后的值做与运算
111 100 100 # umask取反的值
110 100 100
6 4 4 #转成8进制

不改动umask时:
创建文件的权限是:644

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值