用户和用户组管理 (redhat 8.0)

本文详细介绍了Linux系统中的用户和组管理,包括Linux安全上下文、用户组相关类别、用户管理、密码管理、权限管理以及sudo权限委派。重点讲解了如何使用useradd、usermod、passwd、chown等命令进行用户和权限的设置,并探讨了遮罩码umask对文件和目录默认权限的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用户和组管理

Linux安全上下文

运行中的程序:进程(process)

  • 以进程发起者的身份运行
    root:cat
    wcl:cat
  • 进程所能访问的资源取决于登陆用户所有的权限

Linux用户组相关类别

  • 私有组 创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名相同的组
  • 基本组 用户默认组
  • 附加组(额外组) 默认组以外的其他组

/etc/passwd和/etc/group配置文件详解

配置文件 /etc/passwd /etc/group
第一字段 用户名 组名
第二字段 密码占位符 组密码
第三字段 UID GID
第四字段 GID 以当前组为附加组的用户列表(分隔符为逗号)
第五字段 用户描述信息
第六字段 用户家目录
第七字段 用户登陆的shell

/etc/shadow配置文件详解
配置文件 /etc/shadow
第一字段 登录名
第二字段 加密后的密码
第三字段 最近一次更改密码的日期
第四字段 密码的最小使用期限
第五字段 密码的最大使用期限
第六字段 密码警告时间段
第七字段 密码的禁用期限

/etc/login.defs

用户管理

useradd //创建用户
-u UID //定义在**/etc/login.defs**文件中
-g GID //中单用户所属的基本组,可为组名或者GID
-G groupname //附加组,可有多个,用逗号隔开
-c “cmment” //注释信息
-d /path/to/directory //指定用户的家目录。此目录不能事先存在
添加新用户时指定用户主目录

[root@wcluser ~]# useradd -d /root/share/ chap
[root@wcluser ~]# tail -1 /etc/passwd
chap:x:2000:1111::/root/share/:/bin/bash

-s shell //指定用户登录时用的脚本(最好用shell脚本)
-M //创建用户时不给其创建家目录
-r //添加一个系统用户
-D //直接打印/etc/default/useradd文件的内容或配合其他选项

id //查看用户的帐号属性信息

 [root@wcluser ~]# id chap 
uid=2000(chap) gid=1111(chap)=1111(chap)

-u //查看UID

[root@wcluser ~]# id -u chap
2000

-g //查看GID

[root@wcluser ~]# id -g chap 
0

-G //查看groups

[root@wcluser ~]# id -G chap 
0

usermod 修改用户属性
//语法:usermod [options] username

-u UID

[root@wcluser ~]# usermod -u 1234 chap 
[root@wcluser ~]# id -u chap 
1234

-g GID

    [root@wcluser ~]# usermod -g 0 chap 
[root@wcluser ~]# id chap 
uid=2000(chap) gid=0(root)=0(root)

-a -G groupname //不使用-a选项,会覆盖此前的附加组
不加-a时加附加组

 [root@wcluser ~]# id -G chap 
0 205
[root@wcluser ~]# usermod -G fyj chap 
[root@wcluser ~]# id -G chap 
0 1110

加-a加附加组

[root@wcluser ~]# usermod -a -G wcl chap 
[root@wcluser ~]# id chap 
uid=1234(chap) gid=0(root)=0(root),1110(fyj),205(wcl)
    

-d -m //改变用户家目录的同时把原来家目录的文件移动到新的家目录中

可以看出此时用户chap的家目录是/root/share

[root@wcluser ~]# tail -1 /etc/passwd
chap:x:1234:0::/root/share/:/bin/bash

语法:usermod -d 目录绝对路径 -m 用户名

[root@wcluser home]# usermod -d /home/chap -m chap 
[root@wcluser home]# tail -1 /etc/passwd
chap:x:1234:0::/home/chap:/bin/bash

-e YYYY-MM-DD //指明用户帐号过期日期

指定用户chap于2020年2月5日过期

 [root@wcluser home]# usermod -e 2020-02-05 chap

-f INACTIVE //设定非活动期限
-L //锁定帐号。
//被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
-U //解锁帐号

//chsh 修改用户的默认shell
//语法:chsh [options] [username]
-s SHELL
创建系统用户
先创建一个普通用户

[root@wcluser ~]# useradd user
[root@wcluser ~]# id user
uid=1111(user) gid=1111(user)=1111(user)

进入到/etc/passwd中

[root@wcluser ~]# cat /etc/passwd | tail -5
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
fyj:x:1110:1110::/home/fyj:/bin/bash
wcl:x:25:1110::/home/fyj/:/bin/bash
user:x:1111:1111::/home/user:/bin/bash

将user用户的登陆shell改成**/sbin/nologin**保存退出

[root@wcluser ~]# vim /etc/passwd
[root@wcluser ~]# cat /etc/passwd | tail -5
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
fyj:x:1110:1110::/home/fyj:/bin/bash
wcl:x:25:1110::/home/fyj/:/bin/bash
user:x:1111:1111::/home/user:/sbin/nologin

切换用户命令su

su username //交互式登陆,不会读取目标用户配置文件
su - username //登陆式切换,会读取目标用户的配置文件(不指定用户时默认切换至root)

[root@wcluser ~]# su - wcl
[wcl@wcluser ~]$ 

密码管理passwd

passwd [options] [USERNAME]
--stdin     //从标准输入获取用户密码, \
            //例:echo "redhat"|passwd --stdin user1
-l      //锁定用户
-u      //解锁用户
-d      //删除用户密码
-n mindays      //指定最短使用期限
-x maxdays      //指定最长使用期限
-w warndays     //提前多少天开始警告
-i inactivedays     //非活动期限,密码过期后到禁用前的这段时间

权限管理

修改权限的命令chmod

[root@wcluser ~]# chmod -R 755 /home/fyj					//递归更改目录权限

//修改某类用户或某些类用户权限:
//u,g,o,a(用户类别)

//chmod 用户类别=MODE file,…
//chmod 用户类别=MODE,用户类别=MODE file,…

//修改某类的用户某位或某些位权限:
//u,g,o,a(用户类别)

//chmod 用户类别+|-MODE file,…
//chmod 用户类别+|-MODE,用户类别+|-MODE file,…
//chmod +|-MODE file,…

修改文件属主和属组的命令chown

chown命令只有管理员可以使用。
chown 用户名:组名 flie
-R #修改目录及其内部文件的属主和属组

遮罩码

为什么文件创建以后默认权限是644?
为什么目录创建以后默认权限是755?

这是由遮罩码umask来控制的。

从名字就能看出来,遮罩码umask是用来隐藏一些权限的。举例:如果你不想让人家认出你,你会怎么办?

文件最终的权限为:

666-umask
目录最终的权限为:

777-umask
文件默认是不能具有执行权限的,如果算得的结果有执行权限则将其权限整体加1。

sudo

权限委派

使用visudo命令进行sudo的配置,每一行就是一个sudo条目,条目格式如下:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
	#什么地方=(什么身份) 执行什么命令

例:
用root用户执行visudo进行编辑

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
fyj     ALL=(ALL)       /usr/sbin/useradd

使用普通用户执行

[fyj@Ansibleconsole root]$ sudo useradd wcl

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] fyj 的密码:
[fyj@Ansibleconsole root]$
[fyj@Ansibleconsole home]$ ll
总用量 4
drwx------.  3 fyj fyj   78 8月  26 10:23 fyj
drwx------. 15 wei wei 4096 8月  26 08:10 wei
[fyj@Ansibleconsole home]$ chmod 755 /home/fyj/
[fyj@Ansibleconsole home]$ ll
总用量 4
drwxr-xr-x.  3 fyj fyj   78 8月  26 10:23 fyj
drwx------. 15 wei wei 4096 8月  26 08:10 wei

别名必须全部而且只能使用大写英文字母的组合,可以使用感叹号取反

别名分类:

  1. 用户别名:
    User_Alias NETWORKADMIN =
  • 用户的用户名
  • 组名,使用%引导
  • 还可以其它已经定义的用户别名
  1. 主机别名:
    Host_Alias =
  • 主机名
  • IP地址
  • 网络地址
  • 其它主机别名
  1. Runas别名:
    Runas_Alias =
  • 用户名
  • %组名
  • 其它的Runas别名
  1. 命令别名:
    Cmnd_Alias =
  • 命令路径
  • 目录(此目录内的所有命令)
  • 其它已定义的命令别名
sudo命令语法:sudo [options] COMMAND
    -V      #显示版本编号
    -h      #会显示版本编号及指令的使用方式说明
    -l      #列出当前用户可以使用的所有sudo类命令
    -v      #因为sudo在第一次执行时或是在N分钟内没有执行(N默认为5)会问密码,这个参数是重新做一次确认,如果超过N分钟,也会问密码
    -k      #让认证信息失效,如果不指定-k,默认认证信息在5分钟后失效
    -b      #将要执行的指令放在后台执行
    -u USERNAME     #以指定的用户名执行命令,默认为root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值