运维笔记5(文件的属性,文件属主属组,文件普通权限,系统默认权限设定,文件的特殊权限)

概述:

       文件的属性(通过ls -l看到的),文件所有人所有组的管理(属主和属组),文件普通权限(读写执行),系统默认权限设定(umask的设定),文件的特殊权限(冒险位,强制位,黏着位)。

1.文件的属性

通过ls -l filename 可以显示filename文件的属性

1)           2)        3)  4)   5)   6)         7)                      8)

 

1).文件类型

- ##普通文件

d ##目录

c ##字符设备

s ##套接字设备

p   ##管道

b ##快设备

l ##连接


2).文件读写权限

rw- | r-- | r--

  *   $    @

*所有人的权限

$所有组权限

@其他人的权限

3).文件内容被系统记录的次数

这里可能不太好理解,什么叫被系统记录次数呢,我们上面这个文件的被记录次数时‘1’,代表被记录一次,那么怎样让这个值增加呢?

这里这个hello文件的被记录数是1

通过ln命令后,hello文件的文件被记录数是2,那个ppp就是hello文件的硬链接,每给hello增加一个硬链接文件,这个文件的被记录数就会增加1。ln -s src des 是增加软连接,但是这个命令并不会增加文件的被记录数。

使用软链接后

,文件被记录数并没有增加。

4).文件所有人

5).文件所有组

6).文件内容的大小

文件内容的大小其实可理解为文件内容的字节数,通过wc -c命令证实了这个结论。

下面我们换一个文件类型看下这个6字段,查看下目录文件的第6个字段。

test_dir是一个新建的目录,他的里面只有'.'和‘..’两个文件,这个目录的第六个字段为什么是6呢?

现在让我们来讨论下linux的目录结构(以后会讨论关于文件系统的问题)

目录中放置的东西是inode号与它文件名的对应关系


就如这张图所描述,其实目录也是个文件,他也有自己的内容,它的内容就如上图,每在目录下创建一个文件,就相当于在目录下写了信息这就是这第六个字段对于目录的作用,其实与文件是一个意思。

7).文件最后一次被修改的时间

相当于mtime

8).文件名字


2.文件所有人所有组的管理

chown  username file|dir ##更改文件的所有人

chown   username:groupname file|dir ##更改所有人所有组

chown -R  username         dir  ##递归更改目录本身及里面所有人

chgrp   -R  uesrname         dir ##更改目录本身及里面所有内容的所有组


tips:
(1)修改所有人及所有组时,分割符只能用  “:”或者“.”

(2)也可以使用chown uid:gid file|dir 这种形式


3.文件普通权限

rw-|r--|r--

 u    g  o

u:文件所有人可以读写

g:文件组成员可以读

o:其他成员可以读

1).r

对文件:可以查看文件中的内容

对目录:可以查看它里面的文件(通过ls)但不可以进入(t通过cd)。

2).w

对文件:可以查看修改文件的内容

对目录:可以在目录中添加删除文件

3).x

对文件:可以执行这个文件内记录的程序动作

对目录:可以进入目录


对于以上的权限有一点说明

目录:一般不会只给读或者写权限,一定要给他执行权限,用一个形象的比喻,目录只给都不给执行,就是透过窗户看,只给写,不给执行权限,就是不让进去房间,让你拿东西,这都是没有什么意义的。

4).修改文件

chmod [-R] [u|g|o] [+|-|=] [r|w|x] file|dir

5).数字方式修改权限

chmod  777 file

7=rwx

6=rw

5=r-w

4=r--

3=-wx

2=-w-

1=--x

0=---


4.系统默认权限设定

从系统存在来说,开放权利越大,系统存在意义越高

从系统安全角度说,开放权利越少,系统安全性越高

所以系统新建文件或会去掉一些权限

设定方式

umask

我系统默认的权限掩码是0022,意思就是新建的文件会去掉它所有组合其他用户的写权限。

用umask 077可以设定保留权限为0077,但是只是在当前shell中。

如果你想永远有效需要更改/etc/profile和/etc/bashrc配置文件,其中/etc/profile文件为与内核有关,而/etc/bashrc为与shell有关,两个文件中umask一定要一致。

5.特殊权限

1.suid

只针对二进制可执行文件,执行这个文件时进程的所有人为这个文件的所有人,与进程发起人没有关系

用chmod设定

chmod u+s file

suid=4  ---100

chmod 4xxx file  ##这样也可以设置suid

suid还叫做冒险位

2.sgid

对文件:只针对二进制可执行文件,任何二进制可执行文件运行的时候,进程的所有组与进程的发起者没有关系,都是这个文件创建者的所有组。

对目录:当目录有sgid权限 ,目录中新建的文件的所有组都自动归档到目录所有组中,和文件的真实创建者没有关系。

设定方式:chmod g+s file|dir

sgid=2 ---010

sgid还叫做强制位

3.sticky

只针对目录,当一个目录上有t权限,那么目录中的文件只能被所有人删除

设定方式

chmod o+t dir

t=1  ---001


最后的最后来练习一下


1.新建用户组,shengchan,caiwu,jishu


2.新建用户要求如下:
        * tom 是shengchan组的附加用户
        * harry 是caiwu组的附加用户
        * leo 是jishu组的附加用户
        * 新建admin用户,此用户不属于以上提到的三个部门



3.新建目录要求如下:
        * /pub目录为公共存储目录对所有用户可以读,写,执行,但用户只能删除属于自己的文件
        * /sc 目录为生产部存储目录只能对生产部人员可以写入,
          并且生产部人员所建立的文件都自动归属到shengchan组中
        * /cw 目录为财务部存储目录只能对财务部人员可以写入,
          并且财务部人员所建立的文件都自动归属到caiwu组中
        * admin用户能用touch工具在/sc目录和/cw目录中任意建立文件,但不能删除文件。



接下来这一问就有两种解决方法了

第一种是通过sudo来讲root的权限下放,下图就是过程


通过visudo把这行添加进去,再通过sudo就可以在sc下随意创建文件了,但是不可以删除文件

第二种方法是将/bin/touch文件复制到admiin的家目录下的bin目录,再给这个touch设置冒险位,以后每次admin执行的touch其实是/home/admin/bin/touch,而不是/bin/touch,这样不但完成了要求,而且也防止其他用户也拥有touch的root权限。

4.设定普通用户新建文件权限为"r--r-----"
将/etc/profile和/etc/bashrc下的umask值修改为226即可




5.设定admin用户可以通过sudo自由建立新用户



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值