第八天 RHEL7.2 文件权限管理(第一部分)

一、文件的基本权限

文件有三种访问方式限制访问权限

第一种:文件所有者的访问权限

第二种:文件所有者同组的访问权限

第三种:其他人访问权限

当使用ls -l 或ll命令时,可查看此三种权限

在权限描述前,有一个字符,用来描述文件类型,具体文件类型与对应字符如下:

-    代表普通文件

d    代表directory,目录文件

l     代表link,连接文件,指向另一个文件

c    代表character,字符设备文件

b    代表blocks,块设备文件

s    代表sockets,套接字文件

p   代表pipes,命名管道文件

后两种不是很常见

三种权限分别代表 分别为文件所有者、文件所有者属组、其他人

每个权限由三个字符表示即如下:

-          rw-      r--      r--     root     root   1.txt

文件类型   拥有者  属组   其他人  所有者   属组    对象

其中:

- 表示没有此权限

r  表示read,可读

w 表示write,可写

x 表示execute,可执行

==================================================================

二、文件的特殊权限

其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”.

因而用户若无特殊需求,不应该启用这些权限,避免安全方面出现严重漏洞,造成入侵,甚至摧毁系统!!!

s(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,heike经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。

如:passwd命令

ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 1月 30 2014 /usr/bin/passwd

举例:

使用root查看密码文件

使用gan查看密码文件

 

怎样实现所有用户都能查看呢

使用root用户给/bin/cat添加s特权

再添加一个普通用户尝试:

为什么可以查看了呢?其实我们是借用root用户的身份执行的

s(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。

强调: SUID一般用在文件上(脚本) ,SGID用在目录上比较多

举例:

[[email protected] ~]# mkdir /test
[[email protected] ~]# groupadd xiaogan
[[email protected] ~]# useradd -G xiaogan gan1
[[email protected] ~]# useradd -G xiaogan gan2
[[email protected] ~]# chown :xiaogan /test
[[email protected] ~]# ll -d /test
drwxr-xr-x 2 root xiaogan 6 8月   6 15:07 /test
[[email protected] ~]# chmod 775 /test
[[email protected] ~]# chmod g+s /test
[[email protected] ~]# ll -d /test/
drwxrwsr-x 2 root xiaogan 6 8月   6 15:07 /test/
[[email protected] ~]# su - gan1
[[email protected] ~]$ cd /test/
[[email protected] test]$ touch a
[[email protected] test]$ touch b
[[email protected] test]$ ll
total 0
-rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 a
-rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 b
[[email protected] test]$ exit
logout
[[email protected] ~]# su - gan2
[[email protected] ~]$ cd /test/
[[email protected] test]$ touch c
[[email protected] test]$ touch d
[[email protected] test]$ ll
total 0
-rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 a
-rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 b
-rw-rw-r-- 1 gan2 xiaogan 0 8月   6 15:10 c
-rw-rw-r-- 1 gan2 xiaogan 0 8月   6 15:10 d

别人在此目录中创建的任何目录和文件,所属组都是此目录的所属组

但是属主还是自己

但是任何人在此目录创建的文件,都可以被删除

============================================================

SBIT(Sticky):只针对目录有效,对文件无效,作用是防止别人删除掉对方的资料

[[email protected] ~]# ll -d /test/
drwxrwsr-x 2 root xiaogan 38 8月   6 15:14 /test/
[[email protected] ~]# chmod o+t /test
[[email protected] ~]# ll -d /test/
drwxrwsr-t 2 root xiaogan 38 8月   6 15:14 /test/
[[email protected] ~]# su - gan1
Last login: 六 8月  6 15:13:23 CST 2016 on pts/0
[[email protected] ~]$ cd /test/
[[email protected] test]$ ll
total 0
-rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 a
-rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 b
-rw-rw-r-- 1 gan2 xiaogan 0 8月   6 15:14 c
-rw-rw-r-- 1 gan2 xiaogan 0 8月   6 15:10 d
[[email protected] test]$ rm -rf c
rm: cannot remove ‘c’: Operation not permitted
[[email protected] test]$ 

============================================================

因为SUID、SGID、Sticky占用x的位置来表示,所以在表示上会有大小写之分。

加入同时开启执行权限和SUID、SGID、Sticky,则权限表示字符是小写的:

[[email protected] ~]# ll test.txt
-rw-r--r-- 1 root root 0 8月   6 15:17 test.txt
[[email protected] ~]# chmod 777 test.txt
[[email protected] ~]# ll test.txt
-rwxrwxrwx 1 root root 0 8月   6 15:17 test.txt
[[email protected] ~]# chmod u+s test.txt
[[email protected] ~]# ll test.txt
-rwsrwxrwx 1 root root 0 8月   6 15:17 test.txt
[[email protected] ~]# chmod u-x test.txt
[[email protected] ~]# ll test.txt
-rwSrwxrwx 1 root root 0 8月   6 15:17 test.txt
[[email protected] ~]# 

===================================================================

三、文件权限操作命令 chmod

我们可以使用chmod命令修改文件权限,

u --> 拥有者权限

g -->属组权限

o -->其他人权限

例如:chmod u+x 1.txt

[[email protected] ~]# ll 1.txt 
-rwxr--r--. 1 root root 1598 8月 5 13:48 1.txt

我们还可以使用三个数字来表示目前1.txt文件的访问权限

如图:

前三个字符,代表拥有者权限,中间三个字符代表属组权限,最后三个字符,其他人权限

可分别用一个数字表示三者对应权限,即744,如图:

rwx中,r对应二进制位中的第三位2的2次方,等于4

w对应二进制位中第二位2的一次方,等于2

x对应二进制位中第一位2的零次方,等于1

若没有对应权限取值为0,故1.txt文件访问权限用三位数表示如图

-rwx------:  文件所有者对文件具有读取、写入和执行的权限。

-rwxr―r--:    文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。

-rw-rw-r-x:   文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。

drwx--x--x:   目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。

drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。

-rwx------:等于数字表示700

-rwxr―r--:等于数字表示744

-rw-rw-r-x:等于数字表示665

drwx―x―x:等于数字表示711

drwx------:等于数字表示700

===================================================================

使用命令chown命令,改变目录或文件的所有权

chown:

作用:修改文件拥有者和所属组

语法:chown USER:GROUP 对象

     chown 用户:组  文件

 

操作更改属主:

chown 用户 对象

单独更改属组:

chown :组 对象

文件与目录不仅可以改变权限,其所有权及所属用户组也能修改,和设置权限类似,

用户可以通过图形界面来设置,或执行chown命令来修改。

要修改目录的权限,使用-R参数就可以了,方法和前面一样。 (-R 递归)

[[email protected] ~]# ll 1.txt
-rw-r--r-- 1 root root 0 8月   6 15:22 1.txt
[[email protected] ~]# chown gan:gan 1.txt
[[email protected] ~]# ll 1.txt
-rw-r--r-- 1 gan gan 0 8月   6 15:22 1.txt
[[email protected] ~]# chown root 1.txt
[[email protected] ~]# ll 1.txt
-rw-r--r-- 1 root gan 0 8月   6 15:22 1.txt
[[email protected] ~]# chown :root 1.txt
[[email protected] ~]# ll 1.txt
-rw-r--r-- 1 root root 0 8月   6 15:22 1.txt
[[email protected] ~]# 

===================================================================

我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢?

umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反.

mask设置的是权限补码,而chmod设置的是文件权限码。

一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。

vim /etc/profile

umask采用的是补码算法,对于文件,最大值是6,对于目录最大值是7

当我们使用root用户新建一个文件时,umask 022会执行

如此,会采用补码算法,拿掉我们新建文件的 属组 与 其他人 的 读权限,故权限是 755 如上图

对于Linux来说,文件默认是没有执行权限的,所以最大值是6,故在新建文件时,权限是644

umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。

对于文件来说,这一数字的最大值分别是6。

系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。

 

目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7。

 该命令的一般形式为:umask nnn 其中nnn为umask置000 - 777。

我们只要记住u m a s k是从权限中拿走相应的位即可。

 如:umask值为022,则默认目录权限为755,默认文件权限为644。

计算方法:

文件默认权限=666-umask值   666-022=644

目录默认权限=777-umask 值   777-022=755

#这是一个好的记忆方法,但不严谨。

举例:创建 一个文件:

umask=033

touch c.txt 

那么c.txt的默认文件权限是?

 

umask掩码为033 .

666-033=633  结果为: 644

时间: 2024-10-01 05:20:11

第八天 RHEL7.2 文件权限管理(第一部分)的相关文章

Rhel7.2文件权限管理

文件权限管理 1.在/mnt中创建一个文件: a.txt 设置权限为: rwx r-x --- 命令#touch a.txt #chmod 750 a.txt 2.修改/mnt/a.txt 拥有者为自己的名字. 所属组为:zml 命令# chown zml:zml a.txt 3.如果umask 值为044 ,以root身份创建的文件b.txt 默认的权限为什么? 因为文件的默认最大权限为666,所以当umask值为044时,新建文件的权限为622 4.新建三个组group1 .group2 .

2015年8月27日课程作业(文件权限管理及grep正则和扩展正则表达式)-JY1506402-19+liuhui880818

学习内容:文件权限管理及grep正则和扩展正则表达式 系统环境:CentOS 6.7/7 x86_64 一.作业(练习)内容: 1.总结本此课程中所涉及命令的使用方法及相关示例展示: 2.总结基本正则表达式及扩展正则表达式 3.显示/etc/passwd文件中以bash结尾的行 4.显示/etc/passwd文件中的两位数或三位数 5.显示`netstat -tan`命令结果中以'LISTEN'后跟0个.1个或者多个空白字符结尾的行 6.添加用户bash.testbash.basher以及nol

Linux用户及文件权限管理

用户及文件权限管理 一.实验介绍 1.1 实验内容 Linux 中创建.删除用户,及用户组等操作. Linux 中的文件权限设置. 1.2 实验知识点 Linux 用户管理 Linux 权限管理 二.Linux 用户管理 通过第一节课程的学习,你应该已经知道,Linux 是一个可以实现多用户登陆的操作系统,比如"李雷"和"韩梅梅"都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件.但实际上他们的文件都是放在同一个物理磁

Linux 系统管理 01:文件权限管理

这篇文章主要包括如下主题: 一.基础概念 二.安全上下文 三.基本权限 四.特殊权限 五.文件访问控制列表 一.基础概念 1.文件拥有者:属主 2.文件拥有组:属组 二.安全上下文 1.进程是以某用户发起从而运行的,故进程会以运行其用户的权限完成所有操作 2.进程访问文件的权限应用模型 (1)如果"进程的属主 == 被访问文件的属主",则应用属主的权限,否则进入(2) (2)如果"进程的属主 in 被访问文件的属组中",则应用属组的权限,否则进入(3) (3)直接应

Linux之用户及文件权限管理

Linux之用户及文件权限管理 前言:Linux 是一个多用户的操作系统:Linux哲学思想之一-"一切皆文件".说明在学习Linux过程中,用户及文件权限的管理是非常重要滴.本文主要是引用了CentOs/RedHat 7.1的命令. 一.用户.组管理 1).用户.组类型: 超级用户(管理员):root用户具有一切权限,只有在进行系统维护(如创建用户.分配权限)时用到:由于root用户权限过大,为了避免管理员的误操作导致不可逆的后果,所以在非必要的情况下不用root用户登录. 普通用户

__利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载

利用PHP的debug_backtrace函数,实现PHP文件权限管理.动态加载 简述 可能大家都知道,php中有一个函数叫debug_backtrace,它可以回溯跟踪函数的调用信息,可以说是一个调试利器. 好,来复习一下.view source?01    one();02     03    function one() {04        two();05    }06     07    function two() {08        three();09    }10    

Linux 基础入门----用户及文件权限管理

用户及文件权限管理 实验介绍 1.Linux 中创建.删除用户,及用户组等操作. 2.Linux 中的文件权限设置. 一.Linux 用户管理 Linux 是一个可以实现多用户登陆的操作系统,比如“李雷”和“韩梅梅”都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件.但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理 和 权限机制 ,不同用户不可以轻易地查看.修改彼此的文件. 下面我们就来学

【学神】文件权限管理

文件权限管理 文件基本权限 学习Linux的基本权限首先要掌握几个常用的的命令:ls .ll = ls –l.ll –a等.\ 例如: 执行下列命令之后: [[email protected] ~]# ll -a total 432 dr-xr-x---. 31root root   4096 Oct31 17:53 . dr-xr-xr-x. 27root root   4096 Oct31 17:51 .. drwxr-xr-x.  2 root root   4096 Aug 29 16:

利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载

简述 可能大家都知道,php中有一个函数叫debug_backtrace,它可以回溯跟踪函数的调用信息,可以说是一个调试利器. 好,来复习一下 01 one(); 02 03 function one() { 04 two(); 05 } 06 07 function two() { 08 three(); 09 } 10 11 function three() { 12 print_r( debug_backtrace() ); 13 } 14 15 /* 16 输出: 17 Array 18