2021-08-12

Linux中一切皆文件,包括设备也被抽象为文件,对应的设备文件在/dev目录中。目录也是文件,文件内容是文件名和文件的inode号。

在文件系统中,一个文件由一个inode和data block组成,inode存放文件的权限与属性,data block存放实际数据。目录的data block存放文件名和文件的inode号。

文件权限、属性和文件类型

lrl@DESKTOP-LRL:~$ ls -al
total 12
           0  1     2   3       4           5
drwxr-xr-x 1 lrl  lrl  4096 Aug 10 22:41 .
drwxr-xr-x 1 root root 4096 Aug  9 15:05 ..
-rw------- 1 lrl  lrl   741 Aug 10 23:35 .bash_history
-rw-r--r-- 1 lrl  lrl   220 Aug  9 15:05 .bash_logout
-rw-r--r-- 1 lrl  lrl  3771 Aug  9 15:05 .bashrc
drwxr-xr-x 1 lrl  lrl  4096 Aug  9 15:05 .landscape
-rw------- 1 lrl  lrl    68 Aug 10 22:41 .lesshst
drwxr-xr-x 1 lrl  lrl  4096 Aug 10 22:07 .local
-rw-r--r-- 1 lrl  lrl     0 Aug 11 10:44 .motd_shown
-rw-r--r-- 1 lrl  lrl   807 Aug  9 15:05 .profile
-rw-r--r-- 1 lrl  lrl     0 Aug 10 22:13 .sudo_as_admin_successful

属性有

0:链接到此inode节点数量 1:owner 2:group 3:文件大小(默认以字节为单位) 4:文件修改时间 5:文件名

由上述可知:权限分为三组,分别为owner、group、other每组权限都分为rwx(read,write,execute)

权限的意义

  1. 对目录

    • r:读取目录结构

    • w:修改目录结构:

      1. 删除创建文件与目录

      2. 重命名

      3. 移动

    • x:可切换到该目录作为工作名录执行命令

    lrl@DESKTOP-LRL:~$ ls t
    t.txt
    lrl@DESKTOP-LRL:~$ chmod u-x t
    lrl@DESKTOP-LRL:~$ ls t
    ls: cannot access 't/t.txt': Permission denied
    t.txt
    lrl@DESKTOP-LRL:~$ ls -l t
    ls: cannot access 't/t.txt': Permission denied
    total 0
    -????????? ? ? ? ?            ? 

    当没有x权限时,有r权限时虽然能读出目录内容,但是会显示无权限,查看文件属性时会有一串?

    lrl@DESKTOP-LRL:~$ chmod u=x t
    lrl@DESKTOP-LRL:~$ vim t/t.txt
    lrl@DESKTOP-LRL:~$ chmod u=rwx t
    lrl@DESKTOP-LRL:~$ cd t
    lrl@DESKTOP-LRL:~/t$ ls
    t.txt
    lrl@DESKTOP-LRL:~/t$ cat t.txt
    jojoij

    当只具备x权限时,若知道目录中文件名字且对文件具有对应权限,则依然可以对文件进行操作。

  2. 对文件

    • r:可读

    • w:可编辑

    • x:可执行

    文件能否被执行,取决于是否拥有x权限,与文件名没有绝对关系。

ls - list directory contents

ls [OPTION]... [FILE]...

OPTIONS is folloing:
-a, --all 
        do not ignore entries starting with .
        
-A, --almost-all 
        do not list implied . and ..
        
-c      with -lt: sort by, and show, ctime (time of last modification of file status information); with -l: show ctime  and sort by name; otherwise: sort by ctime, newest first
-f     do not sort, enable -aU, disable -ls --color
​
-F, --classify
       append indicator (one of */=>@|) to entries,/:directory,*:exectuable file,=:socket,|:FIFO
       
--color[=WHEN]
        colorize the output; WHEN can be 'always' (default if omitted), 'auto', or 'never'; more info below
        
--full-time
        like -l --time-style=full-iso
        
-h, --human-readable
              with -l and -s, print sizes like 1K 234M 2G etc.
              
-i, --inode
        print the index number of each file
        
-l     use a long listing format(full information)
​
-r, --reverse
        reverse order while sorting
        
-R, --recursive
        list subdirectories recursively
        
--sort=WORD
        sort by WORD instead of name: none (-U), size (-S), time (-t), version (-v), extension (-X)
​
--time=WORD
        with -l, show time as WORD instead of default modification time: atime or access or use (-u); ctime or status (-c);also use specified time as sort key if --sort=time (newest first)
-t      sort by modification time, newest first
-u      with -lt: sort by, and show, access time; with -l: show access time and sort by name;  otherwise:  sort  by  access
              time, newest first
-U      do not sort; list entries in directory order
​

touch

file - determine file type

file filename...

#示例
lrl@DESKTOP-LRL:~$ file .bash_history
.bash_history: ASCII text

chown - change file owner and group

chown [OPTION]... [OWNER][:[GROUP]] FILE...

chgrp - change group ownership

chgrp [OPTION]... GROUP FILE...

chmod - change file mode bits

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
OPTIONS:
-R 递归修改

MODE的表示方式有两种:

  1. 数字类型

    #rwx分别用数字421代替,就是二进制111
    #每组权限都是rwx的数字形式累加和,三组权限用xyz表示,则使用如下所示
    chmod  xyz file
  2. 符号类型

符号操作权限
u(user,也就是owner) g(group) o(other) a(all,也就是ugo)+(添加) -(移除) =(设置)r w x
lrl@DESKTOP-LRL:~$ chmod u=rwx,go=rx .bashrc #设置权限
lrl@DESKTOP-LRL:~$ chmod a+w .bashrc  #为所有身份添加权限
lrl@DESKTOP-LRL:~$ ll
total 12
drwxr-xr-x 1 lrl  lrl  4096 Aug 11 15:25 ./
drwxr-xr-x 1 root root 4096 Aug  9 15:05 ../
-rw------- 1 lrl  lrl   741 Aug 10 23:35 .bash_history
-rw-r--r-- 1 lrl  lrl   220 Aug  9 15:05 .bash_logout
-rwxrwxrwx 1 lrl  lrl  3771 Aug  9 15:05 .bashrc*
drwxr-xr-x 1 lrl  lrl  4096 Aug  9 15:05 .landscape/
-rw------- 1 lrl  lrl   114 Aug 11 15:25 .lesshst
drwxr-xr-x 1 lrl  lrl  4096 Aug 10 22:07 .local/
-rw-r--r-- 1 lrl  lrl     0 Aug 11 10:44 .motd_shown
-rw-r--r-- 1 lrl  lrl   807 Aug  9 15:05 .profile
-rw-r--r-- 1 lrl  lrl     0 Aug 10 22:13 .sudo_as_admin_successful

特殊权限

特殊权限为SUID、SGID、SBIT

SUID:Set UID

  • 仅对二进制可执行程序有效

  • 执行者对该程序具有x权限

  • 在程序执行过程中具有程序拥有者owner的权限

lrl@DESKTOP-LRL:~$ ls -l /bin/passwd
-rwsr-xr-x 1 root root 68208 May 28  2020 /bin/passwd
lrl@DESKTOP-LRL:~$ ll /etc/shadow
-rw-r----- 1 root shadow 972 Aug  9 15:05 /etc/shadow

passwd的owner权限的x变成了s,这就是特殊权限SUID。/etc/shadow保存了用户密码,一般用户无法修改。但是我们可以通过执行passwd临时获得passwd拥有者root的权限来修改密码。

SGID:Set GID

  1. 对二进制程序

    • 执行者对该程序具有x权限。

    • 程序执行过程中获得该程序用户组支持——即执行者的有效用户组临时变成该程序用户组。

  2. 对目录

    • 用户对目录具有rx权限时,用户在此目录下的有效用户组变为该目录的用户组。

    • 在上一个条件下,若同时具有w权限,则用户建立的新文件的用户组与目录用户组相同。

SBIT:Stick Bit

用户对于目录具有wx权限时,用户再次目录下建立的文件只有自己与root才可删除。

特殊权限设置

除了三组基本权限外,特殊权限又是一组,SUID,SGID,SBIT分别对应着数字类型中的4,2,1,也对应着三组基本权限的x位,若设置了特殊权限,则对应的x位为s,s,t,若无x权限,则对应的x为S,S,T。

  1. 数字类型

    chmod sxyz FILE...   #s即为特殊权限的累加和

  2. 符号类型

    相比基本权限的符号外,多出了一个s,一个t。

    chmod u+s FILE...       #s即为特殊权限
    chmod g+s FILE...
    chmod o+t FILE...

默认权限与umask

umask的使用

mask,面具,umask即为设置权限掩码,就是从权限中移除umask所指定的权限。

 umask [-p] [-S] [mode]
 -S  #符号类型
 -p  #暂时不知道
lrl@DESKTOP-LRL:~/t$ umask          #不加选项参数,查看掩码
0022
lrl@DESKTOP-LRL:~/t$ umask -S       #以符号类型查看默认权限
u=rwx,g=rx,o=rx
lrl@DESKTOP-LRL:~/t$ umask 0000     #以数字类型设置掩码
lrl@DESKTOP-LRL:~/t$ umask
0000
lrl@DESKTOP-LRL:~/t$ umask 0022     #恢复权限
lrl@DESKTOP-LRL:~/t$ umask
0022
lrl@DESKTOP-LRL:~/t$ umask -S a=rwx #以符号类型设置权限
u=rwx,g=rwx,o=rwx
lrl@DESKTOP-LRL:~/t$ umask
0000

  1. 在没有umask的情况下

  • 建立文件时,默认没有x权限,只有rw,即权限是666,-rw-rw-rw-

  • 建立目录时,x对于目录特别重要,所以默认是777,drwxrwxrwx

  1. 有umask(上述例子中为0022,-----w--w-),在1的情况下移除umask所指定的权限

  • 对文件 则为-rw-r--r--,即644

  • 对目录 则为drwxr-xr-x,即755

FHS与目录树

相对路径与绝对路径

  • 绝对路径:从根目录/写起

  • 相对路径:相对于当前目录的路径,就是非/开头

目录

文件权限、属性和文件类型

权限的意义

ls - list directory contents

touch

file - determine file type

chown - change file owner and group

chgrp - change group ownership

chmod - change file mode bits

特殊权限

SUID:Set UID

SGID:Set GID

SBIT:Stick Bit

特殊权限设置

默认权限与umask

umask的使用

FHS与目录树


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值