02.【Linux系统编程】Linux权限(root超级用户和普通用户、创建普通用户、sudo短暂提权、权限概念、权限修改、粘滞位)

发布于:2025-09-13 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

1. root超级用户和普通用户

2. 创建普通用户、密码设置、切换用户

3. sudo短暂提权(给普通用户添加sudo权限)

4. 权限

4.1 是什么

4.2 为什么有权限?(权限 = 角色 + 目标属性)

4.2.1 角色

4.2.2 目标属性

4.3 修改目标属性chmod

4.3.1 相关指令

4.3.2 文件权限相关问题(重点)

4.3.3 目录权限相关问题(重点)

4.3.4 缺省权限(权限掩码)(重点)

4.3.5 文件的删除权限 & 粘滞位(重点)

4.4 修改角色chown\chgrp

4.4.1 相关指令


1. root超级用户和普通用户

        Linux下有两种用户:超级用户(root)、普通用户

                • 超级用户:可以再linux系统下做任何事情,不受限制

                • 普通用户:在linux下做有限的事情。

        • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

2. 创建普通用户、密码设置、切换用户

语法: adduser [用户名]
功能: 新创建一个普通用户
语法: passwd [用户名]
功能: 给用户重设密码,root下可以直接给普通用户重置密码。普通用户使用需要加sudo
语法: su
功能: 切换用户

        例如,要从root用户切换到普通用户user,则使用 su user。

        要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码。

# 普通用户切换超级用户
su    # 不重新登陆,不做路径变化
su -  # 重新登陆,路径变回/root


# 超级->普通
su    # 用户名,不需要输入密码,

        注意:Linux多用户之间相互隔离:任何用户,无法进入其他用户的家目录。

3. sudo短暂提权(给普通用户添加sudo权限)

        sudo:是用来进行指定的短暂提权的。

        比如:安装软件到系统中,需要管理员root权限。(软件其实只安装了一份,允许大家同时使用)

        举例:whoami ->普通用户 -> sudo ls ->报错

给普通用户添加sudo权限

        1. 切换root用户,打开/etc/sudoers文件

vim /etc/sudoers

        2. 在100行有以下代码

root    ALL=(ALL)       ALL

        3. 拷贝上述代码并修改用户名为需要添加sudo权限的用户。

root    ALL=(ALL)       ALL
gyy     ALL=(ALL)       ALL
# 我的普通用户名为gyy

        4. 进入vim的命令模式,使用wq!强制保存退出。

4. 权限

4.1 是什么

        权限的本质是:能或者不能做什么事情。

4.2 为什么有权限?(权限 = 角色 + 目标属性)

        1. 控制用户的行为,防止错误的发生

        2. 理解:权限 = 角色 + 目标属性

                权限首先限制的是角色(人)

                权限要求目标必须具备对应的属性

(Linux下一切皆文件,面对的都是文件的:读、写、执行)

4.2.1 角色

1. 角色是什么?

        角色有:拥有者(user)、所属组(group)、other。

        other不需要记录,除了拥有者、所属组之外的就是other。

2. 什么是所属组?

        更精细化的权限管理,首先要有更精细化的身份角色。所属组就是用来给角色分组的。

4.2.2 目标属性

1. 权限位

        拥有者、所属组、other每个有三个权限位,分别为rwx(可读、可写、可执行,权限位是“-”代表没有此权限)

        ◦ 读(r/-):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

        ◦ 写(w/-):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

        ◦ 执行(x/-):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

        ◦ “-”表示不具有该项权限

        例:像下列test.txt文件拥有者的权限是:可读可写不可执行,所属组权限是:可读可写不可执行,other权限是:可读、不可写、不可执行。

4.3 修改目标属性chmod

4.3.1 相关指令

语法: chmod [参数] 权限 文件名
功能: 修改文件属性,参数可以使用“,”表达式
常用选项:

R 递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限。

修改权限的符号:
+ 向权限范围增加权限
-

向权限范围取消权限

=

向权限范围赋予权限

用户符号:
u 拥有者
g 所属组
o 其他用户
a 所有用户

实例:

# 给拥有者添加rw权限
chmod u+rw abc.txt

# 给other取消x权限
chmod o-x abc.txt

# 给所有角色权限设置为rwx
chmod a=rwx abc.txt

        以上是文件权限值得字符表示法,还有三位8进制表示法,将拥有者、所属组、other的三个权限位分别用"1"代表有权限,"0"代表没有权限。使用三位八进制表示权限值。

实例:

# 将test1.txt的权限设置为 110110110 即 rw-rw-rw-
chmod 666 test1.txt

# 将test2.txt的权限设置为 111111111 即 rwxrwxrwx
chmod 777 test2.txt

4.3.2 文件权限相关问题(重点)

        1. 能修改任何人的文件权限吗?用户只能更改自己的文件权限。

        2. 没有权限会怎么办?系统会拒绝让我们访问(Permission denied)

        3. 确定权限信息的时候,系统会先确定用户是谁?拥有者、所属组,还是other?

                在Centos下,用户角色只确定一次,顺序是:拥有者,所属组,other

        4. root用户的权限?不受权限约束

                任何普通用户的文件,root都可以读写

                user和group都是root的用户,即使user和group的权限设置位"---",root用户也可以读写。

        5. 如何理解可执行?可执行只是允许文件执行

                可执行权限 != 文件可以执行。

4.3.3 目录权限相关问题(重点)

        默认情况下,新建的目录rwx权限都要有。

        6. 如果目录没有r权限,就无法查看目录里面的文件,ls报(Permission denied)

        7. 如果目录没有w权限,就无法再智能目录内部新建文件

        8. 如果目录没有x权限,就不能进入目录。

4.3.4 缺省权限(权限掩码)(重点)

        对于新建普通文件:起始权限666,默认不带可执行

        对于新建目录文件:起始文件777,默认携带x

1. 权限掩码umask:系统默认存在,用来让用户设置实际初始权限。

        1. umask目的:希望凡是在umask中出现的权限都不应该在最终权限中出现。

        2. 为什么要有umask?

                a. 默认权限,由OS自主决定,无法在船舰前进行修改 --- 系统可配置,可以灵活满足需要的一种表现。

                b. 特殊情况下,配置umask,可以控制文件的默认权限,让我们的代码都是可控的。

        最终权限 = 起始权限 & (~umask)

umask
# 0002    第一位不看,后三位分别对应9个位的权限值

2. 修改权限掩码

语法: umask [权限掩码]
功能: 查看/修改权限掩码

实例:

# 设置权限掩码
umask 755

# 查看权限掩码
umask

4.3.5 文件的删除权限 & 粘滞位(重点)

1. 一个文件是否能被删除,与文件本身无关,与文件所处的目录的w权限有关!

2. 协作问题,粘滞位

        如果两个用户之间要进行文件级别的协作,不能将共享目录放在私人账号里,则只能放在根目录下。共享文件,不想让非文件的拥有者删除对应的文件!使用粘滞位解决。

        粘滞位目的:在一个公共目录(如 /tmp)中,用户只能删除或重命名自己创建的文件或目录,而不能删除其他用户的文件,即使该目录对所有用户都有写权限(如 777)。

        粘滞位添加:(粘滞位是在other的x权限位置)

# 添加粘滞位
chmod +t [目录/文件名]

# 删除粘滞位
chmod -t [目录/文件名]

        当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

                1. 超级管理员删除

                2. 该目录的所有者删除

                3. 该文件的所有者删除

4.4 修改角色chown\chgrp

        系统默认不允许我们把文件给别人,所以想要修改角色必须提高权限,使用sudo或者切换root用户。

4.4.1 相关指令

语法: chown [角色] 文件名
功能: 修改文件拥有者角色,可以同时修改拥有者和所属组
常用选项:

-R 递归修改文件或目录的拥有者

语法: chgrp [角色] 文件名
功能: 修改文件所属组角色
常用选项:

-R 递归修改文件或目录的所属组

# 修改test1.txt的拥有者为root
chown root test1.txt

# 修改test2.txt的拥有者和所属组为user1
chown user1:user1 test2.txt

# 修改test3.txt的所属组为user3
chgrp user3 test3.txt

网站公告

今日签到

点亮在社区的每一天
去签到