Linux的文件权限与目录配置

用户和用户组

在Linux里,任何一个文件都具有User、Group以及Others3种身份的个别权限

  • 默认情况下所有的系统上的账号与一般用户身份,还有root账户的相关信息都记录在/etc/passwd文件内

  • 个人的密码记录在/etc/shadow文件下

  • Linux所有的组名都记录在/etc/group内

这三个文件可以说是Linux系统里面账号、密码、用户组信息的集中地。


Linux文件属性

文件权限
查询文件
列数 含义
第一列 第一位 - 是文件;d 是目录
第二列 连接数
第三列 所有者
第四列 用户组
第五列 文件容量(大小默认为B)
第六列 修改日期
第七列 文件名

改变文件属性与权限

  • chgrp:改变文件所属用户组

chgrp [-R] 用户组名称 文件或目录  
chgrp users install.log
  • chown:改变文件所有者

chown [-R] 账号名称 文件或目录   
chown bin install.log
  • chmod:改变文件的权限 a代表all

1. 数字类型改变文件权限
操作|对应的数字
-|-
r|4
w|2
x|1

例如:如果要将install.log的权限改成“-rwxrwxrwx”就是 4+2+1 4+2+1 4+2+1

chmod 777 install.log

例如:如果要将文件变成可执行文件,并且不要让他人修改文件的话就需要"-rwxr-xr-x"这样的权限

chmod 755 filename

例如:如果有些文件你不希望被别人看到,权限为“-rwxr-----

chmod 740 filename
  • 2. 符号类型改变文件权限

假设将文件权限修改为“-rwxr-xr-x

chmod u=rwx ,go=rx install.log 或 u=rwx,g=rx,o=rx

假设不知道文件原本的权限,希望所有人都可以增加写入的权限

chmod [u/g/o/a]+w filename

全部人都去掉可执行的权限

chmod a-w filename

目录与文件的权限意义

权限的意义
  • 文件的x权限

在Linux系统下,文件是否能被执行是由是否具有x这个权限来决定的,与windows下的扩展名不同。

  • 目录的x权限

表示用户是否能进入该目录成为工作目录

例子:“drwxr--r-- 3 root root 4096 Jun 25 08:35 .ssh

vbird用户不属于root用户组,vbird对此目录有r的权限,因此vbird可以查询此目录下的文件名列表但不能读取详细的文件名列表,有一堆问号?????权限不够,但是不能切换到此目录内。因为没有x权限

目录树架构

[图片上传失败...(image-533a38-1574832893153)]

文件与目录的默认权限与隐藏权限

root想将~/.bashrc复制给wwl,又担心覆盖掉~wwl/.bashrc。并且文件是root需要将拥有者变为wwl

  • cp ~/.bashrc ~wwl/bashrc
  • 修改own:chown wwl:users ~wwl/bashrc


在/tmp下面新建一个目录,这个目录名称为chapter7_1,并且这个目录的所有者为wwl,用户组为users,此外,任何人都可以进入该目录浏览文件,不过除了wwl以外,其他人不能修改该目录下的文件。

经分析,整个目录的权限应该是 drwxr-xr-x=755

新建目录:mkdir /tmp/chapter7_1
修改属性: chown -R wwl:users /tmp/chapter7_1
修改权限:chmod -R 755 /tmp/chapter7_1

文件默认权限umask

umask:目前用户在新建文件或者目录的时候的权限默认值:文件的默认属性是666,目录是777与umask相减

umask 输出0022** ****022:意思是user的rwx不拿掉任何权限,group和other拿掉了w

umask - S 输出u=rwx,g=rx,o=rx

修改默认权限umask:umask 002 这样文件的默认权限就是-rw-rw-r--目录:drwxrwxr-x


文件隐藏属性chattr,lsattr

chattr(change attribution设置文件的隐藏属性)

chattr [+-=] [ASacdistu] 文件或目录名称

  • +:增加某一个特殊参数,其他原本存在的参数则不动
  • -:删除。。。
  • =:仅有后面接的参数
  • a:设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性。
    • chattr +i attrtest【给予attrtesti的属性】
    • chattr -i attrtest将i属性取消
  • i:可以让一个文件“不能被删除、改名,设置连接也无法写入或添加数据。”“对系统安全性有相当大的帮助”。

lsattr(显示文件隐藏属性)

lsattr [-adR] 文件或目录

  • -a:将隐藏文件的属性也展示出来
  • -d:如果接的是目录,仅列出目录本身的属性而并非目录内的文件名
  • -R:连同子目录的数据也一并列出来

查看文件类型:file【文件的类型是由文件的内容决定的不是由后缀决定】

想知道某个文件的基本数据,例如是属于ASCII或者是data文件,或者是binary

file ~/.bashrc


命令与文件的查询

  • 脚本文件名的查询

  • which 【-a】 command which ifconfig 输出:/sbin/ifconfig

  • 文件名的查找

    • whereis(寻找特定文件) whereis [-bmsu] 文件或目录名 whereis passwd
  • locate: locate [-i忽略大小写的差异r后面可接正则表达式的显示方式] keyword

  • find [PATH] [option] [action]

  mkdir src
  find /usr/src -name "*.c" -exec cp {} /src  \;
  ll src

  find /usr/src/ -name "*.c" -exec wc -l {} \;

  -exec后面就是动作;wc(wordCount) -l是一个用来统计行数的命令;
  {}匹配一次每次find匹配的结果,每次将一行文件名放入{}中;
  \; ---将;转义,代表命令的结束。
  要执行find出来的所有文件的统计行数的命令
  • 统计find到多少条命令

    1. 第一种方式(生成中间文件)find /usr/src/ -name "*.c" >> count ;wc -l count ; rm count <== >> count 是将标准输出以追加重定向的方式添加到count文件中
    2. 第二种方式(使用管道) find /usr/src/ -name "*.c" | wc -l
  • 与用户有关的参数

    • user name:name 用户账户名称
    • group name:name 用户组名
    • nouser:寻找文件的所有者不存在/etc/passwd的人
    • nogroup:不存在于/etc/group的文件
    • 示例:查找/home下面属于wwl的文件(用这个命令将所有属于某个用户的文件找出来)
      • find /home -user wwl
    • 示例:查找系统中不属于任何人的文件 find / -nouser
  • 与文件权限及名称有关的参数

    • -name filename:查找文件名为filename的文件find -name passwd
    • -size [+-] SIZE:查找比SIZE还要大[+]或小[-]的文件。c:代表byte;k:代表1KB
    • -type TYPE:类型主要有一般文件(f)、设备文件(b/c)、目录(d)、连接文件(l)、socket(s)
      • find /var -type s - 【find . -type f -name "1"
    • -perm mode:查找文件权限刚好 等于 mode的文件
    • -perm +mode
    • -perm -mode

文件的特殊权限:SUID,SGID,SBIT

s与t都是代替x的,就是文件的拥有者暂时具有root权限,暂时有权限给其他人设置。

4为SUID(SetUID,SUID不是用在目录上用于设置文件

2为SGID(SetGID)

1为SBIT(SBIT不是用于文件上 。Sticky Bit用于设置目录)

SetUID: 假设要将一个文件权限修改为-rwsr-xr-x时,由于s在用户权利中,所以是SUID

这样修改:chmod 4755 filename来修改

chmod 7777 filename,最后权限是-rwsrwsrwt

你可能感兴趣的:(Linux的文件权限与目录配置)