Linux用户、组和权限管理

本文详细介绍了Linux系统的用户和权限管理,包括用户类型、组的分类、配置文件解析,以及用户和组的创建、修改和删除。此外,还讨论了sudo提权、ACL权限控制、特殊权限(SUID、SGID、SBIT)以及umask设置。内容涵盖了用户权限的基本概念、操作指令和实践应用。
摘要由CSDN通过智能技术生成

Linux用户和权限管理

基础知识

  • Linux用户

    • 管理员:root 0
    • 普通用户:1-65535
      • 系统用户:Centos6:1-499,Centos7:1-999
      • 登录用户:Centos6:500+,Centos7:1000+
  • Linux组:

    • 管理员组:root 0

    • 普通组:

      • 系统组
      • 登录用户组
    • 组类别:

      • 基本组(主组):组名同用户名,且仅包含一个用户,私有组
      • 附加组(额外组):一个用户可以属于多个额外组
  • 用户和组相关的配置文件

    • /etc/passwd:用户及其属性信息(名称、UID、基本组ID等等)

    • /etc/group:组及其属性信息

    • /etc/shadow:用户密码及其相关属性

    • /etc/gshadow:组密码及其相关属性

[root@server1 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
字段解析:
name:password:UID:GID:描述:directory:shell

[root@server1 ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
字段解析:
group_name:password:GID:user_list

[root@server1 ~]# cat /etc/shadow
root:$6$pGGxCptV$ORQhySfwpOCMr4mUPZ0bJfv3X82Zg8dCyqfcjfmafP5cyfaObevcXM2kl5azMfKYorG3BnjFwQyYkORIzGZry/:18819:0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
字段解析:
name:password:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期限:密码警告时间段:密码禁用日期:账户过期日期:保留字段

用户管理

信息查看

id
[root@server1 ~]# id
uid=0(root) gid=0(root)=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@server1 ~]# id user01
uid=1000(user01) gid=1000(user01)=1000(user01)
查看文件
[root@server1 ~]# ll /home
总用量 0
drwxr-xr-x. 4 root     root     29 711 20:22 abc
drwx------. 2 alice    alice    83 419 00:01 alice
drwxr-xr-x. 2 root     root      6 711 20:22 dfg
-rw-r--r--. 1 root     root      0 711 20:37 dir01
drwxr-xr-x. 2 root     root     36 711 20:39 dir02

用户管理

创建用户useradd
常用选项: 
‐u:指定uid 
‐g:指定gid 
‐c:用户注释信息
‐d:家目录
‐s:指定shell(/etc/shells) 
‐G:附加组 
‐r:创建系统用户 
默认设置:/etc/default/useradd

[root@server1 ~]# useradd zhangsan -G group1 -s /bin/csh -c '张三的信息'
[root@server1 ~]# id zhangsan
uid=1007(zhangsan) gid=1010(zhangsan) 组=1010(zhangsan),1009(group1)
[root@server1 ~]# cat /etc/passwd | grep zhangsan
zhangsan:x:1007:1010:张三的信息:/home/zhangsan:/bin/csh
修改用户组usermod
常用选项: 
‐ aG:将用户添加到附加组
‐ dm:移动用户新登录目录 
‐ L:锁定用户 
‐ U:解锁用户

[root@server1 ~]# usermod -G it user01 #覆盖附加组
[root@server1 ~]# id user01
uid=1000(user01) gid=1000(user01) 组=1000(user01),1011(it)

[root@server1 ~]# usermod -aG hr user01 #追加附加组
[root@server1 ~]# id user01
uid=1000(user01) gid=1000(user01) 组=1000(user01),1004(hr),1011(it)

修改用户密码passwd
常用选项:
‐n mindays:指定最短使用期限
‐x maxdays:最大使用期限 
‐w warndays:提前多少天开始警告
‐i inactivedays:非活动期限 
‐‐stdin:从标准输入接收用户密码 
echo "PASSWD" | passwd ‐‐stdin username

[root@server1 ~]# passwd zhangsan
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
删除用户userdel
-r 连同家目录一起删除

[root@server1 home]# ls
abc  alice  dfg  file10  gaoxinyu  nizhan  user01  user02  user03  user04  zhangsan
[root@server1 home]# userdel -r zhangsan
[root@server1 home]# ls
abc  alice  dfg  file10  gaoxinyu  nizhan  user01  user02  user03  user04

组管理

创建组groupadd
常用选项:
‐g:指定gid 
‐r:创建系统组
删除组groupdel

sudo提权

常用切换方式: 
su username:切换用户,不读取用户配置信息 
su ‐ username:完全切换(记住这个,就可)

[root@server1 ~]# id alice
uid=1004(alice) gid=1006(alice) 组=1006(alice)

#普通用户alice尝试创建用户wanger,被拒绝
[alice@server1 ~]$ useradd wanger
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。

#修改sudo提权配置文件
[root@server1 ~]# vim /etc/sudoers
将107行的%whee ALL=(ALL)   NOPASSWD:ALL前面的#和%删除
:wq!保存强制退出
[root@server1 ~]# gpasswd -a alice wheel
正在将用户“alice”加入到“wheel”组中
[root@server1 ~]# id alice
uid=1004(alice) gid=1006(alice) 组=1006(alice),10(wheel)

#重新登录alice用户,sudo提权
[root@server1 ~]# su - alice

#sudo提权并创建用户,成功
[alice@server1 ~]$ sudo useradd wanger
[sudo] alice 的密码:
[alice@server1 ~]$ ls /home
alice   wanger

权限管理

权限设置原因

  • 服务器中的数据价值

  • 员工的工作职责和分工不同

  • 应对自外部的攻击(挂马)

  • 内部管理的需要

基本概念

  • 文件的权限对象:
    • owner:属主,u
    • group:属组,g
    • other:其他,o

root不受权限限制,拥有所有权限

  • 文件的三种权限:

    • r:Readable 4
    • w:Writeable 2
    • x:eXcutable 1
  • 文件:

    • r:可读文件内容
    • w:可修改其内容
    • x:可作为命令执行
  • 目录:

    • r:可以使用ls查看此目录中的文件列表
    • w:可在此目录中创建mkdir,touch,也可以删除rmdir,rm -rf此目录中的文件
    • x:可以使用ls查看此目录中文件列表,可以cd进入此目录

注:一般给予目录读权限时,也将会给其执行权限

奇葩权限:
  • 设置不合理的权限,单独出现2或3的权限数字。如权限731中的3权限,3表示写+执行权限,但是写又必须需要能打开之后才可以写,因此必须需要具备可读权限,因此此权限设置不合理。

权限管理(u,g,o)

更改属主(组)chown
更改属组chgrp
[root@server1 ~]# chown alice:hr file1#改属主,属组
[root@server1 ~]# chown alice file1 #改属主
[root@server1 ~]# chown :hr file1 #改属组

[root@server1 ~]# chgrp g1 file1#改文件属组
[root@server1 ~]# ll file1
-rw-r--r--. 1 alice g1 0 712 18:01 file1

[root@server1 ~]# chgrp -R g1 dir1#改文件夹属组
[root@server1 ~]# ll
总用量 16
-rw-------. 1 root  root 1241 316 17:52 anaconda-ks.cfg
-rwxr-xr-x. 1 root  root 9024 524 12:11 a.out
drwxr-xr-x. 2 root  g1      6 712 18:10 dir1
更改文件权限chmod
常用选项:
‐R:递归设置,针对文件夹(目录)

[root@server1 ~]# chmod u=rwx,g=r,o=r file1
[root@server1 ~]# ll file1
-rwxr--r--. 1 alice g1 0 7月  12 18:01 file1

[root@server1 ~]# chmod u-x file1
[root@server1 ~]# ll file1
-rw-r--r--. 1 alice g1 0 7月  12 18:01 file1

[root@server1 ~]# chmod a-w file1
[root@server1 ~]# ll file1
-r--r--r--. 1 alice g1 0 7月  12 18:01 file1

[root@server1 ~]# chmod 764 file1
[root@server1 ~]# ll file1
-rwxrw-r--. 1 alice g1 0 7月  12 18:01 file1

删除文件失败如何解决?

  • sudo提权
  • 可检查用户对所在目录是否有w权限

ACL权限

  • ACL 是 Access Control List 的缩写,在 Linux 系统中, ACL 可实现对单一用户设定访问文件的权限。优势就是让权限控制更加的精准。
getfacl获取ACL权限
getfacl 文件或目录名
setfacl设置ACL权限
常用选项: 
‐m :修改acl设定参数
‐x :删除acl设定参数 
‐b :移除所有的ACL设定
‐R :递归 
‐d :添加默认的acl权限
  • 删除ACL权限
删除用户权限:setacl ‐x u:username filename 
删除组权限:setacl ‐x g:groupname filename 
删除整个acl权限:setacl ‐b filename
  • 用户设定ACL权限:setfacl -m u:username:权限 filename
设定alice对file1有rwx权限 
[root@server1 ~]# setfacl -m u:alice:rwx file1
[root@server1 ~]# getfacl file1
# file: file1
# owner: alice
# group: g1
user::rwx
user:alice:rwx
group::rw-
mask::rwx
other::r--

设定user对testdirectory目录下所有文件有rwx权限 
setfacl ‐R ‐m u:user:rwx testdirectory

去掉user对testdirectory的x权限 
setfacl ‐x u:user testdirectory/

去掉所有acl权限 
[root@server1 ~]# setfacl -b file1
[root@server1 ~]# getfacl file1
# file: file1
# owner: alice
# group: g1
user::rwx
group::rw-
other::r--

为testdirectory目录添加默认的acl权限,此目录下创建目录和文件,user都有rwx权限 
setfacl ‐d ‐m u:user:rwx testdirectory/

  • 组设定ACL权限: setfacl -m g:groupname:权限 filename
给acl_test1文件添加mygropu1组rx权限设定 
[root@study ~]# setfacl ‐m g:mygroup1:rx acl_test1
[root@study ~]# getfacl acl_test1 
# file: acl_test1 
# owner: root 
# group: root
user::rwx 
user:vbird1:rx 
group::r‐‐ group:mygroup1:rx # 组权限设定 
mask::rx 
other::r‐‐

特殊权限

文件的特殊权限包括:SUID、SGID、SBIT

SUID:冒险位S(4)
  • SUID:暂时借出程序所有者的权限

    • SUID权限仅对二进制文件(命令)有效 ,且仅在本程序中拥有改权限

查询命令所在的路径

[root@server1 ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz
[root@server1 ~]# type passwd
passwd 是 /usr/bin/passwd
  • 举例
    • 普通用户zhangsan修改密码=> 调用passwd命令=> 执行/usr/bin/passwd => 修改/etc/shadow文件
[root@server1 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 4月   1 2020 /usr/bin/passwd
[root@server1 ~]# ll /etc/shadow
----------. 1 root root 1100 7月  12 17:44 /etc/shadow
普通用户没有直接修改/etc/shadow中密码的权利,只有root可以
普通用户可以通过使用具有s权限的passwd命令,借用root的权利来修改自己的密码
SGID:强制位S(2)
  • SGID:暂时借出用户组的权限 2
    • 二进制文件(命令)有效
[root@localhost ~]# useradd zhangsan 
[root@localhost ~]# useradd lisi 
[root@localhost ~]# ll /home/ 
total 0
drwx‐‐‐‐‐‐. 2 lisi lisi 62 Aug 5 09:51 lisi 
drwx‐‐‐‐‐‐. 2 zhangsan zhangsan 62 Aug 5 09:51 zhangsan
[root@localhost ~]# chmod 2770 /home/zhangsan 
[root@localhost ~]# ll ‐d /home/zhangsan
drwxrws‐‐‐. 2 zhangsan zhangsan 62 Aug 5 09:51 /home/zhangsan 
[root@localhost ~]# usermod ‐aG zhangsan lisi 
[root@localhost ~]# su lisi
[lisi@localhost root]$ cd /home/lisi/ 
[lisi@localhost ~]$ touch 1.txt 
[lisi@localhost ~]$ ll 
total 0 
‐rw‐rw‐r‐‐. 1 lisi lisi 0 Aug 5 09:56 1.txt
[lisi@localhost ~]$ cd /home/zhangsan
[lisi@localhost zhangsan]$ touch 1.txt 
[lisi@localhost zhangsan]$ ll 
total 0 
‐rw‐rw‐r‐‐. 1 lisi zhangsan 0 Aug 5 09:57 1.txt
#lisi用户在SGID目录创建文件的属主为 zhangsan(该目录的所属组)
SBIT:粘滞位T(1)
  • 该特殊权限针对目录,目录中的文件只能被文件的拥有者删除

  • SBIT用来做共享目录 :同一用户组的多个用户拥有共同的目录,在创建文件时该用户组的所有用户都有相同的权利操作文件。用户创建该目录时,只有自己或root可以删除该目录下的文件,其他用户不可以修改此文件

[root@server1 ~]# ll -d /tmp
drwxrwxrwt. 9 root root 264 712 14:01 /tmp#t表示具有SBIT权限
设置或修改特殊文件
使用数字,第一位表示特殊权限,后三位为基本权限
chmod u+s file1
chmod 4644 file1
chmod u-s file1
chmod 0644 file1

chmod g+s dir1
chmod 2755 dir1
chmod g-s dir1
chmod 0755 dir1

chmod o+t dir1
chmod 1755 dir1
chmod o-t dir1
chmod 0755 dir1

[root@server1 ~]# chmod 7644 file1
[root@server1 ~]# ll 
-rwSr-Sr-T. 1 alice g1      0 7月  12 18:01 file1

注:
大写的高级权限表示普通权限没有x执行权限
小写的高级权限表示普通权限有x执行权限
特殊权限生效的前提是:文件(夹)必须拥有x执行权限

进程umask

umask :文件或目录的遮掩码

File:666 ‐ umask :root创建的文件权限默认为644,普通用户创建的文件权限默认为664

Dir: 777 ‐ umask :root创建的目录权限默认为755,普通用户创建的目录权限默认为775

扩展:实际上我们创建一个普通文件最高权限666(预设没有x权限)。而创建一个文件夹其最高权限777

实际文件权限 = 最高权限 - umask的值

  • 查看:umask
[root@server1 ~]# umask
0022  #root默认为022
[zhangsan@server1 ~]$ umask
0002  #普通用户默认为022
  • 临时设定:umask 设置值(不建议修改)

  • 永久设定:修改相关配置文件~/.bashrc(不建议修改)

    • 在文件中追加 :
    • umask 设置值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值