文件权限

文件权限

把⼀个⽤户加⼊了⼀个组,该⽤户就拥有了该组的权限,当⼀个⽤户要操作某个⽂件时,系统会依次检索该⽤户是否是该⽂件的(属主)拥有者,其次是(数组)组成员,最后是其他⼈,如果扫描到是拥有者,则具备拥有者的权限,不必往后扫描,以此类推

权限类型

每一个权限拥有一个数字编号

  • r:可读(read)---> 4

  • w:可写(write)---> 2

  • x:可执⾏(execute)---> 1

  • -:没有对应权限

    执行脚本 == 运行脚本

权限的归属

  • 属主: u
  • 属组: g
  • 其他人: o

权限位

image-20211218190929438

权限位主要分为三个部分,分别是属主、属组以及其他人

rwx : 属主--->可读可写可执行

r-x : 属组--->可读可执行

rw- : 其他人--->可读可写

使用ll命令查看文件详情,在每个文件详情最前方,有10个字符来表示文件类型和权限
  [root@localhost ~]# ll
  -rw-r--r-- 1 root root    0 12月 14 19:11 1
  drwxr-xr-x 2 root root    6 12月 18 15:51 a
  -rwxr-xr-x 1 root root 4609 11月 21 11:43 init.sh

在Linux 系统中权限是区分用户的,即属主(用户)、属组(组用户)、其他用户,
第一位表示文件的类型,-代表文件,d代表目录,其他每个用户占三个字符,
这里-rwxr-xr-x对应如下关系
-     #文件
rwx   #属主:可读可写可执行
r-x   #属组:可读可执行
r-x   #其他:可读可执行

含义解释
第一位:-代表文件,d代表目录
用户、组用户、其他用户都未rwx形式,
其中r表示读、w表示写、x表示可执行,-表示没有权限,
拿用户组举例,r只能出现在第一个位置、w只能出现在第二个位置、x只能出现在第三位。

1327924-20191106101057159-461417569

如果我们将出现字符(可以是r、w、x)表示为1,出现-表示为0,那么对应二进制如下,r - - = 100、- w - = 010、- - x = 001、再转换成10进制,那么读=4、写=2、可执行=1,将转换为以下关系

1327924-20191106101454753-1175152316

也就是说这里的数字简写了用户权限,我们也可以用数字反推权限,比如数据6,我们转换为为二进制:110,转换为:rw-,具有可读、可写权限。

现在我们已经明白了:-rwxr-xr-x权限含义了,这里用数字简写就是-755,这里还需要改写成0755,这里的0可以简单理解成10进制

设置权限

chmod 
    格式:
      chmod [参数] [权限表达式] [操作对象] 	
    参数:
      -R  : 递归增加权限
 		
 		
 [root@localhost ~]# ll /root/1.txt
  -rw-r--r-- 1 root root 0 12月 18 16:42 /root/1.txt
		
# 1、加减法:+、- 在原来的权限基础上增减

 #给属主增加执行权限,属组增加执行权限,其他增加写权限
 [root@localhost ~]# chmod u+x,g+x,o+w /root/1.txt
 [root@localhost ~]# ll /root/1.txt
   -rwxr-xrw- 1 root root 0 12月 18 16:42 /root/1.txt
   
 #取消属主写权限,权限属组读权限,取消其他读权限
 [root@localhost ~]# chmod u-w,g-r,o-r /root/1.txt
 [root@localhost ~]# ll /root/1.txt
  -r-x--x-w- 1 root root 0 12月 18 16:42 /root/1.txt

 
# 2、赋值:= 不管原来是什么权限就直接覆盖了

 [root@localhost ~]# chmod u=rwx,g=rw,o=rx /root/1.txt
 [root@localhost ~]# ll /root/1.txt 
  -rwxrw-r-x 1 root root 0 12月 18 16:42 /root/1.txt


# 3、数字:不能单独设置一个,必须全部设置

 #给属主设置读写执行权限,属组设置读执行权限,其他设置读写权限
 [root@localhost ~]# chmod 756 /root/1.txt 
 [root@localhost ~]# ll /root/1.txt 
  -rwxr-xrw- 1 root root 0 12月 18 16:42 /root/1.txt
  
 #全部设置读写执行权限
 [root@localhost ~]# chmod 777 /root/1.txt 
 [root@localhost ~]# ll /root/1.txt 
  -rwxrwxrwx 1 root root 0 12月 18 16:42 /root/1.txt
  
  
# 4、-R:递归设置权限

 [root@localhost ~]# mkdir -p /a/b/c
 [root@localhost ~]# touch /a/b/c/d.txt
 
 [root@localhost ~]# chomd -R 777 /a
 [root@localhost ~]# ll /a/b
  drwxrwxrwx 2 root root 19 12月 18 17:13 c

 [root@localhost ~]# ll /a/b/c/d.txt
  -rwxrwxrwx 1 root root 0 12月 18 17:13 /a/b/c/d.txt

# 置空权限:=-

[root@localhost ~]# chmod 000 /root/1.txt 
或
[root@localhost ~]# chmod u=-,g=-,o=- /root/1.txt 

[root@localhost ~]# ll /root/1.txt 
 ---------- 1 root root 0 12月 18 16:42 /root/1.txt

权限的作用

1、权限对于用户的意义
  1、普通用户是严格遵守权限的
  2、root用户是高于权限
  3、权限需要重新登才生效(su和su - 都可以)


2、权限对于文件的意义
  1、r:读取文件内容
  2、w:修改文件内容
  3、x:可以把文件当成一个命令/程序运行


3、权限对于目录的意义
  1、r:可以浏览该目录下子目录名和子文件名(路径的最小权限是必须拥有可执行权限)
  2、w:创建、删除、移动(同上)
  3、x:可以进入该目录(同上)


# 1、在目录下,只有可读权限,无法查看文件内容(因为你无法操作目录)
# 2、在目录下,只有可读可写权限,无法查看文件内容(理由同上)
# 3、要想查看文件夹下的文件,文件夹必须至少拥有可执行权限;同时文件必须拥有可读权限

权限之特殊权限

SUID

  • 作用对象必须是二进制文件(cat出来是乱码的文件)
  • 该文件必须拥有可执行权限
chmod 4xxx [文件名]	
or
chmod u+s [文件名]

 [root@localhost ~]# ll `which passwd`
  -rwsr-xr-x 1 root root 27856 4月  1 2020 /usr/bin/passwd

查看passwd命令的权限,我们可以看到一个不曾见到过的权限 s  

而 S 权限是一个特殊权限
     SUID 权限仅对⼆进制可执⾏⽂件有效	
        如果执⾏者对于该⼆进制可执⾏⽂件具有 s 的权限,执⾏者将具有该⽂件的所有者的权限   
        本权限仅在执⾏该⼆进制可执⾏⽂件的过程中有效
    
# 示例:    
[root@localhost ~]# su - user  # 切换到普通用户user10

[user@localhost ~]$ cat /etc/shadow  # 查看用户密码文件
cat: /etc/shadow: 权限不够   # 显示权限不够,没办法访问 

[user@localhost ~]$ ll /etc/shadow  # 查看/etc/shadow 可以看出只有root用户才可以查看
----------. 1 root root 997 6月  20 18:02 /etc/shadow

[root@localhost ~]# ll `which cat`  # 登录root用户,查看cat命令
-rwxr-xr-x. 1 root root 54160 10⽉ 31 2018 /usr/bin/cat

[root@localhost ~]# chmod 4755 `which cat` # 或者 chmod u+s `which cat` 修改权限

[root@localhost ~]# ll `which cat`  # 现在cat命令的权限已经改成了s
-rwsr-xr-x. 1 root root 54160 10⽉ 31 2018 /usr/bin/cat

[root@localhost ~]# su - user		# 再次切换到user10用户
[user@localhost ~]$ cat /etc/shadow # 可以看到用户密码文件的内容了    

SBIT

SBIT 是 the restricted deletion flag or sticky bit 的简称,有时也称为Sticky。

  • 只对目录有效,用来阻止非文件的所有者删除文件,比较常见的就是/tmp目录
chmod o+t [文件名] 
or
chmod 1xxx [文件名]

[root@localhost ~]# ls -dl /tmp/ # -d 参数表示不查看目录下文件信息,就查看这个目录的信息
  drwxrwxrwt. 13 root root 4096 8⽉ 11 17:09 /tmp/ 

权限信息中最后⼀位 t 表明该⽬录被设置了 SBIT 权限。

SBIT 对⽬录的作⽤是:
  当⽤户在该⽬录下创建新⽂件或⽬录时,仅有⾃⼰和 root 才有权⼒删除,主要作⽤于⼀个共享的⽂件夹。

SGID

  • 用户对某一目录具有写和执行权限,该用户就可以在该目录下建立文件,如果该目录被SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组
chmod g+s [文件名] 
or
chmod 2xxx [文件名]

ps:当 SGID 作⽤于普通⽂件时,和 SUID 类似,在执⾏该⽂件时,⽤户将获得该⽂件所属组的权限。  

Umask

新建的文件、目录的默认权限是由umask决定的

  • uid > 199并且属主与数组相等的⽤户下比如test ,umask: 0002

    • 文件权限:664
    • 目录权限:775
  • 除1之外的其他⽤户下,⽐如root⽤户,umask: 0022

    • 文件权限:644
    • 目录权限:755

    在Linux中,常用的文件的权限是666,目录的权限是777

1、文件权限计算方法:
    文件的权限是跟 umask 值相减,遇到奇数加一;遇到偶数则不变。
2、目录权限计算方法:
    目录的权限只要跟 umask 值相减即可。
    
总结:umask设置的越小,权限就越大,慎用	
  
# 默认权限
    默认文件权限:644
    默认的目录权限:755
   
   [root@localhost ~]# touch a.txt  #创建文件
   [root@localhost ~]# ll a.txt
    -rw-r--r-- 1 root root 0 12月 18 20:55 a.txt  #默认权限644
    
   [root@localhost ~]# mkdir b  #创建目录
   [root@localhost ~]# ll -d b
    drwxr-xr-x 2 root root 6 12月 18 20:57 b  #默认权限755
   [root@localhost ~]# umask 
    0022

		
# 临时设置umask
[root@localhost ~]# umask 000   #设置umask权限


# 永久设置umask
#更改配置文件
[root@localhost tmp]# vim /etc/profile # 或者/etc/bashrc内容⼀样
......
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
 umask 002 #表示uid⼤于等于199的默认umask值,表示普通⽤户
else
 umask 022 #表示uid⼩于199的默认umask值,表示root
fi


需求:
     要求把1个月之前修改过的日志文件删除。

案例:
    案例1:将index文件添加属主 : 可读可写可执行、属组 :可读可写、其他人:没有任何权限
          chmod 760 index

    案例2:将baidu下的所有文件设置rwxr--r--
          chmod -R  744  baidu/

    案例3:将index这个文件的属组增加一个可执行权限。
          chmod g+x index
          chmod g+x,o-r index

搭建yum私有仓库

#第一步:挂载安装光盘
[root@localhost ~]# mount /dev/cdrom /mnt

#第二步:编辑repo yum源文件

#切换
[root@localhost ~]# cd /etc/yum.repos.d/

#查看repo下文件
[root@localhost yum.repos.d]# ls 
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo  CentOS-Vault.repo
CentOS-CR.repo   CentOS-fasttrack.repo  CentOS-Sources.repo

#创建bak文件
[root@localhost yum.repos.d]# mkdir bak

#备份原repo文件到bak防止以后会用到
[root@localhost yum.repos.d]# mv * bak  

#编辑
[root@localhost yum.repos.d]# vim local.repo
  [local] #yum仓库的名字,被yum命令识别

  name=local #这个name随便填

  baseurl=file:///mnt #下载地址,这里我们用的file://协议 /mnt是之前光盘挂载路径

  gpgcheck=0 #不使用gpg检查rpm包的来源

  enabled=1  #这个选项表示启动repo源,设置为0的时候,表示不启动

# 第三步:检查
[root@localhost yum.repos.d]# yum makecache
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
local                                                      | 3.6 kB  00:00:00     
(1/4): local/group_gz                                      | 166 kB  00:00:00     
(2/4): local/filelists_db                                  | 3.2 MB  00:00:00     
(3/4): local/primary_db                                    | 3.1 MB  00:00:00     
(4/4): local/other_db                                      | 1.3 MB  00:00:00     
元数据缓存已建立 #代表本地yum搭建成功



# 第四部:安装yum install zsh -y 
[root@localhost yum.repos.d]# yum install zsh -y
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 zsh.x86_64.0.5.0.2-31.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=====================================================================
 Package       架构               版本             源            大小
=====================================================================
正在安装:
 zsh           x86_64         5.0.2-31.el7       local         2.4 M

事务概要
=====================================================================
安装  1 软件包

总下载量:2.4 M
安装大小:5.6 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : zsh-5.0.2-31.el7.x86_64                     1/1 
  验证中      : zsh-5.0.2-31.el7.x86_64                        1/1 

已安装:
  zsh.x86_64 0:5.0.2-31.el7                                                                                                 

完毕!

posted @ 2021-12-15 20:06  山风有耳  阅读(232)  评论(0编辑  收藏  举报