Linux基础3(文件权限)

文件权限

1、普通权限

(登陆用户对文件或目录的读写执行的权限)
普通权限对管理员用户无效

文件和目录 都有4中类型的用户
u 所有者 : 文件、目录的创建者
g 所属组 : 文件、目录属于的用户组
o 其他用户: 用户既不是文件、目录的创建者,也没有在文件、目录所属的用户组里
a 所有用户:以上3类用户的总称


4 2 1 0
r w x -
文件或目录权限的类型 读、写、执行 无权限

查看文件/目录的权限

ll 文件名
ll 目录/文件名
ll -d 目录名

权限列表 链接个数 所有者 所属组 大小 日期 时间 文件名/目录

权限列表(由10个字符组成)
第一列字符 表示文件类型

1 - 文本文件
2 d 目录
3 l 链接文件
4 s 套接字文件
5 b 块文件
6 p 管道文件
7 c 字符文件

剩下的9列字符 每3列为一组 分3组
第一组 表示 所有者权限
第二组 表示 所属组权限
第三组 表示 其他用户权限

每组权限里的

第一列 r 权限显示位
第二列 w 权限显示位
第三列 x 权限显示位

* 若显示位置是字符 - 表示没有此权限
权限 文件上 目录上
r读 看文件的内容 浏览目录下的文件列表
cat head tail more less ls

w写 编辑文件内容 创建或删除文件或目录
vim touch rm mkdir rmdir
cp mv

x执行 可以运行文件 可以进入目录
./文件名 cd
/testdir/a.sh


* 要想让用户对目录有写权限 要同时开放x权限
* 一旦用户对目录拥有了w权限 ,就对这个目录下的子文件拥有的完全权限


设置权限命令的语法格式 - chmod

chmod -R 权限列表 文件名/目录名

权限列表

用数字表示
754
ugo
字母表示
用户类型 赋值符号 权限列表
u = r w x -
g +
o -
a

= 设置指定的权限
+ 在原有权限的基础上增加权限
- 在原有权限的基础上去掉权限

实例

chmod 700 文件名
chmod 754 目录名
chmod u-x 文件名/目录名/文件名
chmod u=rx,g=r,o=r 目录名/文件名
chmod a=r 目录名/文件名
chmod -R 700 /teadir 

mkdir -m 700 目录名 //创建目录时指定目录的权限,
//若不指定权限系统设置的默认权限

查看创建文件时的默认权限

umask -S
umask
普通用户 特权用户
文件 644 644
目录 775 755

2、特殊权限

SUID 、 SGID 、 Set stikcy
字母 数字
SUID s 4
SGID s 2
Set sticky t 1

SUID 权限位只能设置在二进制文件上(通常就是系统命令)
当用户运行设置了suid权限位的文件时,会拥有文件所有者的权限
suid权限只在执行过程中有效。
用户要对文件本身有执行权限,才能使用文件的suid权限。

u x
用字母s表示,占用文件所有者的执行位显示
当s小写时,文件的所有者对文件有执行权限
当s大写时,文件的所有者对文件没有执行权限
对应的数字权限是数字 4

chmod u+s /usr/sbin/useradd
chmod u-s /usr/sbin/useradd

SGID 既可以设置在文件上,又可以设置在目录上,通常设置在目录上。
设置上文件上,当用户执行文件时,拥有文件所属组的权限
设置在目录上,在目录下创建的子文件、子目录继承父目录的所属组。

用字母s表示,占用文件、或目录的所属组的执行权限位显示
当s小写时,文件的所属组用户对目录有执行权限
当s大写时,文件的所属组用户对目录没有执行权限
对应的数字权限 是 数字2

chmod g+s /usr/sbin/useradd
chmod g-s /usr/sbin/useradd

Set stikcy 粘滞位(防删除位)
只能设置在目录上。
当给目录设置t权限位,目录下的文件只能被文件的所有者删除、
不能被其他用户移动 、改名、编辑 (但可以拷贝)
此权限对管理员用户无效。

用字母t表示,占用目录其他用户执行权限位显示
当t小写时, 其他用户对目录有执行权限
当t大写时, 其他用户对目录没有执行权限
对应的数字权限 是 数字1
suid sgid set-sticky
4 2 1
s s t
u-x g-x o-x

1755 rwxr-xr-t

7777 rwsrwsrwt

mkdir -m 000 /dir10
useradd u10
useradd u12
useradd u3
useradd u2

让系统用户u2对 /dir10 目录有完全权限。
只让系统用户u2对 /dir10 目录有完全权限。
只让系统用户u2、u3 对 /dir10 目录有完全权限。

3、文件访问控制列表

- facl
dumpe2fs /dev/sda2 | grep --color acl

getfacl 目录名/文件名

getfacl /dir10


在不改变本身权限的情况下,单独设置某个用户或用户组 对 某个文件或目录的访问权限。

setfacl 选项 [参数]:用户类型:权限列表 文件名/目录名

选项
-m 设置facl权限
-x 删除facl权限(一次删除一个)
-b 删除目录或文件的所有acl权限
-k 删除目录的默认acl权限
-R 递归设置
setfacl -R -m u:u100:rwx /dir10

参数
m 设置acl_mask 码的权限

acl权限mask码 : 控制acl用户的权限
默认acl_mask 值是rwx
授权用户的acl的最终权限是 授权权限与acl_mask码逻辑运算后的权

setfacl -m m:r /dir10

d 设置目录的默认acl权限
setfacl -m d:u:u1:rwx /dir6


用户类型 u 设置某个用户的访问权限
g 设置某个用户组的访问权限

权限列表 r w x

mkdir -m 755 /dir6

让系统用户u2 对 /dir6目录下的所有文件有rwx权限


4、文件的隐藏权限

查看文件的隐藏属性
lsattr 文件名

设置
chattr +-=a|i|A 文件名

i 文件的内容不能被编辑 (管理员也不可以)
a 只能以追加的方式给文件添加新内容
A 不更新文件访问时间

练习

一、基本权限和归属

1,长格式显示/etc/passwd和/boot,分别说出他们相应的权限
2,用字符权限形式将Desktop(包括里面的文件)权限更改成770
3,用数字权限形式将Desktop(包括里面的文件)权限更改成755
4,编写test.sh脚本,里面内容是 echo Hello World。设置允许执行该脚本
5,查看umask值,代表什么意思
6,创建一个/opt/studir目录,权限为755。将/opt/studir目录所有者改成student,所属组为users
7,在将/opt/studir目录包括目录下的所有文件和子目录所有者改成stu01
8,删除实验中创建的账户与组

二、附加权限控制

1,长格式显示/tmp和/usr/bin/passwd,查看其权限
2,创建普通账户tom,查找mkdir命令在什么地方,将其拷贝到/bin下改名为smkdir,给其设置suid权限
3,tom登陆使用mkdir创建/tmp/test1目录,查看其权限
4,tom登陆使用smkdir创建/tmp/test2目录,查看其权限
5,删除smkdir命令
6,查找cp命令在什么地方,将其拷贝到/bin下改名为gcp,给其设置sgid权限
7,用tom账户登录,使用cp命令创建/tmp/file1文件。使用gcp命令创建/tmp/file2文件,查看这2个文件权限部分区别。
8,删除gcp命令,tom账户
9,创建user01,user02账户,group01组。/software目录,用user01在该目录下创建test01,user02在该目录下创建test02,查看其权限
10,更改software目录所有者为root,所属组为group01,允许所有人对此目录有读、写、执行权限,并且在该目录下创建文件和目录都自动继承software的属组
11,删除user01,user02账户,group01组,以及/software目录
12,查看当前磁盘分区情况,查看根分区是否支持acl
13,查看/root的acl权限,创建账户jack,jack是否可以进入/root?为什么
14,使用acl权限设置jack能够进入/root
15,创建/data目录,设置在/data目录下新建的文件和目录,jack都有读、写、执行权限
16,清除/data的acl权限
17,删除/data目录与jack账户Linux基础3(用户/组管理,rpm,yum,源码安装软件)
公众号请关注:侠之大者
原文地址:https://www.cnblogs.com/kamil/p/5411515.html