当前位置 : 主页 > 操作系统 > centos >

Linux 用户组和权限管理

来源:互联网 收集:自由互联 发布时间:2023-02-04
1. Linux的安全模型 1.1 安全3A 安全3A并不是Linux特有的概念,在很多领域都有3A的概念,比如微软、思科、华为等设备都有安全的概念;大致分为以下一个概念: 认证(Authentication):即验

1. Linux的安全模型

1.1 安全3A

安全3A并不是Linux特有的概念,在很多领域都有3A的概念,比如微软、思科、华为等设备都有安全的概念;大致分为以下一个概念:

  • 认证(Authentication):即验证身份,主要是验证您是谁的功能。
  • 授权(Authorization):授权一般是验证身份后,所拥有的权限
  • 审计(Accouting|Audition):审计一般是起到监督作用,反馈一些存在的问题,比如安全审计,财务审计等等

1.2 用户user

令牌: token,identityLinux用户: Username/UID管理员 root,0 (需要注意的是,并不是叫root的用户名才是管理员,而是因为它的UID为0)普通用户: 1-60000编号是自动分配的,但是如果我们认为指定用户编号的话是可以超过默认的分配阈值(60000),Linux用户分为系统用户和登录用户。 系统用户:1-499(CentOS6.X),1-999(CentOS7.X),对守护进程获取资源进行权限分配(给运行软件使用的用户,比如:"mysql","apache","hdfs"用户等等) 登录用户:500+(CentOS6.X),1000+(CentOS7.X),交互式登录(一般用来登录操作系统,比如liuxiao)

1.3 组group

Linux组: Groupname/GID管理员组: root,0普通组: 系统组:1-499(CentOS6.X),1-999(CentOS7.X) 普通组:500+(CentOS6.X),1000+(CentOS7.X)Linux组的类别: 用户的主要组(primary group) 用户必须属于一个且只有一个主组 默认创建一个用户后会自动加入一个组名同用户名,且仅包含一个用户,我们也称为该用户的私有组。 用户的附加组(supplementary group) 一个用户可以属于零个或多个辅助组[gestep@gapfts_check data]$ id rootuid=0(root) gid=0(root) 组=0(root)[gestep@gapfts_check data]$

1.4 用户和组的配置文件

Linuxt用户和组的主要配置文件: /etc/passwd: 用户及其属性信息(名称、UID、主组ID等) /etc/groupadd: 组及其属性信息 /etc/shadow: 用户密码及其属性 /etc/gshadow: 组密码及其属性

1.4.1 passwd文件格式如下:
passwd文件格式如下: login name:登录用户名 passwd:密码 UID:用户身份编号 GID:登录默认所在组编号 GECOS:用户全名或注释 home directory:用户主目录 shell:用户默认使用shell

1.4.2 shadow文件格式
shadow文件格式 登录用户名 用户密码:一般使用sha512加密 从1970年1月1日起到密码最近一次被更改的时间 密码再过几天可以被变更( 0表示随时可以被变更) 密码再过几天必须被变更( 99999表示永不过期) 密码过期前几天系统提醒用户(默认为一周) 密码过期几天后帐号会被锁定 从1970年1月1日算起,多少天后帐号失效

1.4.3 group文件格式
group文件格式 群组名称:就是群组名称 群组密码:通常不设置,密码是被记录在/etc/gshadow GID:就是群组的ID 以当前组为附加组的用户列表(分隔符为逗号)

1.4.4 gshadow文件格式
gshdow文件格式 群组名称:就是群的名称 群组密码: 组管理员列表:组管理员的列表,更改组密码和成员 以当前组为附加组的用户列表:多个用户间用逗号分隔

1.5 用户相关操作(对应/etc/passwd)

[gestep@gapfts_check ~]$ whatis passwdsslpasswd (1ssl) - compute password hashespasswd (1) - update user's authentication tokens[gestep@gapfts_check ~]$ man 1 passw[gestep@gapfts_check ~]$ sudo useradd liuxiao [gestep@gapfts_check ~]$ tail -1 /etc/passwdliuxiao:x:1002:1002::/home/liuxiao:/bin/bash[gestep@gapfts_check ~]$ sudo chfn liuxiao #修改用户全名或注释Changing finger information for liuxiao.名称 []: liu办公 []: bigdata办公电话 []: 10086住宅电话 []: 10010Finger information changed.[gestep@gapfts_check ~]$ tail -1 /etc/passwdliuxiao:x:1002:1002:liu,bigdata,10086,10010:/home/liuxiao:/bin/bash[gestep@gapfts_check ~]$

1.6 用户密码相关操作(对应/etc/shadow)

[gestep@gapfts_check ~]$ whatis shadowshadow (3) - 加密密码文件工具函数shadow (5) - 影子化了的密码文件[gestep@gapfts_check ~]$ man 5 shadow[gestep@gapfts_check ~]$ getent passwd liuxiao #发现密码不在/etc/passwd文件中 liuxiao:x:1002:1002:liu,bigdata,10086,10010:/home/liuxiao:/bin/bash[gestep@gapfts_check ~]$ sudo getent shadow liuxiao #CentOS7.X将秘方存在在了/etc/shadow文件中liuxiao:$6$FKJ7PVq2$krQGsqronXNhN7PtIwfKiKc9ECz.93Igx2cxCc29CvLaUl7O9IK6oIokmwGpKfFFU6WHPf3NM0jKEsnceZVDH0:19036:0:99999:7:::[gestep@gapfts_check ~]$ sudo pwunconv #我们这里使用该命令可以将"/etc/shadow"中存放的密码放入到"/etc/passwd"文件中[gestep@gapfts_check ~]$ sudo getent passwd liuxiao #发现密码回到了/etc/passwd中liuxiao:$6$FKJ7PVq2$krQGsqronXNhN7PtIwfKiKc9ECz.93Igx2cxCc29CvLaUl7O9IK6oIokmwGpKfFFU6WHPf3NM0jKEsnceZVDH0:1002:1002:liu,bigdata,10086,10010:/home/liuxiao:/bin/bash[gestep@gapfts_check ~]$ sudo getent shadow liuxiao #此时查看/etc/shadow文件中发现乜有了[gestep@gapfts_check ~]$[gestep@gapfts_check ~]$ [gestep@gapfts_check ~]$ sudo pwconv #将密码分开存放,即默认存放位置/etc/shadow中[gestep@gapfts_check ~]$ sudo getent shadow liuxiao #此时查看,密码回归liuxiao:$6$FKJ7PVq2$krQGsqronXNhN7PtIwfKiKc9ECz.93Igx2cxCc29CvLaUl7O9IK6oIokmwGpKfFFU6WHPf3NM0jKEsnceZVDH0:19036:0:99999:7:::[gestep@gapfts_check ~]$ sudo usermod -L liuxiao #锁定用户[gestep@gapfts_check ~]$ sudo getent shadow liuxiao #锁定用户后,发现密码位上出现"!",它的出现就表示用户已被锁定liuxiao:!$6$FKJ7PVq2$krQGsqronXNhN7PtIwfKiKc9ECz.93Igx2cxCc29CvLaUl7O9IK6oIokmwGpKfFFU6WHPf3NM0jKEsnceZVDH0:19036:0:99999:7:::[gestep@gapfts_check ~]$ sudo passwd liuxiao #我们进行修改密码更改用户 liuxiao 的密码 。新的 密码:无效的密码: 密码少于 8 个字符重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。[gestep@gapfts_check ~]$ sudo getent shadow liuxiao #密码修改后,发现用户已经被解锁liuxiao:$6$t25G2/QU$vWqw4X88y7T/zMzvBHPYBQsXTD04BxKv7bOqq9UL2oTT.iMlXGjsy/v983HOO1L9jQHijnmo4i/0GmEMPmxZS/:19036:0:99999:7:::[gestep@gapfts_check ~]$ sudo usermod -L liuxiao #锁定用户[gestep@gapfts_check ~]$ sudo getent shadow liuxiaoliuxiao:!$6$t25G2/QU$vWqw4X88y7T/zMzvBHPYBQsXTD04BxKv7bOqq9UL2oTT.iMlXGjsy/v983HOO1L9jQHijnmo4i/0GmEMPmxZS/:19036:0:99999:7:::[gestep@gapfts_check ~]$ sudo usermod -U liuxiao #解锁用户[gestep@gapfts_check ~]$ sudo getent shadow liuxiao liuxiao:$6$t25G2/QU$vWqw4X88y7T/zMzvBHPYBQsXTD04BxKv7bOqq9UL2oTT.iMlXGjsy/v983HOO1L9jQHijnmo4i/0GmEMPmxZS/:19036:0:99999:7:::[gestep@gapfts_check ~]$ sudo getent shadow liuxiaoliuxiao:$6$t25G2/QU$vWqw4X88y7T/zMzvBHPYBQsXTD04BxKv7bOqq9UL2oTT.iMlXGjsy/v983HOO1L9jQHijnmo4i/0GmEMPmxZS/:19036:0:99999:7:::[gestep@gapfts_check ~]$ sudo chage -M 3 liuxiao #修改用户密码过期时间为3天[gestep@gapfts_check ~]$ sudo getent shadow liuxiaoliuxiao:$6$t25G2/QU$vWqw4X88y7T/zMzvBHPYBQsXTD04BxKv7bOqq9UL2oTT.iMlXGjsy/v983HOO1L9jQHijnmo4i/0GmEMPmxZS/:19036:0:3:7:::[gestep@gapfts_check ~]$ sudo getent shadow liuxiaoliuxiao:$6$t25G2/QU$vWqw4X88y7T/zMzvBHPYBQsXTD04BxKv7bOqq9UL2oTT.iMlXGjsy/v983HOO1L9jQHijnmo4i/0GmEMPmxZS/:19036:0:3:7:::[gestep@gapfts_check ~]$ [gestep@gapfts_check ~]$ sudo chage -I 5 liuxiao #指定密码过期后几天用户被锁定,我这里设置的是5天,如果在指定的3天内没有修改密码在5天后用户会被锁定,锁定用户就无法登录操作系统。[gestep@gapfts_check ~]$ sudo getent shadow liuxiaoliuxiao:$6$t25G2/QU$vWqw4X88y7T/zMzvBHPYBQsXTD04BxKv7bOqq9UL2oTT.iMlXGjsy/v983HOO1L9jQHijnmo4i/0GmEMPmxZS/:19036:0:3:7:5::[gestep@gapfts_check ~]$ sudo chage -E 365 liuxiao #设置用户的有效天数,这里设置的是365天,但需要注意的是,它的起始时间是从1970年开始的[gestep@gapfts_check ~]$ sudo getent shadow liuxiaoliuxiao:$6$t25G2/QU$vWqw4X88y7T/zMzvBHPYBQsXTD04BxKv7bOqq9UL2oTT.iMlXGjsy/v983HOO1L9jQHijnmo4i/0GmEMPmxZS/:19036:0:3:7:5:365:[gestep@gapfts_check ~]$ passwd --help用法: passwd [选项...] <帐号名称> -k, --keep-tokens 保持身份验证令牌不过期 -d, --delete 删除已命名帐号的密码(只有根用户才能进行此操作) -l, --lock 锁定指名帐户的密码(仅限 root 用户) -u, --unlock 解锁指名账户的密码(仅限 root 用户) -e, --expire 终止指名帐户的密码(仅限 root 用户) -f, --force 强制执行操作 -x, --maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作) -n, --minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作) -w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作) -i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作) -S, --status 报告已命名帐号的密码状态(只有根用户才能进行此操作) --stdin 从标准输入读取令牌(只有根用户才能进行此操作)Help options: -?, --help Show this help message --usage Display brief usage message[root@gapfts_check ~]# echo liuxiao | passwd --stdin liuxiao #此命令只有root用户才能使用更改用户 liuxiao 的密码 。passwd:所有的身份验证令牌已经成功更新。[root@gapfts_check ~]# echo 123.com | passwd --stdin liuxiao &> /dev/null #生产环境修改密码方式 [root@gapfts_check ~]#[root@gapfts_check ~]# sudo getent shadow liuxiaoliuxiao:$6$RkQ6NCuW$Srz.wRoL/OXn6MCM6mBf4QJim7d4ZRbnAmpwIuIBm4xyykrIhwPSYbOuch6Ju8AJ/eSDhcUlPE5no6TnxEB3.0:19036:0:3:7:5:365:[root@gapfts_check ~]# [root@gapfts_check ~]# passwd -l liuxiao #将用户锁定锁定用户 liuxiao 的密码 。passwd: 操作成功[root@gapfts_check ~]# getent shadow liuxiaoliuxiao:!!$6$RkQ6NCuW$Srz.wRoL/OXn6MCM6mBf4QJim7d4ZRbnAmpwIuIBm4xyykrIhwPSYbOuch6Ju8AJ/eSDhcUlPE5no6TnxEB3.0:19036:0:3:7:5:365:[root@gapfts_check ~]# passwd -u liuxiao解锁用户 liuxiao 的密码。passwd: 操作成功[root@gapfts_check ~]#[root@gapfts_check ~]# passwd -e liuxiao #将用户密码设置为不过期,下次登录必须更改密码才可以正在终止用户 liuxiao 的密码。passwd: 操作成功[root@gapfts_check ~]# getent shadow liuxiaoliuxiao:$6$RkQ6NCuW$Srz.wRoL/OXn6MCM6mBf4QJim7d4ZRbnAmpwIuIBm4xyykrIhwPSYbOuch6Ju8AJ/eSDhcUlPE5no6TnxEB3.0:0:0:3:7:5:365:

1.7 用户组相关操作(对应/etc/group)

[gestep@gapfts_check ~]$ whereis groupgroup: /etc/group

1.8 用户组密码相关操作(/etc/gshadow)

[gestep@gapfts_check ~]$ whereis gshadowgshadow: /etc/gshadow /usr/share/man/man5/gshadow.5.gz[gestep@gapfts_check ~]$ man gshadow

1.9 密码策略

密码加密  加密机制:    加密:明文--> 密文    解密:密文--> 明文  单向加密:哈希算法,原文不同,密文必不同    相同算法定长输出,获得密文不可逆推出原始数据    雪崩效应:初始条件的微小改变,引起结果的巨大改变    md5: message digest, 128bits    sha1: secure hash algorithm, 160bits    sha224: 224bits    sha256: 256bits    sha384: 384bits    sha512: 512bits  更改加密算法:    authconfig --passalgo=sha256 --update密码的复杂性策略  足够长  使用数字、大写字母、小写字母及特殊字符中至少3种  使用随机密码  定期更换,不要使用最近曾经使用过的密码密码期限示意图如下所示。

Linux 用户组和权限管理_Linux

1.10 用户(组)及密码(组)文件操作

一般情况下不推荐大家直接去修改文件,容易出现格式错误的情况。如果你非要用修改文件的格式的方法去修改用户及密码的配置文件,推荐使用以下工具,它们会带有语法检查的功能。    vipw:      相当于"vi /etc/passwd",只不过该命令有语法检查的功能。      如果使用"vipw -s"相当于"vi /etc/shadow",也有语法检查功能。      vigr:      相当于"vi /etc/group",也有语法检查功能。      如果使用"vigr -s"相当于"vi /etc/gshadow",也有语法检查功能。      pwck:      检查"/etc/passwd"配置文件,比如验证用户是否有家目录等,执行后会有相应的提示信息。    grpck:      使用"/etc/group"配置文件,详情请参考“grpck --help”

2. 用户和组管理命令

用户管理命令 useradd usermod userdel组账号维护命令 groupadd groupdel groupmod

2.1 用户创建:useradd

[gestep@gapfts_check ~]$ useradd -h用法:useradd [选项] 登录 useradd -D useradd -D [选项]选项: -b, --base-dir BASE_DIR 新账户的主目录的基目录 -c, --comment COMMENT 新账户的 GECOS 字段 -d, --home-dir HOME_DIR 新账户的主目录 -D, --defaults 显示或更改默认的 useradd 配置 -e, --expiredate EXPIRE_DATE 新账户的过期日期 -f, --inactive INACTIVE 新账户的密码不活动期 -g, --gid GROUP 新账户主组的名称或 ID -G, --groups GROUPS 新账户的附加组列表 -h, --help 显示此帮助信息并推出 -k, --skel SKEL_DIR 使用此目录作为骨架目录 -K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值 -l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库 -m, --create-home 创建用户的主目录 -M, --no-create-home 不创建用户的主目录 -N, --no-user-group 不创建同名的组 -o, --non-unique 允许使用重复的 UID 创建用户 -p, --password PASSWORD 加密后的新账户密码 -r, --system 创建一个系统账户 -R, --root CHROOT_DIR chroot 到的目录 -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -s, --shell SHELL 新账户的登录 shell -u, --uid UID 新账户的用户 ID -U, --user-group 创建与用户同名的组 -Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER[gestep@gapfts_check ~]$ useradd -D #显示默认设置GROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=yes[gestep@gapfts_check ~]$[gestep@gapfts_check ~]$ cat /etc/default/useradd #以上用户的默认设置都来自这个文件# useradd defaults fileGROUP=100 #组编号默认为100,即为user组HOME=/home #家目录位置INACTIVE=-1 #密码过期策略过期后的宽限期,默认是永远宽限,即"-1"EXPIRE= #指定用户的过期时间,即账户有限使用时间SHELL=/bin/bash #指定默认的shell类型SKEL=/etc/skel #指定家目录的默认数据CREATE_MAIL_SPOOL=yes[gestep@gapfts_check ~]$#用户默认配置信息[gestep@gapfts_check ~]$ cat /etc/login.defs ## Please note that the parameters in this configuration file control the# behavior of the tools from the shadow-utils component. None of these# tools uses the PAM mechanism, and the utilities that use PAM (such as the# passwd command) should therefore be configured elsewhere. Refer to# /etc/pam.d/system-auth for more information.## *REQUIRED*# Directory where mailboxes reside, _or_ name of file, relative to the# home directory. If you _do_ define both, MAIL_DIR takes precedence.# QMAIL_DIR is for Qmail##QMAIL_DIR MaildirMAIL_DIR /var/spool/mail#MAIL_FILE .mail# Password aging controls:## PASS_MAX_DAYS Maximum number of days a password may be used.# PASS_MIN_DAYS Minimum number of days allowed between password changes.# PASS_MIN_LEN Minimum acceptable password length.# PASS_WARN_AGE Number of days warning given before a password expires.#PASS_MAX_DAYS 99999PASS_MIN_DAYS 0PASS_MIN_LEN 5PASS_WARN_AGE 7## Min/max values for automatic uid selection in useradd#UID_MIN 1000UID_MAX 60000# System accountsSYS_UID_MIN 201SYS_UID_MAX 999## Min/max values for automatic gid selection in groupadd#GID_MIN 1000GID_MAX 60000# System accountsSYS_GID_MIN 201SYS_GID_MAX 999## If defined, this command is run when removing a user.# It should remove any at/cron/print jobs etc. owned by# the user to be removed (passed as the first argument).##USERDEL_CMD /usr/sbin/userdel_local## If useradd should create home directories for users by default# On RH systems, we do. This option is overridden with the -m flag on# useradd command line.#CREATE_HOME yes# The permission mask is initialized to this value. If not specified, # the permission mask will be initialized to 022.UMASK 077# This enables userdel to remove user groups if no members exist.#USERGROUPS_ENAB yes# Use SHA512 to encrypt password.ENCRYPT_METHOD SHA512[gestep@gapfts_check ~]$[gestep@gapfts_check ~]$ getent group usersusers:x:100:[gestep@gapfts_check ~]$[gestep@gapfts_check ~]$ sudo useradd -N tom #不创建私有组作为主组,使用默认的users作为主组[gestep@gapfts_check ~]$ id tomuid=1002(tom) gid=100(users) 组=100(users)[gestep@gapfts_check ~]$ ls -a /etc/skel/. .. .bash_logout .bash_profile .bashrc[gestep@gapfts_check ~]$ sudo ls -a /home/tom/ #不难发现,创建的用户家目录存在的数据和我们在"/etc/default/useradd"配置文件中的"SKEL"属性一致。. .. .bash_logout .bash_profile .bashrc[gestep@gapfts_check ~]$[gestep@gapfts_check ~]$ sudo useradd -r mysql -s /sbin/nologin #使用-r选项不创建家目录,因为他创建的是一个系统用户。使用-s指定shell类型[gestep@gapfts_check ~]$ id mysqluid=998(mysql) gid=964(mysql) 组=964(mysql) #很明显,在CentOS7.X版本系统的UID是小于1000的,这个在"/etc/login.defs"文件中有相应的记录。[gestep@gapfts_check ~]$ getent passwd mysqlmysql:x:998:964::/home/mysql:/sbin/nologin[gestep@gapfts_check ~]$ sudo useradd -u 10086 jason #创建jason用户并指定其UID为10086[gestep@gapfts_check ~]$ id jasonuid=10086(jason) gid=10086(jason) 组=10086(jason)[gestep@gapfts_check ~]$ getent passwd jasonjason:x:10086:10086::/home/jason:/bin/ba[root@gapfts_check ~]# id liuxiao #默认情况下,每个用户都有唯一的一个UID,如果想要创建2个不同的用户名但UID一样的情况,并让这两个用户都拥有同一个UID的权限就得需要使用相应的useradd选项。uid=1002(liuxiao) gid=1002(liuxiao) 组=1002(liuxiao)[root@gapfts_check ~]# useradd -u 1002 -o jenny #使用-o选项,就可以创建2个不同的用户名,但是UID却是一样的,如果你想要两个不同的用户名使用相同的UID就可以这样做[root@gapfts_check ~]# getent passwd jenny #由于Linux识别用户是基于UID来识别的,我们发现如果设置2个同UID的不同用户名可能会产生信息混乱的情况。因此还是谨慎使用~jenny:x:1002:1003::/home/jenny:/bin/bash[root@gapfts_check ~]# id jennyuid=1002(liuxiao) gid=1002(liuxiao) 组=1002(liuxiao)[root@gapfts_check ~]# ll /home/ #两个用户的家目录还是不一样的总用量 2076-rw-r--r--. 1 root root 2839 1月 28 2021 autolvm.shdrwx------. 5 gestep gestep 196 2月 13 16:04 gestepdrwx------ 2 liuxiao jenny 62 2月 13 19:46 jennydrwx------ 2 liuxiao liuxiao 62 2月 13 19:46 liuxiao-r-xr-xr-x. 1 root root 2119972 1月 29 2021 NIC-X710_X722_XL710_XXV710-CentOS7.8-i40e-2.12.6-1-x86_64.rpm[root@gapfts_check ~]# getent group liuxiaoliuxiao:x:1002:[root@gapfts_check ~]# id liuxiaouid=1002(liuxiao) gid=1002(liuxiao) 组=1002(liuxiao)[root@gapfts_check ~]# useradd -g liuxiao danny #使用-g指定danny的组为liuxiao,就不会创建默认同名的组[root@gapfts_check ~]# id dannyuid=1003(danny) gid=1002(liuxiao) 组=1002(liuxiao)[root@gapfts_check ~]#[root@gapfts_check data]# useradd -d /data/bigdata hdfs #创建用户并指定其家目录为"/data/bigdata"[root@gapfts_check data]# ll /data/总用量 8drwx------ 2 hdfs hdfs 62 2月 13 19:55 bigdatadrwxr-xr-x. 11 gestep gestep 168 2月 13 16:12 datadrwxr-xr-x. 12 gestep gestep 4096 2月 3 2021 rd-offlinedrwxr-xr-x. 2 gestep gestep 6 2月 1 2021 toolsdrwxr-xr-x. 2 gestep gestep 4096 10月 27 11:08 uploads[root@gapfts_check data]# ll /data/bigdata/ -a #很显然,家目录的默认数据和"/etc/skel"目录是一致的总用量 12drwx------ 2 hdfs hdfs 62 2月 13 19:55 .drwxrwxrwx 7 gestep gestep 103 2月 13 19:55 ..-rw-r--r-- 1 hdfs hdfs 18 4月 1 2020 .bash_logout-rw-r--r-- 1 hdfs hdfs 193 4月 1 2020 .bash_profile-rw-r--r-- 1 hdfs hdfs 231 4月 1 2020 .bashrc[root@gapfts_check data]# ll /etc/skel/ -a总用量 24drwxr-xr-x. 2 root root 62 1月 6 2016 .drwxr-xr-x. 78 root root 8192 2月 13 19:55 ..-rw-r--r--. 1 root root 18 4月 1 2020 .bash_logout-rw-r--r--. 1 root root 193 4月 1 2020 .bash_profile-rw-r--r--. 1 root root 231 4月 1 2020 .bashrc[root@gapfts_check ~]# useradd -r -m -d /data/apache apache #-r选项是创建系统用户,是不会创建家目录;但是可以使用-m选项来为系统用户创建家目录[root@gapfts_check ~]# ll /data/apache/ -a总用量 12drwx------ 2 apache apache 78 2月 13 19:58 .drwxrwxrwx 7 gestep gestep 102 2月 13 19:58 ..-rw-r--r-- 1 apache apache 18 4月 1 2020 .bash_logout-rw-r--r-- 1 apache apache 193 4月 1 2020 .bash_profile-rw-r--r-- 1 apache apache 231 4月 1 2020 .bashrc[root@gapfts_check ~]# id apacheuid=997(apache) gid=963(apache) 组=963(apache)[root@gapfts_check ~]#[root@gapfts_check ~]# useradd -M baby #使用-M不创建家目录[root@gapfts_check ~]# ll /home/总用量 2076-rw-r--r--. 1 root root 2839 1月 28 2021 autolvm.shdrwx------. 5 gestep gestep 196 2月 13 16:04 gestep-r-xr-xr-x. 1 root root 2119972 1月 29 2021 NIC-X710_X722_XL710_XXV710-CentOS7.8-i40e-2.12.6-1-x86_64.rpm[root@gapfts_check ~]# id babyuid=1002(baby) gid=1002(baby) 组=1002(baby)[root@gapfts_check ~]# getent passwd babybaby:x:1002:1002::/home/baby:/bin/bash

2.2 用户属性修改:usermod

[root@gapfts_check ~]# usermod -h用法:usermod [选项] 登录选项: -c, --comment 注释 GECOS 字段的新值 -d, --home HOME_DIR 用户的新主目录 -e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE -f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态 -g, --gid GROUP 强制使用 GROUP 为新主组 -G, --groups GROUPS 新的附加组列表 GROUPS -a, --append GROUP 将用户追加至上边 -G 中提到的附加组中, 并不从其它组中删除此用户 -h, --help 显示此帮助信息并推出 -l, --login LOGIN 新的登录名称 -L, --lock 锁定用户帐号 -m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用) -o, --non-unique 允许使用重复的(非唯一的) UID -p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码 -R, --root CHROOT_DIR chroot 到的目录 -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -s, --shell SHELL 该用户帐号的新登录 shell -u, --uid UID 用户帐号的新 UID -U, --unlock 解锁用户帐号 -v, --add-subuids FIRST-LAST add range of subordinate uids -V, --del-subuids FIRST-LAST remove range of subordinate uids -w, --add-subgids FIRST-LAST add range of subordinate gids -W, --del-subgids FIRST-LAST remove range of subordinate gids -Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射[root@gapfts_check ~]# getent passwd jennyjenny:x:1002:1002::/home/jenny:/bin/bash[root@gapfts_check ~]# id jennyuid=1002(jenny) gid=1002(jenny) 组=1002(jenny)[root@gapfts_check ~]# usermod -u 10086 jenny ##修改jenny用户的UID,注意修改用户的UID时该用户不能登录,否则可能会报错[root@gapfts_check ~]# id jennyuid=10086(jenny) gid=1002(jenny) 组=1002(jenny)[root@gapfts_check ~]# getent passwd jennyjenny:x:10086:1002::/home/jenny:/bin/bash

2.3 删除用户:userdel

[root@gapfts_check ~]# userdel -h用法:userdel [选项] 登录选项: -f, --force force some actions that would fail otherwise e.g. removal of user still logged in or files, even if not owned by the user -h, --help 显示此帮助信息并推出 -r, --remove 删除主目录和邮件池 -R, --root CHROOT_DIR chroot 到的目录 -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -Z, --selinux-user 为用户删除所有的 SELinux 用户映射[gestep@gapfts_check ~]$ sudo userdel -r jenny #删除jenny用户及其家目录(生产环境慎用,有可能该员工已经离职但其数据可能对其它同时有用)

2.4 查看用户相关的ID信息

[gestep@gapfts_check ~]$ id postfix #查看"postfix"用户相关的ID信息,如果用户不存在会提示"no such user"相关错误信息。uid=89(postfix) gid=89(postfix) 组=89(postfix),12(mail) [gestep@gapfts_check ~]$ [gestep@gapfts_check ~]$ id -u postfix #显示“postfix”用户的UID89[gestep@gapfts_check ~]$ id -g postfix #显示"postfix"用户的GID89[gestep@gapfts_check ~]$ id -G postfix #显示"postfix"用户所属的组的ID(包括附加组)89 12[gestep@gapfts_check ~]$ id -nG postfix #显示组的名称,"-n"参数需要和"ugG"参数配合使用postfix mail[gestep@gapfts_check ~]$

2.5 切换用户或以其它用户身份执行命令(su命令的前提是要知道对方的用户密码,除非你直接使用root用户)

# 不完全切换,即切换后的用户依旧保留上一个用户的环境变量和工作目录[root@gapfts_check ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin[root@gapfts_check ~]# [root@gapfts_check ~]# cd /data/[root@gapfts_check data]# pwd/data[root@gapfts_check data]# ls /home/autolvm.sh gestep NIC-X710_X722_XL710_XXV710-CentOS7.8-i40e-2.12.6-1-x86_64.rpm[root@gapfts_check data]# su gestep[gestep@gapfts_check data]$ pwd/data[gestep@gapfts_check data]$ echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin[gestep@gapfts_check data]$#完全切换,即切换到该用户的家目录且环境变量也会跟着变化,相当于使用ssh服务连接的效果[root@gapfts_check ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin[root@gapfts_check ~]# cd /data/[root@gapfts_check data]# su - gestep #su - 和su -l 效果等同上一次登录:日 2月 13 20:25:24 CST 2022pts/0 上[gestep@gapfts_check ~]$ echo $PATH/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gestep/.local/bin:/home/gestep/bin[gestep@gapfts_check ~]$ pwd/home/gestep[gestep@gapfts_check ~]$

2.6 创建组:groupadd

[gestep@gapfts_check ~]$ groupadd -h用法:groupadd [选项] 组选项: -f, --force 如果组已经存在则成功退出 并且如果 GID 已经存在则取消 -g -g, --gid GID 为新组使用 GID -h, --help 显示此帮助信息并推出 -K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值 -o, --non-unique 允许创建有重复 GID 的组 -p, --password PASSWORD 为新组使用此加密过的密码 -r, --system 创建一个系统账户 -R, --root CHROOT_DIR chroot 到的目录 -P, --prefix PREFIX_DIR directory prefix[gestep@gapfts_check ~]$[gestep@gapfts_check ~]$ sudo groupadd yarn #创建一个yarn组[gestep@gapfts_check ~]$ getent group yarnyarn:x:1002:[gestep@gapfts_check ~]$

2.7 组属性修改:groupmod

[gestep@gapfts_check ~]$ groupmod -h用法:groupmod [选项] 组选项: -g, --gid GID 将组 ID 改为 GID -h, --help 显示此帮助信息并推出 -n, --new-name NEW_GROUP 改名为 NEW_GROUP -o, --non-unique 允许使用重复的 GID -p, --password PASSWORD 将密码更改为(加密过的) PASSWORD -R, --root CHROOT_DIR chroot 到的目录 -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files[gestep@gapfts_check ~]$

2.8 组属性删除:groupdel

[gestep@gapfts_check ~]$ groupdel -h用法:groupdel [选项] 组选项: -h, --help 显示此帮助信息并推出 -R, --root CHROOT_DIR chroot 到的目录 -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -f, --force delete group even if it is the primary group of a user[gestep@gapfts_check ~]$[gestep@gapfts_check ~]$ sudo getent group yarnyarn:x:1002:[gestep@gapfts_check ~]$ sudo useradd liuxiao[gestep@gapfts_check ~]$ id liuxiaouid=1002(liuxiao) gid=1003(liuxiao) 组=1003(liuxiao)[gestep@gapfts_check ~]$ sudo usermod -aG yarn liuxiao #将liuxiao用户添加一个附加组yarn[gestep@gapfts_check ~]$ id liuxiaouid=1002(liuxiao) gid=1003(liuxiao) 组=1003(liuxiao),1002(yarn)[gestep@gapfts_check ~]$ sudo groupdel yarn #删除yarn组[gestep@gapfts_check ~]$ id liuxiaouid=1002(liuxiao) gid=1003(liuxiao) 组=1003(liuxiao)

2.9 更改组密码:gpasswd

[gestep@gapfts_check ~]$ gpasswd -h用法:gpasswd [选项] 组选项: -a, --add USER 向组 GROUP 中添加用户 USER -d, --delete USER 从组 GROUP 中添加或删除用户 -h, --help 显示此帮助信息并推出 -Q, --root CHROOT_DIR 要 chroot 进的目录 -r, --delete-password remove the GROUP's password -R, --restrict 向其成员限制访问组 GROUP -M, --members USER,... 设置组 GROUP 的成员列表 -A, --administrators ADMIN,... 设置组的管理员列表除非使用 -A 或 -M 选项,不能结合使用这些选项。[gestep@gapfts_check ~]$

2.10 更改和查看组成员

[gestep@gapfts_check ~]$ groupmems -h用法:groupmems [选项] [动作]选项: -g, --group groupname 更改组 groupname,而不是用户的组(只 root) -R, --root CHROOT_DIR chroot 到的目录动作: -a, --add username 将用户 username 添加到组成员中 -d, --delete username 从组的成员中删除用户 username -h, --help 显示此帮助信息并推出 -p, --purge 从组中移除所有成员 -l, --list 列出组中的所有成员[gestep@gapfts_check ~]$

3. 文件权限

3.1 文件属性

Linux 用户组和权限管理_Linux_02

3.2 修改文件的属主和数组

文件属性操作

  • chown:设置文件的所有者
  • chgrp:设置文件的属组信息
chown用法:[gestep@gapfts_check ~]$ chown --help chown [选项]... [所有者][:[组]] 文件... chown [选项]... --reference=参考文件 文件...选项: -R:递归,此选项慎用,非常危险 OWENER:只修改所有者 OWNER:GROUP:同时修改所有者和属组 :GROUP:只修改属组,冒号也可用 "." 替换[gestep@gapfts_check ~]$ chgrp --help用法:chgrp [选项]... 用户组 文件... 或:chgrp [选项]... --reference=参考文件 文件...Change the group of each FILE to GROUP.With --reference, change the group of each FILE to that of RFILE.[gestep@gapfts_check data]$ touch file.txt[gestep@gapfts_check data]$ ll file.txt -rw-rw-r-- 1 gestep gestep 0 2月 14 09:49 file.txt[gestep@gapfts_check data]$ sudo chown liuxiao file.txt #修改属主为liuxiao[gestep@gapfts_check data]$ ll file.txt -rw-rw-r-- 1 liuxiao gestep 0 2月 14 09:49 file.txt[gestep@gapfts_check data]$[gestep@gapfts_check data]$ ll file.txt -rw-rw-r-- 1 liuxiao gestep 0 2月 14 09:49 file.txt[gestep@gapfts_check data]$ [gestep@gapfts_check data]$ sudo chgrp tom file.txt #修改属组为tom[gestep@gapfts_check data]$ ll file.txt -rw-rw-r-- 1 liuxiao tom 0 2月 14 09:49 file.txt[gestep@gapfts_check data]$[gestep@gapfts_check data]$ ll file.txt -rw-rw-r-- 1 liuxiao tom 0 2月 14 09:49 file.txt[gestep@gapfts_check data]$ sudo chown root:liuxiao file.txt #使用chown命令也是可以修改属主属组的,使用":"来分割[gestep@gapfts_check data]$ ll file.txt -rw-rw-r-- 1 root liuxiao 0 2月 14 09:49 file.txt

3.3 文件权限操作:chmod

文件权限主要针对三类对象进行定义

  • owner 属主,u
  • group 属组,g
  • other 其它,o

每个文件针对每类访问者都定义了三种权限

  • r Readable
  • w Writeable
  • x eXcutable

文件:

  • r 可使用文件查看类工具获取其内容
  • w 可修改其内容
  • x 可以把此文件提请内核启动为一个进程

目录:

  • r 可以使用ls查看此目录中文件列表
  • w 可在此目录中创建文件,也可删除此目录中的文件
  • x 可以啥用ls -l 查看此目录中文件元数据(必须配合r),可以cd进入此目录
  • X 只给目录x权限,不给文件x权限

Linux 用户组和权限管理_Linux_03

[gestep@gapfts_check data]$ chmod --help用法:chmod [选项]... 模式[,模式]... 文件... 或:chmod [选项]... 八进制模式 文件... 或:chmod [选项]... --reference=参考文件 文件...Change the mode of each FILE to MODE.With --reference, change the mode of each FILE to that of RFILE. -c, --changes like verbose but report only when a change is made -f, --silent, --quiet suppress most error messages -v, --verbose output a diagnostic for every file processed --no-preserve-root do not treat '/' specially (the default) --preserve-root fail to operate recursively on '/' --reference=RFILE use RFILE's mode instead of MODE values -R, --recursive change files and directories recursively --help 显示此帮助信息并退出 --version 显示版本信息并退出[gestep@gapfts_check data]$ sudo cp -a /etc/shadow ./[gestep@gapfts_check data]$ ll shadow -r-------- 1 root root 865 2月 14 09:51 shadow[gestep@gapfts_check data]$ sudo chmod u+rw,g+r shadow #给属主增加rw权限,给属组加r权限[gestep@gapfts_check data]$ ll shadow -rw-r----- 1 root root 865 2月 14 09:51 shadow[gestep@gapfts_check data]$ sudo chmod o=w shadow #给其它增加w权限[gestep@gapfts_check data]$ ll shadow-rw-r---w- 1 root root 865 2月 14 09:51 shadow[gestep@gapfts_check data]$ ll /bin/ls-rwxr-xr-x. 1 root root 117608 8月 20 2019 /bin/ls[gestep@gapfts_check data]$ sudo chmod a-x /bin/ls #取消ls命令的执行权限[gestep@gapfts_check data]$ ll /bin/ls #发现ls命令无法使用-bash: /usr/bin/ls: 权限不够[gestep@gapfts_check data]$ sudo chmod a+x /bin/ls[gestep@gapfts_check data]$ ll /bin/ls-rwxr-xr-x. 1 root root 117608 8月 20 2019 /bin/ls

3.4 新建文件和目录的默认权限

[gestep@gapfts_check data]$ help umaskumask: umask [-p] [-S] [模式] 显示或设定文件模式掩码。 设定用户文件创建掩码为 MODE 模式。如果省略了 MODE,则 打印当前掩码的值。 如果MODE 模式以数字开头,则被当作八进制数解析;否则是一个 chmod(1) 可接收的符号模式串。 选项: -p 如果省略 MDOE 模式,以可重用为输入的格式输入 -S 以符号形式输出,否则以八进制数格式输出[gestep@gapfts_check data]$ whogestep pts/0 2022-02-14 09:14 (192.168.2.254)[gestep@gapfts_check data]$ umask #普通用户的umask默认值为00020002[root@gapfts_check ~]# iduid=0(root) gid=0(root) 组=0(root)[root@gapfts_check ~]# umask #root用户的umask默认值为00220022[gestep@gapfts_check data]$ umask0002[gestep@gapfts_check data]$ umask -S #以符号形式输出u=rwx,g=rwx,o=rx[gestep@gapfts_check data]$[gestep@gapfts_check data]$ umask -p #输出可被调用umask 0002[gestep@gapfts_check data]$ umask0002[gestep@gapfts_check data]$ umask 754 #命令行中修改umask,只会临时生效,永久生效需要将修改指令写入"~/.bashrc"文件[gestep@gapfts_check data]$ umask0754[gestep@gapfts_check data]$umask值可以用来保留在创建文件权限。 新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1 新建目录的默认权限: 777-umask非特权用户umask是002 ,root的umask 是022 举个例子:  比如 umask的值是754,我们通过上面的公式得出    新建的文件默认权限 : 666 - 754 => -112(得出的结果有奇数,需要进行加1操作) =>022    新建的目录默认权限 : 777 - 754 => 023    计算机是如何使用umask值的呢?    666转换二进制为:"110 110 110"    754转换二进制为:"111 101 100"(对应的位置为1则表示遮掩,需要和666二进制所对应位进行运算,若位1则取反,若为0则不变)              000 010 010(使用八进制表示即022,和上面计算结果一直)        777转换二进制为:"111 111 111"    754转换二进制为:"111 101 100"(对应的位置为1则表示遮掩,需要和666二进制所对应位进行运算,若位1则取反,若为0则不变)             000 010 011(使用八进制表示即023,和上面计算结果一直)

4. Linux系统上的特殊权限

4.1 SUID权限(让有权限运行该程序文件的用户临时拥有该程序属主的权限,系统默认的"passwd"就有suid权限,默认数字权限为4)

[gestep@gapfts_check data]$ cat /etc/shadow | tail -3 #普通用户是无法查看"/etc/shadow"文件内容cat: /etc/shadow: 权限不够[gestep@gapfts_check data]$ sudo ls -l /usr/bin/cat #查看cat命令,属主root用户,而且cat命令的属主是由x权限的-rwxr-xr-x. 1 root root 54080 8月 20 2019 /usr/bin/cat[gestep@gapfts_check data]$ sudo chmod u+s /usr/bin/cat #给cat命令添加s权限[gestep@gapfts_check data]$ ls /usr/bin/cat/usr/bin/cat[gestep@gapfts_check data]$ sudo ls -l /usr/bin/cat #发现属主的x权限被s权限覆盖了-rwsr-xr-x. 1 root root 54080 8月 20 2019 /usr/bin/cat[gestep@gapfts_check data]$ cat /etc/shadow | tail -2 #再次查看发现,可以访问/etc/shadow文件了liuxiao:!!:19036:0:99999:7:::tom:!!:19037:0:99999:7:::[gestep@gapfts_check data]$[gestep@gapfts_check data]$ ll /usr/bin/cat-rwsr-xr-x. 1 root root 54080 8月 20 2019 /usr/bin/cat[gestep@gapfts_check data]$ sudo chmod u-s /usr/bin/cat #生产环境不要随意给命令加suid权限,这里仅为实验操作!如果对vim填了suid权限,那么Linux所有的普通用户都可以修改Linux中任意文件,谨慎使用![gestep@gapfts_check data]$ ll /usr/bin/cat-rwxr-xr-x. 1 root root 54080 8月 20 2019 /usr/bin/cat[gestep@gapfts_check data]$

4.2 SGID权限(同理,让有权限运行该程序文件的用户临时拥有该程序属组的权限,默认数字权限为2)

[root@gapfts_check data]# groupadd devops #这里创建了一个devops的用户组[root@gapfts_check data]# useradd -g devops jason #将jason用户加入devops组[root@gapfts_check data]# id jason #查看jason组uid=1004(jason) gid=1005(devops) 组=1005(devops)[root@gapfts_check data]# mkdir ops[root@gapfts_check data]# chgrp devops ops [root@gapfts_check data]# ll -d ops/ #注意查看这里的ops目录的权限drwxr-xr-x 2 root devops 6 2月 14 11:07 ops/[root@gapfts_check data]#[gestep@gapfts_check data]$ sudo chmod 3770 ops/ #给ops目录添加suid权限和sticky权限,注意查看文件的权限变化[gestep@gapfts_check data]$ ll -d ops/drwxrws--T 2 root devops 6 2月 14 11:07 ops/[root@gapfts_check data]# touch ops/root.txt #这里使用root用户创建一个文件[root@gapfts_check data]# su - jason上一次登录:一 2月 14 11:15:53 CST 2022pts/0 上[jason@gapfts_check ~]$ touch /data/ops/jason.txt #使用再devops组的jason用户创建一个文件[root@gapfts_check data]# su - liuxiao #我们切换到liuxiao用户[liuxiao@gapfts_check ~]$ id liuxiaouid=1002(liuxiao) gid=1003(liuxiao) 组=1003(liuxiao)[liuxiao@gapfts_check ~]$ touch /data/ops/liuxiao.txt #这里是无法创建文件的,因为该用户不是devops组的普通用户,即other组用户无w权限,操作被拒绝touch: 无法创建"/data/ops/liuxiao.txt": 权限不够[liuxiao@gapfts_check ~]$[liuxiao@gapfts_check ~]$ exit登出[root@gapfts_check data]# ll ops/ #不难发现,不管是root用户还是jason用户创建的文件都归devops组所有,这就是SGID的魅力所在。总用量 0-rw-r--r-- 1 jason devops 0 2月 14 11:20 jason.txt-rw-r--r-- 1 root devops 0 2月 14 11:19 root.txt[root@gapfts_check data]#

4.3 Sticky

[root@gapfts_check data]# mkdir soft[root@gapfts_check data]# touch soft/{1..10}.txt[root@gapfts_check data]# ls soft/10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt[root@gapfts_check data]# chmod 757 soft/ #我们给other角色有w权限,这意味着other组的成员都可以对该目录的文件进行删除操作,尽管它不能访问该目录下的内容[root@gapfts_check data]# ll -d soft/drwxr-xrwx 2 root root 137 2月 14 11:28 soft/[root@gapfts_check data]# ll soft/ #发现该目录下都是root用户的文件,其他用户仅有读取权限总用量 0-rw-r--r-- 1 root root 0 2月 14 11:28 10.txt-rw-r--r-- 1 root root 0 2月 14 11:28 1.txt-rw-r--r-- 1 root root 0 2月 14 11:28 2.txt-rw-r--r-- 1 root root 0 2月 14 11:28 3.txt-rw-r--r-- 1 root root 0 2月 14 11:28 4.txt-rw-r--r-- 1 root root 0 2月 14 11:28 5.txt-rw-r--r-- 1 root root 0 2月 14 11:28 6.txt-rw-r--r-- 1 root root 0 2月 14 11:28 7.txt-rw-r--r-- 1 root root 0 2月 14 11:28 8.txt-rw-r--r-- 1 root root 0 2月 14 11:28 9.txt[root@gapfts_check data]# su - liuxiao上一次登录:一 2月 14 11:21:20 CST 2022pts/0 上[liuxiao@gapfts_check soft]$ rm -f /data/soft/1.txt #切换为普通用户,可以随意删除root用户创建的文件[liuxiao@gapfts_check soft]$ rm -f /data/soft/2.txt[root@gapfts_check data]# ll soft/总用量 0-rw-r--r-- 1 root root 0 2月 14 11:28 10.txt-rw-r--r-- 1 root root 0 2月 14 11:28 3.txt-rw-r--r-- 1 root root 0 2月 14 11:28 4.txt-rw-r--r-- 1 root root 0 2月 14 11:28 5.txt-rw-r--r-- 1 root root 0 2月 14 11:28 6.txt-rw-r--r-- 1 root root 0 2月 14 11:28 7.txt-rw-r--r-- 1 root root 0 2月 14 11:28 8.txt-rw-r--r-- 1 root root 0 2月 14 11:28 9.txt[root@gapfts_check data]# ll -d soft/drwxr-xrwx 2 root root 111 2月 14 11:33 soft/[root@gapfts_check data]# chmod o+t soft/ #等于与chmod 1757 soft[root@gapfts_check data]# ll -d soft/drwxr-xrwt 2 root root 111 2月 14 11:33 soft/[root@gapfts_check data]# [root@gapfts_check data]# su - liuxiao上一次登录:一 2月 14 11:32:53 CST 2022pts/0 上[liuxiao@gapfts_check ~]$ rm -f /data/soft/4.txt #我们发现普通用户尽管对soft目录有w权限,但依旧无法删除不属于它管理的文件rm: 无法删除"/data/soft/4.txt": 不允许的操作[liuxiao@gapfts_check ~]$ touch /data/soft/liuxiao.txt #手动创建一个文件[liuxiao@gapfts_check ~]$ ll /data/soft/总用量 0-rw-r--r-- 1 root root 0 2月 14 11:28 10.txt-rw-r--r-- 1 root root 0 2月 14 11:28 3.txt-rw-r--r-- 1 root root 0 2月 14 11:28 4.txt-rw-r--r-- 1 root root 0 2月 14 11:28 5.txt-rw-r--r-- 1 root root 0 2月 14 11:28 6.txt-rw-r--r-- 1 root root 0 2月 14 11:28 7.txt-rw-r--r-- 1 root root 0 2月 14 11:28 8.txt-rw-r--r-- 1 root root 0 2月 14 11:28 9.txt-rw-rw-r-- 1 liuxiao liuxiao 0 2月 14 11:38 liuxiao.txt[liuxiao@gapfts_check ~]$ rm -f /data/soft/liuxiao.txt #发现删自己的文件还是可以的~[liuxiao@gapfts_check ~]$ ll /data/soft/总用量 0-rw-r--r-- 1 root root 0 2月 14 11:28 10.txt-rw-r--r-- 1 root root 0 2月 14 11:28 3.txt-rw-r--r-- 1 root root 0 2月 14 11:28 4.txt-rw-r--r-- 1 root root 0 2月 14 11:28 5.txt-rw-r--r-- 1 root root 0 2月 14 11:28 6.txt-rw-r--r-- 1 root root 0 2月 14 11:28 7.txt-rw-r--r-- 1 root root 0 2月 14 11:28 8.txt-rw-r--r-- 1 root root 0 2月 14 11:28 9.txt

4.4 总结

SUID: 作用于二进制可执行程序,当用户执行此程序时,将会临时继承此程序所有者的权限SGID: 作用于二进制可执行程序,当用户执行此程序时,将会继承此程序所属组的权限 作用于目录,当用户再此目录下创建文件时,文件的所属组会自动继承此目录的所属组STICKY: 作用于目录,用户只能删除自己的文件。(当然root用户除外,我们探讨权限一般情况都会自动忽略root用户,因为root用户是管理员用户)

4.5 设置文件特定属性

chattr +i 不能删除,改名,更改chattr +a 只能追加内容lsattr 显示特定属性
上一篇:【K8S专栏】Kubernetes有状态应用管理
下一篇:没有了
网友评论