【学神】文件权限管理

文件权限管理

文件基本权限

学习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:39 .abrt
-rw-------.  1 root root   1698 Aug 29 10:41 anaconda-ks.cfg
[  1  ][ 2 ] [ 3 ][ 4]  [ 5 ][ 6 ][  7  ]

1:代表文件权限

2:代表文件连接数

3:代表文件所有者

4:代表文件所属用户组

5:代表文件容量(默认以字Byte为单位,若加上-h 参数则是以KB,MB或者GB为单位显示如下图)

[[email protected] ~]# ll -h

total 252K

-rw-------. 1 root root 1.7K Aug 29 10:41 anaconda-ks.cfg

-rw-r--r--  1 root root   16 Sep 24 18:10 a.sh

6:代表文件最后被修改日期

7:代表文件名

[[email protected] ~]# ll passwd 
-rw-r--r-- 1 root root 2204 Sep 24 17:15 passwd

文件基本权限

-    rwx    r-x       r-x      user1  user1  FILENAME

类型  拥有者的权限 所属组的权限 其他人的权限 拥有者  属组   对象

第一个字符代表这个文件是“目录、文件、或链接文件等”

若第一个字符为[d]代表目录

若第一个字符为[-]代表文件

若第一个字符为[l]代表链接文件(linkfile)

若第一个字符为[b]代表设备文件里面的可供存储的接口设备

若第一个字符为[c]代表设备文件里面的串行端口设备,如键盘、鼠标

紧跟第一个字符后面的三组连在一起的字符分别代表拥有者的权限,所属组的权限,其他用户的权限,

对于文件:r读  w写  x执行

对于目录:r读(看到目录里面有什么)

     w建文件、删除、移动

     x进入

想要跟深入的了解ls命令最权威的解释当然是man手册

ls [选项] [文件名...]

-C 多列输出,纵向排序。

-F 每个目录名加“ / ”后缀,每个 FIFO 名加“ | ”后缀,每个可运行名加“ * ”后缀。

-R 递归列出遇到的子目录。

-a 列出所有文件,包括以 "." 开头的隐含文件。

-c 使用“状态改变时间”代替“文件修改时间”为依据来排序(使用“ -t ”选项时)或列出(使用“ -l ”选项时)。

-d 将目录名象其它文件一样列出,而不是列出它们的内容。

-i 输出文件前先输出文件系列号(即 i 节点号— i-node number)。 -l 列出(以单列格式)文件模式( file mode ),文件的链接数,所有者名,组名,文件大小(以字节为单位),时间信息,及文件名。缺省时,时间信息显示最近修改时间;可以以选项“ -c ”和“ -u ”选择显示其它两种时间信息。对于设备文件,原先显示文件大小的区域通常显示的是主要和次要的号(majorand minor device numbers)。

-q 将文件名中的非打印字符输出为问号。(对于到终端的输出这是缺省的。)

-r 逆序排列。

-t 按时间信息排序。

-u 使用最近访问时间代替最近修改时间为依据来排序(使用 “ -t ”选项时)或列出(使用“ -l ”选项时)。

-1 单列输出。

GNU 细节

如果标准输出是终端,将多列输出(纵向排序)。

dir ( 也被安装为命令 d ) 等同于“ ls -C ”;即,文件

缺省是多列输出,纵向排序。vdir ( 也被安装为命令 v ) 等同于“ ls -l ”; 即,文件缺省是按长格式输出。

改变文件权限的命令

chmod

作用:修改文件权限

u+r                       user                      拥有者

g-w                      group                   组

o=x                      other                    其他人

a+x                       all                         所有人

+加入权限              - 去除权限      = 设置为

举例:

[[email protected] ~]# ll passwd 
-rw-r--r-- 1 root root 2204 Sep 24 17:15 passwd
[[email protected] ~]# chmod u+x passwd   #添加用户可执行权限
[[email protected] ~]# ll passwd 
-rwxr--r-- 1 root root 2204 Sep 24 17:15 passwd
 
[[email protected] ~]# chmod g-r passwd #去除所属组的可读权限
[[email protected] ~]# ll passwd 
-rwx---r-- 1 root root 2204 Sep 24 17:15 passwd
 
[[email protected] ~]# chmod g=rwx,o=rx passwd 
注意:g=rwx中各个参数之间没有空格,与o=rx之间仅有英文个逗号
[[email protected] ~]# ll passwd 
-rwxrwxr-x 1 root root 2204 Sep 24 17:15 passwd

修改目录的权限

用法同上

[[email protected] ~]# ll -d xuegod
drwxr-xr-x 2 root root 4096 Oct 31 18:29 xuegod
[[email protected] ~]# chmod u-w,g+w,o-x xuegod/
[[email protected] ~]# ll -d xuegod
dr-xrwxr-- 2 root root 4096 Oct 31 18:29 xuegod

修改other权限:

chmod o+/-/=  r 、w 、 x   用法同上

chmod  o+/-/= rwx  用法同上

chmod a+/-/= rwx  用法同上

chmod  +/-/= rwx  用法同上  #不写a也可以

使用数字表示权限

-    rwx    r-x        r-x    user1  user1  FILENAME

类型  拥有者的权限 所属组的权限 其他人的权限 属主  属组 

rwx

r--      -w-    --x

100     010     001                    二进制                   进制转换器

4            2            1                   十进制

rw-    的值是多少?                    4+2=6

r-x                                             4+1=5

rwxr-xr-x 的值是多少?rwx=4+2+1=7          r-x=4+1=5 r-x=4+1=5     rwxr-xr-x=755

[[email protected] ~]# ll -d xuegod/
dr-xrwxr-- 2 root root 4096 Oct 31 18:29 xuegod/
[[email protected] ~]# chmod 644 xuegod/
[[email protected] ~]# ll -d xuegod/
drw-r--r-- 2 root root 4096 Oct 31 18:29 xuegod/

chown

描述:chown 修改每个由第一个非选项参数声明的给定 file(文件) 的用户和/或组的所有权.如下: 如果只给出了用户名(或者数字用户标识),那么该用户即成为每个指定文件的所有者,而该文件的组别并不改变.如果用户名后面紧跟着冒号和组名(或者是数字组标识),并且它们之间没有空格,那么文件的组所有权也随之改变.

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

语法:chown [options] user [:group] file...

chown USER:GROUP 对象

chown USER 对象

chown :GROUP 对象

-R 递归(目录下的所有内容全部更改,否则只修改目录)

[email protected] ~]# chown xuegod:root passwd 
[[email protected] ~]# ll passwd 
-rwxrwxr-x 1 xuegod root 2204 Sep 24 17:15 passwd

一个文件只有读的权限,拥有者是否可以写这个文件?   文件所有者一定可以写文件

[[email protected] ~]# touch xuegod1
[[email protected] ~]# cp xuegod01 /home/xuegod/
[[email protected] ~]# su xuegod
[[email protected] ~]$ vim xuegod01 
[[email protected] ~]$ cat xuegod01 
allow write!!

结果显示可以正常写入!

设置文件默认权限的补码:

系统用户:#umask 022

普通用户:#umask 002

计算方法:

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

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

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

666-033=633                rw—wx-wx

umask掩码为033 .666-033=633  结果为:644

计算方法:

6  6  6           umask   0  33

110 110 110                 000011  011  |  取反

111 100  100\/

110 110 110   与 111 100  100

|         /

110 100 100

6   4   4

了解:

/etc/bashrc

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id-un`" ]; then  # id -gn显示组名,id -un 显示用户名

umask 002   #普通用户

else

umask 022   #系统用户

fi

特殊权限:

SUID  SGID                Stickybit

s对应的数值为:u  4,g  2,

t   1

SUID

限定:只能设置在二进制可执行程序上面。对目录文本设置无效。

功能:程序运行时的权限从执行者变更成程序所有者。

[[email protected] ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 17 2012 /usr/bin/passwd
[[email protected] ~]$ ll /etc/shadow
---------- 1 root root 1054 Oct 31 18:17 /etc/shadow
[[email protected] ~]$ less /etc/shadow
/etc/shadow: Permission denied

由于权限不够所以操作被拒绝。

[[email protected] ~]# ll /usr/bin/less
-rwxr-xr-x 1 root root 154416 Sep 26 2011 /usr/bin/less
[[email protected] ~]# chmod u+s /usr/bin/less       #赋予特殊权限
[[email protected] ~]# su xuegod
[[email protected] root]$ ll /usr/bin/less
-rwsr-xr-x 1 root root 154416 Sep 26 2011 /usr/bin/less
[[email protected] root]$ less /etc/shadow          #正常显示
root:$6$nV./lzE/.D9ygyqV$Gsg5Ipd1Beu8CsWSHriKyVJiz5I3rObB9YkG24DArymS4Niavoh7mWdwqA8GxNO3ddICCw4fNACTO3f.l88iY1:16676:0:99999:7:::
bin:*:15937:0:99999:7:::
daemon:*:15937:0:99999:7:::
adm:*:15937:0:99999:7:::
·
·
·

注意

[[email protected] ~]# chmod 4755 /usr/bin/less  #4755 = u+s
[[email protected] ~]# ll /usr/bin/less
-rwsr-xr-x 1 root root 154416 Sep 26 2011 /usr/bin/less\

SGID:

限定:既可以给二进制可执行程序设置,也可以给目录设置。

功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组

[[email protected] ~]# mkdir xuegod118
[[email protected] ~]# ll -d xuegod118/
drwxr-xr-x 2 root root 4096 Oct 31 19:15 xuegod118/
[[email protected] ~]# chmod g+s xuegod118/
[[email protected] ~]# ll -d xuegod118/
drwxr-sr-x 2 root root 4096 Oct 31 19:15 xuegod118/
[[email protected] ~]# chown :bin xuegod118/
[[email protected] ~]# cd xuegod118/
[[email protected] xuegod118]# touch sishen
[[email protected] xuegod118]# ll sishen 
-rw-r--r-- 1 root bin 0 Oct 31 19:17 sishen

Stickybit

限定:只作用于目录

功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除

[[email protected] ~]# ll -d /tmp/
drwxrwxrwt. 21 root root 4096 Oct 31 19:17 /tmp/
[[email protected] ~]# chmod o+t /tmp/
[[email protected] ~]# su xuegod
[[email protected] root]$ cd /tmp/
[[email protected] tmp]$ touch sishen
[[email protected] tmp]$ ll sishen
-rw-rw-r-- 1 sishen sishen 0 Oct 31 19:33 sishen
[[email protected] tmp]$ su xuegod
Password: 
[[email protected] tmp]$ rm -rf sishen
rm: cannot remove `sishen‘: Operation not permitted

扩展ACL

ACL是Access Control List的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。ACL 可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。

ACL主要针对用户(user)、用户组(group)、以及掩码(mask)方面来控制权限。

简单地来说,ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限。

而在windows系统上,没有这个ACL,ACL是类Unix(Unix-like)操作系统权限的额外支持项目,因此要使用ACL必须要有文件系统的支持才行。主要包括ReiserFS, EXT2/EXT3/ext4, JFS, XFS等文件系统

ACL权限的查看与设置(getfacl, setfacl)

知道了ACL的意义了,也知道了系统是否支持ACL,那么下面就是如何来设定/使用这个ACL呢?

getfacl:查看文件/目录的ACL设定内容

setfacl:设置文件/目录的ACL内容

相关参数说明

先来看看setfacl这个命令的相关参数说明

语法:setfacl [-bkRd] [{-m|-x} acl参数] 文件名

-m :设置后续的acl参数

-x :删除后续的acl参数

-b :删除所有的ACL设定参数

-R :递归设置acl参数

-d :设置预设的acl参数(只对目录有效,在该目录新建的文件也会使用此ACL默认值)

-k :删除预设的ACL参数

[[email protected] ~]# touch a.txt
[[email protected] ~]# getfacl b.txt
# file: b.txt
# owner: root
# group: root
user::rw-
group::r--
other::r—

对目录进行设置

(-R一定要在-m前面,表示目录下所有文件)

[[email protected] ~]# setfacl -R -m u:sishen:rw- xuegod
[[email protected] ~]# getfacl !$
getfacl xuegod
# file: xuegod
# owner: xuegod
# group: xuegod
user::rw-
user:sishen:rw-
group::r--
mask::rw-
other::r—

删除acl

[[email protected] ~]# setfacl -x u:sishen b.txt          #删除单个用户的权限
[[email protected] ~]# setfacl -b b.txt        #删除所有acl权限

REHL6 Linux文件系统扩展属性:chattr  lsattr

+a  只能追加内容

+i  不能被修改

[[email protected] ~]# touch xuegod02
[[email protected] ~]# vim xuegod
[[email protected] ~]# ll xuegod02
-rw-r--r-- 1 root root 0 Oct 31 19:55 xuegod02
[[email protected] ~]# chattr +a xuegod02
[[email protected] ~]# rm -rf xuegod
[[email protected] ~]# rm -rf xuegod02
rm: cannot remove `xuegod02‘: Operation not permitted
[[email protected] ~]# echo BBBBBBBBB > xuegod02
bash: xuegod02: Operation not permitted
od118 ~]# echo XXXXXXX >> xuegod02
bash: xuegod02: Permission denied
[[email protected] ~]# lsattr xuegod02
----ia-------e- xuegod02

     

学神-IT-教育51cto技术交流群:468845589  快来上我们公开课吧!

本文由学神-IT-教育1508班VIP学员学神-IT-死神同学整理提供

时间: 2024-10-05 08:02:57

【学神】文件权限管理的相关文章

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用户登录. 普通用户

linux学习随笔——linux文件权限管理和网络配置

一.linux文件权限管理 查看某个文件的权限命令:ls -l linux文件权限有4种:读(r).写(w).执行(x)和无权限(-) 一般用10个字符表示其权限,按照(1-3-3-3)来分组划分 1位置 表示文件类型 "-"表示文件,"d"表示目录 2-4位 表示用户权限(u) 5-7位 表示组权限(g) 8-10  表示其他权限(o) 通常用chmod来修改权限:chmod     u+r 目标文件 也可以用数字来表示权限 r=4 w=2 x=1 chown命令

关于文件权限管理了解和使用

文件权限管理 文件属性格式 文件属性操作 chown          设置文件的所有者 chgrp          设置文件的属组信息 修改文件的属主: chown [选项] [所有者][:[组]] file 命令中的冒号可用.替换: -R :递归操作文件或目录 chown [选项] --reference=RFLE FILE -rw-r--r--. 1 root root    0 8月   3 18:17 xiaomage   这是没更改属主时候的文件 例如:~]# chown -R m

Linux文件权限管理

一.设置文件所属的用户以及所属的组(chown,chgrp) chgrp用来更改文件的组拥有者,其一般格式为: chgrp [option] group file (1)把文件test的组拥有者改为zfs: chgrp zfs test (2)把test及其子目录下的所有文件的组拥有者改为zfs: chgrp -R zfs test chown用来更改文件所有者与组拥有者,其一般格式为: chown [option] owner[:group] file (1)将test及其子目录下的所有文件的

__利用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 的 用户管理 和 权限机制 ,不同用户不可以轻易地查看.修改彼此的文件. 下面我们就来学