Linux系统配置及服务管理-03-用户的权限

Linux系统配置及服务管理-03-用户的权限

基本权限UGO

概述

- QQ空间的红钻特权
- 某高仿传奇,VIP16,一刀9999999
- 腾讯视频/爱奇艺,会员特权
- 文件权限设置真实的样子
    - 赋于某个用户或组 能够以何种方式 访问某个文件(图片文件,视频文件,普通文件)

权限对象

属主: u
属组: g
其他人: o
所有人:a(u+g+o) =all

权限类型

读:r=4
写:w=2
执行: x=1

查看权限

[root@localhost ~]#ls  -l  /root/1.txt
-rw-r--r--.   1   root root  179  5月  25  14:27  /root/1.txt

对内容的解释

  • 文件类型
rw-       主人的权限,属主
r--         属组的权限
r--         其他人的权限
  • 权限的扩展
1        文件链接(第七章文件链接)
root     文件的属主
root     文件的属组 
179      大小
5月  25  14:27      文件最后的修改时间
/root/1.txt    文件的名和路径

设置权限

更改权限

  • 使用符号
    • 语法
使用符号:u用户 g组  o其他  r读   w写  x执行

语法: chmod   对象(u/g/o/a)赋值符(+/-/= 可加可减可等)权限类型(r/w/x)    文件/目录
      chmod u=rwx /1.txt
  • 示例
1.了解普通文件的基本权限
[root@localhost ~]# cd  /tmp
[root@localhost ~]# touch file1
[root@localhost tmp]# ll file1 
-rw-r--r--. 1 root root 0 4月  13 20:49 file1
权限           属主    属组                文件

2.编写程序,输入以下内容
[root@localhost tmp]#vim file1 

echo    "hello 2020"
read    -p     "请输入您的姓名:"     name
echo     "哈哈 $name 是大笨蛋"

3.增加执行权限
[root@localhost tmp]# chmod u+x file1    # 属主增加执行

4.运行测试。成功
[root@localhost tmp]# ./file1 

hello 2020
请输入您的姓名:4567
4567 是大笨蛋

5.去除权限。运行失败
[root@localhost tmp]# chmod u-x file1 
[root@localhost tmp]# ./file1
-bash: ./file1: 权限不够

6.更多的修改权限练习
[root@localhost tmp]# chmod a=rwx file1   # 所有人等于读写执行
[root@localhost tmp]# chmod a=- file1  # 所有人没有权限
[root@localhost tmp]# chmod ug=rw,o=r file1 //属主属组等于读写,其他人只读
[root@localhost tmp]# ll file1 # 以长模式方式查看文件权限
-rw-rw-r-- 1 alice it 17 10-25 16:45 file1 //显示的结果
  • 使用数字
4读r   2写w   1执行x

[root@localhost ~]# chmod 644 file1
[root@localhost ~]# ll file1
-rw-r--r-- 1 alice it 17 10-25 16:45 file1

更改文件属主、属组

  • chown命令
chown: 设置一个文件属于谁,属主

语法: chown 用户名.组名 文件  或   chown 用户名:组名  文件
[root@localhost ~]# chown alice.hr file1   # 改属主、属组

[root@localhost  ~]# chown alice file1  # 只改属主

[root@localhost ~]# chown .hr file1   # 只改属组

- 选项
	-R 针对目录中所有的文件进行更改。
	chown -R root.root /tmp/aa
  • chgrp命令
- chgrp: 设置一个文件属于哪个组,属组。chown可实现该功能
- 语法:  chgrp   组名   文件      

[root@localhost ~]# chgrp it file1  # 改文件属组
[root@localhost ~]# chgrp -R it dir1  # 改文件夹属组。 -R 是递归的意思

案例

1.用户权限意义

  • 设定用户账户对文件(图片,视频,程序)的访问能力(看一看,写一写,执行)。

2.权限的对象

  • 属主:文件的主人:u
  • 属组:文件属于组员权限:g
  • 其他人:除了主人和组员之外的用户:other
  • 特殊对象:所有人(包含主人,组员,其他):all 全部

3.权限的类型

  • 读取:r=4
  • 写入:w=2
  • 执行:x=1

4.修改文件的权限(完成授权一种方法)

  • 命令:chmod(ch:change 改变 mod:modify 设置)
  • 语法:chmod 授权 文件
  • 示例:chmod u+x file1.txt
  • 示例:chmod 764 file1.txt (属主读写执行,属组读写,其他人读)

5.修改文件的属主和属组(完成授权另一种方法)

  • 命令:chown(ch改变 own所有者)
  • 语法:chown 属主.属组 文件/文件夹
  • 语法:chown 属主 文件
  • 语法:chown .属组 文件
  • 示例:chown user01.hr file1.txt
  • 示例:chown -R user01.hr dir1/

6.案例需求:

  • 文件file10.txt
  • 属主是user100,读写执行-7(可以看内容,可以改内容,可以执行)
  • 属组是jishuzu(user200),读取 -4(只能看,不能改,不能执行)
  • 其他人 没有权限-0(既不能看,又不能改和执行)

7.操作:

# 1.使用root账户,来到/tmp目录
[root@localhost tmp]# cd /tmp
[root@localhost tmp]# pwd

# 2.创建文件file10.txt
[root@localhost tmp]# touch file10.txt
[root@localhost tmp]# ll file10.txt 
-rw-r--r--. 1 root root 0 3月  19 16:20 file10.txt
-  主人:读写rw
-  组:读r
-  其他人:读r

# 3.准备测试账号
[root@localhost tmp]# useradd user100
[root@localhost tmp]# useradd user200
[root@localhost tmp]# useradd user300
[root@localhost tmp]# groupadd jishuzu
[root@localhost tmp]# usermod -aG jishuzu   user200
[root@localhost tmp]# id user200
uid=1013(user200) gid=1016(user200) 组=1016(user200),1018(jishuzu)

# 4.授予文件属主和属组,以及其他人的权限。
[root@localhost tmp]# chmod 740 file10.txt 
[root@localhost tmp]# ll file10.txt 
-rwxr-----  . 1 root root 0 3月  19 16:20 file10.txt
主人:  读写执行
组:    读
其他人:没有权限

# 5.修改文件属主和属组。chown
[root@localhost tmp]# chown user100.jishuzu  file10.txt 
[root@localhost tmp]# ll file10.txt 
-rwxr-----. 1 user100 jishuzu 0 3月  19 16:20 file10.txt
属主:user100
属组:jishuzu(组员user200)

# 6.测试
- 使用user100,访问文件。写入文件,执行文件

[root@localhost tmp]# su - user100
[user100@localhost ~]$ cd /tmp/
[user100@localhost tmp]$ cat file10.txt 
[user100@localhost tmp]$ vim file10.txt 
[user100@localhost tmp]$ ./file10.txt 
123
456
789
[user100@localhost tmp]$ exit
登出

# 7.使用jishuzu成员,可读,不可写和执行
[root@localhost tmp]# su - user200
[user200@localhost ~]$ cd /tmp/
[user200@localhost tmp]$ cat file10.txt 
echo 123
echo 456
echo 789
[user200@localhost tmp]$ vim file10.txt 
写入失败,强制退出:q!
[user200@localhost tmp]$ ./file10.txt
-bash: ./file10.txt: 权限不够
[user200@localhost tmp]$ exit
登出

# 使用其他用户user300,访问文件失败。写入失败,执行失败。
[root@localhost tmp]# su - user300
[user300@localhost ~]$ cd /tmp/
[user300@localhost tmp]$ cat file10.txt 
cat: file10.txt: Permission denied
[user300@localhost tmp]$ vim file10.txt 
写入失败,强制退出:q!
[user300@localhost tmp]$ ./file10.txt
-bash: ./file10.txt: 权限不够
[user300@localhost tmp]$ exit
登出

基本权限 ACL

区别

  • 请思考:使用 chmod 能针对独立用户设置文件不同的权限吗?
    user01 rwx file1
    user02 rw file1
    user03 r file1
    user04 rwx file1
    user05 rw file1
    答案是不能,因此需要ACL

  • ACL文件权限管理: 设置不同用户,不同的基本权限(r、w、x)。 UGO设置基本权限: 只能一个用户,一个组和其他人

语法

setfacl   -m   u:alice:rw    /home/test.txt
setfacl   -m   g:hr:rwx      /home/test.txt
命令      选项  用户或组:用户名:权限    文件对象

用法

准备文件

[root@localhost ~]# touch /home/test.txt
[root@localhost ~]# ll /home/test.txt 
-rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt

设置ACL

  • 查看文件有哪些ACL权限。
[root@localhost ~]# getfacl /home/test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
  • 设置用户alice,jack权限
前提:创建alice 和jack用户。过程略
[root@localhost ~]# setfacl -m u:alice:rw /home/test.txt
[root@localhost ~]# setfacl -m u:jack:- /home/test.txt
[root@localhost ~]# getfacl /home/test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
user:alice:rw-
user:jack:---
group::r--
mask::rw-
other::r--
[root@localhost ~]# setfacl -m o::rw /home/test.txt    # o:其他用户,俩冒号,不指定用户名,不写冒号语法错误

查看/删除:

  • 查看ACL
[root@localhost ~]# getfacl /home/test.txt
getfacl: Removing leading '/' from absolute path names
# file: home/test.txt      文件名
# owner: root              属主:root
# group: root              属组:root
user::rwx                  用户:属主:rwx
user:alice:rw-			   用户:alice:rw-
user:jack:---		       用户:jack:---
group::rwx		           组:属组:rwx
mask::rwx				   掩码::rwx
other::rwx				   other:其他人:rwx
  • 删除ACL
- 设置
	- 增加hr组对test.txt文件读取的权限
	- [root@localhost ~]# setfacl -m g:hr:r /home/test.txt   # -m 是设置

- 删除部分
	- [root@localhost ~]# setfacl -x g:hr /home/test.txt   # -x 是删除,删除组hr的acl权限

- 删除所有
	- [root@localhost ~]# setfacl -b /home/test.txt  # -b 删除所有acl权限

特殊权限(了解)

特殊位 suid

高级权限的类型

suid 针对文件/程序(如 cat命令)时,具备临时获得属主的权限。
sgid
stick

问题

# 下面的操作,为什么会失败!
[root@localhost ~]# ll /root/file1.txt 
-rw-r--r-- 1 root root 4 7月  27 14:14 /root/file1.txt
[root@localhost ~]#su - alice
[alice@localhost ~]$ cat /root/file1.txt
cat: /root/file1.txt: 权限不够

分析:root运行是超管的权限,普通用户运行时是普通用户的权限。
root /usr/bin/cat (root) /root/file1.txt OK
alice /usr/bin/cat (alice) /root/file1.txt

示例

设置suid,使普通用户通过suid临时提权,查看超管root用户的文件

# 1.为cat程序添加上suid权限。
[root@localhost ~]# ll  /usr/bin/cat
-rwxr-xr-x. 1 root root 54080 8月  20 2019 /usr/bin/cat
[root@localhost ~]# chmod u+s /usr/bin/cat
[root@localhost ~]# ll  /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 8月  20 2019 /usr/bin/cat

可以看到属主的权力变成了 rws

# 2.使用普通用户运行cat。暂时获得root权限
[root@localhost ~]# su - alice
[alice@localhost ~]$ cat /root/file1.txt  # 结果,普通用户,看到了root的内容。这个行为很危险
# 请在试验后,将cat的suid权限除去。
[root@localhost ~]# chmod u-s /usr/bin/cat

文件属性修改 chattr

用途

  • 常用于锁定某个文件,拒绝修改。通常会对日志文件加不可删除或追加设置。防止误删

分类

在这里插入图片描述

案例

# 1 先创建新文件进行对比。查看默认权限。

[root@localhost ~]# touch file100
[root@localhost ~]# lsattr file100
-------------- file100


# 2 加上不能删除的属性。
[root@localhost ~]# chattr +i file100   # 不能更改,重命名,删除

# 3 查看不同属性

[root@localhost ~]# lsattr file100
----i--------- file100

# 4 尝试删除

[root@localhost ~]# rm -rf file100 
rm: cannot remove `file100': Operation not permitted

# 5 将属性还原。

[root@localhost ~]# chattr -i file100

注意:设置文件属性(特别权限),针对所有用户,root也无权限操作

进程掩码 umask

概述

新建文件、目录的默认权限会受到umask的影响,umask表示要减掉的权限,当新建目录时用777减去umask的值,新建文件时,还要在umask值得基础上再减去111。

umask默认的值为0022(掩码),其中第一位代表了一项特别的安全特性,叫作粘着位(sticky bit),后面三个数值组成了umask的八进制值。

示例1:观察系统默认掩码

在shell进程中创建文件,先查看当前用户的umask权限

[root@localhost ~]# umask 			
0022
[root@localhost ~]# touch file800
[root@localhost ~]# mkdir dir800
[root@localhost ~]# ll -d dir800 file800 
drwxr-xr-x. 2 root root 4096 3月  11 19:40 dir800   # 创建目录减去022
-rw-r--r--. 1 root root    0 3月  11 19:40 file800   # 创建文件还要再减去022的基础上减去111

示例2:修改shell umask值(临时)

[root@localhost ~]# umask 000
[root@localhost ~]# mkdir dir900
[root@localhost ~]# touch file900
[root@localhost ~]# ll -d dir900 file900 
drwxrwxrwx. 2 root root 4096 3月  11 19:44 dir900
-rw-rw-rw-. 1 root root    0 3月  11 19:44 file900

猜你喜欢

转载自blog.csdn.net/HYESC/article/details/127382242
今日推荐