Linux基础-(文件权限)

stat   文件名     用于显示文件时间和 inode 内容,inode相关的知识会在后面的磁盘管理章节详细讲解,这边主要来看文件的时间

 

[root@rhel8-server sch]# stat 123.txt

  File: 123.txt

  Size: 10        Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d Inode: 35350365    Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:default_t:s0

Access: 2022-01-23 05:49:36.508028685 -0500

Modify: 2022-01-23 05:42:04.540686236 -0500

Change: 2022-01-23 05:42:04.544679714 -0500

 Birth: -

 

 

* Access:访问时间,也叫atime

  * 当文件被访问的时候,这个时间就会发生改变

  * Linux文件运行的时候查看文件又频繁数量又大,如果每次atime发生变化的时候都记入硬盘,或造成很大的压力。RHEL6开始relatime,atime延迟修改,必须满足其中一个条件:

    * 自上次atime修改后,已达到86400秒

    * 发生写操作时

* Modify:修改时间,也叫mtime

  * 当文件内容发生变化的时候,这个时间就会发生改变

* Change:改变时间,也叫ctime

  * 当文件状态被改变的时候,这个时间就会发生修改

 

 

文件权限设置:可以赋予某个用户或组,能够以何种方式,访问某个文件

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。

为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

-rw-r--r--. 1 root root  19 Dec 11 14:10 12345.txt

 

-        rw-r--r--    1     root   root    9    Jul 16 13:09    1234.txt

文件类型      权限    连接数  属主   属组 大小     创建时间   文件名

 

文件类型: -  普通文件   d 目录

 

 

 

 

每一个文件都会有uid   gid    属主    属组

同时这个文件运行时也会带上uid   gid    其实就是这个属主ID  属组ID

访问任何一个文件  我们都有权限规定   

每个文件   都有3个对象    对三个对象赋予不同权限   

1.属主

2.属组

3.其他人

 

每个文件  都有三个权限  :    r 可读       w 可写     x 可执行 

某脚本123.txt    属主 root   属组 root   

对root而言 某脚本A这个文件可读可写可以执行

对root这个组而言  某脚本A这个文件 只可以看和编写不能执行

对其他人而言 某脚本A这个文件 只可以看   

于是这个文件的权限: rwxrw-r--

 

三个对象:         属主                  属组                        其他人

rwx                   rw-                         r--

数字表述:          7                     6                           4

在linux当中 权限可以用数字表示  

r=4    w=2    x=1        每个对象需要相加

所以:rw-r--r--     用数字表示: 644   

 

 

 

chmod    修改权限    可以一次性对三个对象 三个权限全都修改 

 

chmod  755  123.txt      属主可读可写可执行   属组  可读可执行   其他人  可读可执行

chmod u-x,g-w,o-r   123.txt      属主拿掉执行权限   属组拿掉可写权限  其他人  拿掉可读权限

chown   设置文件的属主和属组  

chown   redhat   1234.txt    修改属主为redhat

chown   :redhat  1234.txt     修改属组为redhat

chown  root:root  1234.txt     修改属主 属组都是root

 

chgrp   单独修改属组  

chgrp  redhat  1234.txt    修改属组为redhat     

 

setfacl可以单独针对某个用户设置权限
setfacl -m u:rheladmin:rwx    1234.txt

-m  是modify的意思

如何查看  getfacl  

 

mask有效权限

mask 权限,指的是用户或群组能拥有的最大 ACL 权限,也就是说,给用户或群组设定的 ACL 权限不能超过 mask 规定的权限范围,超出部分做无效处理。

 

setfacl  -m  m::rw    1234.txt     修改mask最大权限    (对属主不生效的)

[root@rhel-server1 wh]# getfacl 1234.txt 

# file: 1234.txt

# owner: root

# group: redhat

user::rw-

user:rheladmin:rwx #effective:rw-

group::r--

mask::rw-

other::r--

 

 

 

 

特殊权限:

SUID:  chmod u+s   当一个文件被设置了SUID(会在该文件所有者的执行为直接变成s)

这样任何人执行这个文件,会直接获取属主的权限。

SGID:  chmod g+s   当一个目录被设置了SGID后 ,任何人在这个目录中创建的文件,都属于这个目录所有者,不能对文件设置其他属主

SBIT:  chmod o+t    假设这个目录里面对象是其他人  针对其他人一旦被打上T这个值

那么这个目录中其他用户创建的任何文件,只有文件所有者才能删除

SUID=4

SGID=2

SBIT=1   

 

删除特殊权限     chmod u-s      chmod g-s     chmod o-t

 

UMASK

umask命令指定在建立文件时预设的权限掩码,进程 新建文件、目录的默认权限会收到umask的影响,umask表示要减掉得到权限。

umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。

[root@rhel-server1 wh]# umask

0022

权限需要通过777减去umask值就可以得到    所以得到 777-022=755   

执行权限是不可以默认存在的 755-111=644  

umask是系统文件,每次开机会自动读取 /etc/profile 来读取当中的umask

 

临时修改umask数值   umask  0000  此时  默认创建文件时  权限变成了777  因为执行权限默认不能存在  所以 此时文件权限为666

[root@rhel-server1 wh]# umask 0000

[root@rhel-server1 wh]# touch 444444

此时:ls -l显示

-rw-rw-rw-. 1 root root     0 Dec 11 16:02 444444cd

 

2.永久修改umask数值   要编辑配置文件   用shell编程写入

vim  /etc/profile

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

    umask 002

else

    umask 000

fi

保存退出   这样root的umask永久修改成了000  

source /etc/profile    立即在当前shell中生效 调取source文件

 

 

 

3、永久修改单个用户 非root的umask值   

首先要知道这个用户的uid  例如 1002

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

    umask 002

else

    umask 022

fi

if [ $UID -eq 1002 ]; then

    umask 000

fi

保存退出后

切换用户su - rheladmin

source /etc/profile  触发source文件

这样一来 用户rheladmin就永久修改umask为000了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

chattr  

修改文件属性

chattr命令用于改变文件属性。

 

这项指令可改变存放在文件或目录属性,这些属性共有以下8种模式:

选项:  + 来增加标签

a:让文件或目录仅供附加用途

b:不更新文件或目录的最后存取时间

c:将文件或目录压缩后存放

d:将文件或目录排除在倾倒操作之外

i:不得任意更动文件或目录

s:保密性删除文件或目录

S:即时更新文件或目录

u:预防意外删除

 

实例1:  用chattr 防止系统中某个关键文件被修改

chattr   +i    6666.txt      

lsattr  6666.txt    查看目前被打的标签 

接下来尝试修改 会发现完全不能动           

chattr -i 123.txt 取消标签

 

实例2 : 让某个文件只能往里面追加内容,但是不能删除历史内容,适用于企业服务器日志

 

chattr +a /var/log/messages      

lsattr   /var/log/messages

-----a------------ /var/log/messages

 

vi   /var/log/messages     无法编辑

echo 123123 >> /var/log/messages    成功了   

最后在最后一行  找到了 123123    说明该文件只能在最后追加内容

 

posted @ 2022-01-23 19:26  终究还是避免不了遗憾  阅读(60)  评论(0编辑  收藏  举报