经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
Linux用户管理
来源:cnblogs  作者:coder雪山  时间:2023/12/27 12:41:29  对本文有异议

1.用户基本概述

1.什么是用户?

用户指的是能够正常登录Linux或Windows系统(可以理解为你租了房子,能够正常入驻)

F:那Linux与Windows系统的用户有什么区别? Q:本质都是登陆系统,只不过Linux支持多个用户同时登陆。

F:难道Windows就不算多用户操作系统吗? Q:其实不是,在Windows系统中可以创建多个用户,但不允许同一时刻多个用户登陆系统,但Linux系统则允许同一时刻多个用户同时登陆,登陆后相互之间操作并不影响。

2.Linux下的用户有什么用

或者说我们为什么要创建用户?

1.系统上的每一个进程(运行的程序),都需要一个特定的用户运行 2.通常在公司是使用普通用户管理服务器,因为root权限过大,容易造成故障。

3.查看用户

如何查看系统中所存在的用户

1.查看当前登录的用户信息

  1. [root@bgx ~]# id #查看当前所登陆的用户信息
  2. # uid:用户id,系统只能识别uid,不能识别名字,人看名字
  3. # gid:组id
  4. uid=0(root) gid=0(root) groups=0(root)
  5. [root@bgx ~]# id oldboy #查看其它用户的信息
  6. uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy)

2.每一个进程都会由一个用户身份运行

  1. [root@bgx ~]# ps aux|less #简单使用一下,不用理解
  2. root 33782 0.0 0.0 0 0 ? R 02:46 0:00 [kworker/u256:0]
  3. root 35637 0.0 0.0 0 0 ? R 05:11 0:03 [kworker/0:2]

4.用户存存放位置

Linux系统会将用户的信息存放在/etc/passwd,记录了用户的信息,但没有密码信息,密码被存放在/etc/shadow中。

也就是说这两个文件非常的重要,不要轻易删除与修改。

1./etc/passwd 配置文件解释如下图,或者man 5 passwd

2./etc/shadow 配置文件解释如下图,或者man 5 shadow

PS: 使用change修改密码过期时间示例

4.最后我们需要了解下系统对用户的一个约定?(约定娶你,就真的会娶吗?)

用户UID系统中约定的含义
0 超级管理员,最高权限,有着极强的破坏能力
1~200 系统用户,用来运行系统自带的进程,默认已创建
201~999 系统用户,用来运行用户安装的程序,所以此类用户无需登录系统
1000+ 普通用户,正常可以登陆系统的用户,权限比较小,能执行的任务有限
  • 超级管理员用户 root 0

  • 普通用户

    • 系统用户: 用来启动系统的一些服务和进程的用户,不可以登陆 1-999(centos7)1-499 (centos6)

    • 可登陆用户:能登录系统的用户 1000-65535(centos7)500-65535(centos6)

2.用户相关命令

下面我们就围绕着用户的创建、变更、删除等来讲讲涉及到的命令: useradd、usermod、userdel

1.新增用户

使用useradd命令,注意: adduser命令软链接指向useradd命令

useradd

  1. Usage: useradd [options] LOGIN
  2. useradd -D
  3. useradd -D [options]
  4. 普通用户的id是递增,系统用户的id是递减的
  5. -d 用来指定用户的家目录
  6. -g 指定用户组的id
  7. -G 指定用户的附加组
  8. -k 指定复制那个文件夹下的内容,需要和-m一起使用
  9. -m 创建用户的家目录
  10. -c "message" 指定用户的描述信息
  11. -N 不创建同名的组,以users为组
  12. -s 指定用户登录后使用的shell
  13. -u 指定用户的id
  14. D 显示系统的默认配置
  15. -D [options] 可以修改系统的默认配置
  16. -r 创建系统用户
  • 相关文件

    • /etc/default/useradd 创建用户的默认文件

    • /etc/skel/* 默认复制的文件

  1. #选项
  2. # -u 指定要创建用户的UID,不允许冲突
  3. # -g 指定要创建用户默认组
  4. # -G 指定要创建用户附加组,逗号隔开可添加多个附加组
  5. # -d 指定要创建用户家目录
  6. # -s 指定要创建用户的bash shell /bin/bash /sbin/nologin
  7. # -c 指定要创建用户注释信息
  8. # -M 给创建的用户不创建家目录
  9. # -r 创建系统账户,默认无家目录
  10.  
  11.  
  12. #1.创建bgx用户,UID5001,基本组students,附加组sa 注释信息:2019 new student,登陆shell:/bin/bash
  13. [root@bgx ~]# groupadd sa
  14. [root@bgx ~]# groupadd students
  15. [root@bgx ~]# useradd -u 5001 -g students -G sa -c "2019 new student" -s /bin/bash bgx
  16.  
  17. #2.创建mysql系统用户,-M不建立用户家目录 -s指定nologin使其用户无法登陆系统
  18. [root@bgx ~]# useradd mysql -M -s /sbin/nologin
  19. [root@bgx ~]# useradd -r dba -s /sbin/nologin
  20.  
  21. # 3
  22. useradd od -u 7777 -G sa -d /tmp/od -s /sbin/nologin
  23. grep "7777" /etc/passwd
  24. # 4 SELinux
  25. getenforce # 查看
  26. setenforce 0 # 临时关闭
  27. cat /etc/selinux/config
  28. SELINUX=disabled

2.修改用户信息

使用usermod命令修改用户信息

用户修改usermode

  1. -c 修改描述信息
  2. -d 修改家目录,默认不会创建新目录,如果想移动家目录,则需要使用-m
  3. -g 修改用户组
  4. -G 修改用户的附加组,默认情况下是替换
  5. -a 追加附加组
  6. -l newname 修改用户的登录名称
  7. -L 锁定用户,不能登录系统,修改密码默认情况下回解锁
  8. -U 解锁用户
  9. -s 修改用户登录后的shell
  10. -u 修改用户的uid
  11. -e 年-月-日 修改用户的过期时间,过期以后不能登录
  1. #选项
  2. # -u 指定要修改用户的UID
  3. # -g 指定要修改用户基本组
  4. # -G 指定要修改用户附加组,使用逗号隔开多个附加组, 覆盖原有的附加组,-aG追加
  5. # -d 指定要修改用户家目录 -md 旧家搬新家
  6. # -s 指定要修改用户的bash shell
  7. # -c 指定要修改用户注释信息
  8. # -l 指定要修改用户的登陆名
  9. # -L 指定要锁定的用户
  10. # -U 指定要解锁的用户
  11.  
  12. #1.检查此前创建的用户信息
  13. [root@bgx ~]# grep "bgx" /etc/passwd
  14. bgx:x:5001:503:2019 new student:/home/bgx:/bin/bash
  15. #2.修改bgx用户uid、gid,附加组 -a表示追加
  16. [root@bgx ~]# groupadd -g 5008 network_sa
  17. [root@bgx ~]# groupadd -g 5009 devops
  18. [root@bgx ~]# usermod -u 6001 -g5008 -a -G 5009 bgx
  19.  
  20. #3.修改bgx用户的注释信息, 用户家目录, 登录shell, 登录名 -l:改名字,-md,把环境也带过去
  21. [root@bgx ~]# usermod -c "2019 new student" -md /bgx -s /bin/sh -l change_bgx bgx
  22.  
  23. #检查是否修改成功
  24. [root@bgx ~]# grep "bgx" /etc/passwd
  25. bgx_lqz:x:6001:5008:2019 new student:/bgx:/bin/sh
  26. [root@bgx ~]# id change_bgx
  27. uid=6001(change_bgx) gid=5008(network_sa) groups=5008(network_sa),503(sa),5009(devops)
  28. [root@bgx ~]# ll -d /bgx
  29. drwx------. 2 bgx_lqz network_sa 4096 2014-09-23 00:13 /bgx
  30. #4.锁定用户[扩展]
  31. [root@bgx ~]# echo "123" |passwd --stdin change_bgx
  32. [root@bgx ~]# usermod -L change_bgx #锁定后会无法登陆系统
  33.  
  34. #5.解锁用户[扩展]
  35. [root@bgx ~]# usermod -U change_bgx

3.删除账户

使用userdel命令删除账户

删除用户 userdel

  1. 默认删除用户不删除用户的家目录
  2. -r 删除家目录
  3. -f 强制删除
  4. 默认情况下,用户登录状态下是不能删除用户,强制删除用户以后,用户还是可以用的
  1. #选项 -r 删除用户同时删除它的家目录
  2.  
  3. #1.删除user1用户,但不删除用户家目录和 mail spool
  4. [root@bgx ~]# userdel user1
  5. [root@bgx ~]# ls /var/spool/mail/
  6.  
  7. #2.-r参数可以连同用户家目录一起删除(慎用)
  8. [root@bgx ~]# userdel -r user1

4.其他

  1. 使用finger命名查询用户信息以及登录信息(yum install finger),示例: finger UserName

  2. 使用chfn命令修改用户信息(其实是修改注释),示例: chfn UserName

  3. 使用chsh命令修改用户登录Bash Shell,示例: chsh UserName

  4. 使用who(当前有哪些用户登录了)、whoami、w检查用户登陆情况

查看用户相关信息id

  1. -g 只显示组id
  2. -G 只显示附加组id
  3. -u 只显示用户id
  4. -n 显示名称,需要和guG来配合使用

3.用户扩展知识

1.创建流程

前面我们学习如何创建、修改、删除用户,接下来了解下用户的?

1.useradd创建用户时,系统会以/etc/login.defs、/etc/defaults/useradd两个配置文件作为参照物,

如果在创建用户时指定了参数则会覆盖/etc/login.defs、/etc/defaults/useradd文件默认配置,如未指定则使用默认。

  1. [root@bgx ~]# grep -Ev "^#|^$" /etc/login.defs
  2. [root@bgx ~]# cat /etc/login.defs
  3. MAIL_DIR /var/spool/mail # 定义了邮件路径放在哪
  4. PASS_MAX_DAYS 99999 # 密码过期时间
  5. PASS_MIN_DAYS 0 # 密码最少0天
  6. PASS_MIN_LEN 5 # 密码长度
  7. PASS_WARN_AGE 7 # 7天提醒
  8. UID_MIN 1000
  9. UID_MAX 60000
  10. SYS_UID_MIN 201
  11. SYS_UID_MAX 999
  12. GID_MIN 1000
  13. GID_MAX 60000
  14. SYS_GID_MIN 201
  15. SYS_GID_MAX 999
  16. CREATE_HOME yes # 是否创建home
  17. UMASK 077
  18. USERGROUPS_ENAB yes # 用户不指定组,默认创建一个同名组
  19. ENCRYPT_METHOD SHA512 # 密码加密算法
  20. [root@bgx ~]# cat /etc/default/useradd
  21. GROUP=100
  22. HOME=/home #把用户的家目录建在/home中。
  23. INACTIVE=-1 #是否启用账号过期停权,-1表示不启用。
  24. EXPIRE= #账号终止日期,不设置表示不启用。
  25. SHELL=/bin/bash #新用户默认所有的shell类型。
  26. SKEL=/etc/skel #配置新用户家目录的默认文件存放路径。
  27. CREATE_MAIL_SPOOL=yes #创建mail文件。

2.当使用useradd创建用户时,创建的用户家目录下会存在 .bash_ 环境变量相关的文件,这些环境变量文件默认从/etc/skel目录中拷贝。

这个默认拷贝环境变量位置是由/etc/defaults/useradd配置文件中定义的。

  1. #故障案例,在当前用户家目录执行了rm -rf .,下次登录系统时出现-bash-4.1$,如何解决!
  2. -bash-4.1$ cp -a /etc/skel/.bash ./
  3. -bash-4.1$ exit
  4. [root@bgx ~]# #重新连接即可恢复

2.设置、修改密码

创建用户后,如需要使用该用户登陆系统则需要为用户设定密码,设定密码使用passwd命令。建议密码复杂度高一些、长度大于10、出现各种特殊字符、无任何规律(不要出现名字,电话,生日等)

PS: 注意事项

1.普通用户只允许变更自己的密码,无法修改其他人密码,并且密码长度必须8位字符

2.管理员用户允许修改任何人的密码,无论密码长度多长或多短。

  1. #1.使用passwd命令修改用户密码
  2. # passwd #给当前用户修改密码
  3. # passwd root #给root用户修改密码
  4. # passwd oldboy #给oldboy用户修改密码,普通用户只能自己修改自己
  5.  
  6.  
  7. #2.验证如下几项指标
  8. # passwd #root管理员用户登陆,修改root用户密码
  9. # passwd lqz #root用户登陆,修改其他用户的密码
  10. $ passwd root #普通用户修改root管理员密码
  11. # echo "123" | passwd --stdin lqz #非交互式修改密码
  12. # 批量创建100个用户,密码都为123456
  13. for i in {1..100}
  14. do
  15. useradd test$1
  16. echo "123456" |passwd --stdin test$1
  17. done
  18. #3.系统内置变量生成随机字符串(对随机字符串进行md5加密)
  19. [root@bgx ~]# echo $RANDOM|md5sum|cut -c 1-10
  20. d09fe9b1xs
  21. [root@bgx ~]# echo $(echo $RANDOM|md5sum |cut -c 5-14) |tee pass.txt| passwd --stdin lqz
  22.  
  23. #4.mkpasswd生成随机字符串, -l设定密码长度,-d数子,-c小写字母,-C大写字母,-s特殊字符
  24. [root@bgx ~]# yum install -y expect //需要安装扩展包
  25. [root@bgx ~]# mkpasswd -l 10 -d 2 -c 2 -C 2 -s 4
  26. |K&13bR)i/

PS: 推荐密码保存套件工具,支持windows、MacOS、Iphone以及浏览器插件Lastpass官方网站

/etc/passwd文件

  • 用户名称

  • 密码,使用x来占位

  • uid

  • gid

  • 描述信息

  • 家目录

  • 登录后使用的shell

设置密码passwd

  1. passwd [OPTION...] <accountName>
  2. -d 删除指定用户的密码,删除密码之后就不能登录
  3. -l 锁定用户
  4. -u 解锁用户
  5. -e 在下次登录以后强制用户修改密码
  6. -f 强制操作
  7. -x maxday 密码的最长使用时间
  8. -n minday 密码的最短使用时间
  9. -w warnday 密码过期前多长时间提醒
  10. -i inactiveday 密码过期多长时间以后禁用
  11. --stdin 从标准输入读取密码 echo '123'|passwd --stdin peiqi

存放文件/etc/shadow

  • 用户名

  • 密码 $加密方式(默认sha512)$盐$加密后的字符串$

  • 从1970年1月1日到最近一次修改密码经过的时间

  • 密码的最短使用时间(0表示随时可以修改)

  • 密码的最长使用时间(99999表示永不过期)

  • 密码过期多长时间提醒(默认是一周)

  • 密码过期多长时间锁定

  • 从1970年1月1日开始算起,多长时间后账号失效

  1. qiao:$6$HBl7BPCJk6JaLtw2$B4NzlqpCrMczVkK51Rjimw7Wp.oRfsCzrKEzmhiBEAfk9T7h.YleYZ3h3qV6Fv.bZnJh666tr36TBJHhCi6M90::0:99999:7:::

密码的复杂性策略

  • 必须包括数字、大小写、特殊字符

  • 密码必须12位以上

  • 不能为弱口令

  • 必须为随机密码

  • 3个月或者半年修改一次

机器免密登录

非对称加密,公钥登录(在已登录上机器机器上生成公钥,copy公钥给要登录的机器):

  1. ssh-keygen 一路回车
  2. ssh-copy-id 要登录的机器

修改用户密码策略 chage

  1. -E
  2. -I
  3. -m
  4. -M
  5. -W
  6. change login 可以使用交互式的修改密码策略

chfn 修改用户的个人描述信息

4.用户如何提权

往往公司的服务器对外都是禁止root用户直接登录,所以我们通常使用的都是普通用户,那么问题来了?

当我们使用普通用户执行/sbin目录下的命令时,会发现没有权限运行,这种情况下我们无法正常的管理服务器,那如何才能不使用root用户直接登录系统,同时又保证普通用户能完成日常工作?

PS: 我们可以使用如下两种方式: su、sudo

1.su切换用户,使用普通用户登录,然后使用su命令切换到root。优点:简单 缺点:需要知道root密码

2.sudo提权,当需要使用root权限时进行提权,而无需切换至root用户,优点:安全、方便 缺点:复杂

1.su身份切换

在使用su切换前,我们需要了解一些预备知识,比如shell分类、环境变量配置文件有哪些

1.Linux Shell主要分为如下几类 交互式shell,等待用户输入执行的命令(终端操作,需要不断提示) 非交互式shell,执行shell脚本,

脚本执行结束后shell自动退出 登陆shell,需要输入用户名和密码才能进入Shell,日常接触的最多的一种 非登陆shell,不需要输入用户和密码就能进入Shell,比如运行bash会开启一个新的会话窗口

2.bash shell配置文件介绍(文件主要保存用户的工作环境) 个人配置文件:~/.bash_profile ~/.bashrc 。

全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc profile类文件, 设定环境变量, 登陆前运行的脚本和命令。

bashrc 类文件, 设定本地变量, 定义命令别名 PS: 如果全局配置和个人配置产生冲突,以个人配置为准。

3.登陆系统后,环境变量配置文件的应用顺序是? 登录式shell配置文件执行顺序: /etc/profile->/etc/profile.d/.sh->/.bash_profile->/.bashrc->/etc/bashrc

非登陆式shell配置文件执行顺序: ~/.bashrc->/etc/bashrc->/etc/profile.d/.sh PS: 验证使用echo在每行添加一个输出即可

4.说了这么多预备知识,那这些和su命令切换用户有什么关系? su - username属于登陆式shell,su username属于非登陆式shell,区别在于加载的环境变量不一样。 su username 属于非登陆式shell

普通用户su -可以直接切换至root用户,但需要输入root用户的密码。 超级管理员root用户使用su - username切换普通用户不需要输入任何密码。

  1. #1.普通用户使用su切换root
  2. [lqz@node1 ~]$ su
  3. 密码: #输入root的密码
  4. [root@node1 lqz]# pwd
  5. /home/lqz
  6. #2.普通用户使用su -切换到root,会加载root的环境变量
  7. [lqz@node1 ~]$ su -
  8. 密码:
  9. [root@node1 ~]# pwd
  10. /root
  11. #3.以某个用户的身份执行某个服务,使用命令su -c username
  12. [root@bgx ~]# su - lqz -c 'ifconfig'
  13. [root@bgx ~]# su - lqz -c 'ls ~'
  14.  
  15. #4 其他
  16. yum provides pstree
  17. yum install psmisc
  18. pstree
  19. # 5 关闭root远程登陆,普通用户登进来,su - 切换到root用户
  20. vim /etc/ssh/sshd_config
  21. PermitRootLogin yes # 设成no

切换用户

  1. su [options] [-] [USER [arg]...]

切换用户的方式

  • 完整切换:su - username 登录式切换,环境变量等都会切换

  • 不完整切换:su username 不会切换用户的环境变量家目录等

  • root切换普通用户不需要密码,非root用户切换需要密码

切换用户执行命令,并在切换会来

  1. [root@localhost ~]#su - peiqi -c "whoami"
  2. peiqi

2.sudo提权

su命令在切换用户身份时,如果每个普通用户都能拿到root用户的密码,当其中某个用户不小心泄漏了root的密码,那系统会变得非常不安全。为了改进这个问题,从而产生了sudo这个命令。

其实sudo就相当于给某个普通用户埋下了浩克(hulk)的种子,当需要执行一些高级操作时,进行发怒,但正常情况下还是普通人,还是会受到限制。

1.如何快速埋下hulk的种子呢?

  1. #1.快速配置sudo方式[先睹为快]
  2. [root@node1 ~]# usermod bgx -G wheel # 把用户加到wheel组中
  3. [root@node1 ~]$ sudo tail -f /var/log/secure #sudo审计日志
  4.  
  5. #2.一般正常配置sudo方式
  6. [root@www ~]# #visudo => vim /etc/sudoers
  7. #1.用户名 2.主机名=(角色名) 4.命令名
  8. bgx ALL=(ALL) /usr/bin/yum,/usr/sbin/useradd #允许使用sudo执行命令
  9. oldboy ALL=(ALL) NOPASSWD:/bin/cp, /bin/rm #NOPASSWD不需要使用密码
  10. visudo -c # 检查刚刚编辑的是否有错误
  11. sudo -l # 对主机有哪些权限

2.埋下了hulk种子后又如何提权使用呢?

  1. #1.切换普通用户
  2. [root@bgx ~]# su - lqz
  3.  
  4. #2.检查普通用户能提权的命令
  5. [lqz@lqz ~]$ sudo -l
  6. User lqz may run the following commands on this host:
  7. (ALL) ALL
  8. #3.普通用户正常情况下是无法删除opt目录的
  9. [lqz@lqz ~]$ rm -rf /opt/
  10. rm: cannot remove `/opt: Permission denied
  11. #4.使用sudo提权,需要输入普通用户的密码。
  12. [lqz@lqz ~]$ sudo rm -rf /opt

3.开启某个命令的使用权限

提升的权限太大,能否有办法限制仅开启某个命令的使用权限?其他命令不允许?

第一种方式:使用sudo中自带的别名操作,将多个用户定义成一个组,这个组只有sudo认可

  1. [root@bgx ~]# visudo #也可以使用vi /etc/sudoers来配置
  2. # 1.使用sudo定义分组,这个系统group没什么关系
  3. User_Alias OPS = oldboy,alex
  4. User_Alias DEV = bgx,py
  5. # 2.定义可执行的命令组,便于后续调用
  6. Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
  7. Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
  8. Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
  9. Cmnd_Alias STORAGE = /bin/mount, /bin/umount
  10. Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp
  11. Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
  12. # 3.使用sudo开始分配权限
  13. OPS ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES
  14. DEV ALL=(ALL) SOFTWARE,PROCESSES
  15. #4.登陆对应的用户使用 sudo -l 验证权限

第二种方式:使用groupadd添加组,然后给组分配sudo的权限,如果有新用户加入,直接将用户添加到该组.

  1. #1.添加两个真实的系统组, group_dev group_op
  2. [root@www ~]# groupadd group_dev
  3. [root@www ~]# groupadd group_op
  4.  
  5. #2.添加两个用户, group_dev(user_a user_b) group_op(user_c user_d)
  6. [root@www ~]# useradd user_a -G group_dev
  7. [root@www ~]# useradd user_b -G group_dev
  8. [root@www ~]# useradd user_c -G group_op
  9. [root@www ~]# useradd user_d -G group_op
  10.  
  11. #3.记得添加密码
  12. [root@www ~]# echo "1" | passwd --stdin user_a
  13. [root@www ~]# echo "1" | passwd --stdin user_b
  14. [root@www ~]# echo "1" | passwd --stdin user_c
  15. [root@www ~]# echo "1" | passwd --stdin user_d
  16.  
  17. #4.在sudo中配置规则
  18. [root@www ~]# visudo
  19. Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
  20. Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
  21. Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
  22. Cmnd_Alias STORAGE = /bin/mount, /bin/umount
  23. Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp
  24. Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
  25. %group_dev ALL=(ALL) SOFTWARE
  26. %group_op ALL=(ALL) SOFTWARE,PROCESSES
  27. #5.检查sudo是否配置有错
  28. [root@www ~]# visudo -c
  29. /etc/sudoers: parsed OK
  30. #6.检查user_a,和user_d的sudo权限
  31. [user_a@www.oldboyedu.com ~]$ sudo -l
  32. User user_a may run the following commands on www:
  33. (ALL) /bin/rpm, /usr/bin/yum
  34. [user_d@www.oldboyedu.com ~]$ sudo -l
  35. User user_d may run the following commands on www:
  36. (ALL) /bin/rpm, /usr/bin/yum, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

4.sudo命令的执行流程

  1. 普通用户执行sudo命令时, 会检查/var/db/sudo是否存在时间戳缓存

  2. 如果存在则不需要输入密码, 否则需要输入用户与密码

  3. 输入密码会检测是否该用户是否拥有该权限

  4. 如果有则执行,否则报错退出

执行本身不能执行的命令

sudo 配置文件为/etc/sudoers

  1. peiqi ALL=(ALL) NOPASSWD:ALL
  2. 其中的NOPASSWD 是不需要输入密码

5.用户组的管理

1.什么是用户组

其实就是一种逻辑层面的定义,逻辑上将多个用户归纳至一个组,当我们对组操作,其实就相当于对组中的所有用户操作。

2.组有类别

对于用户来说,组有几种类别?

基本组,用户只能有一个基本组,创建时可通过-g指定,如未指定则创建一个默认的组(与用户同名),简称私有组

附加组,基本组不能满足授权要求,创建附加组,将用户加入该组,用户可以属于多个附加组

3.组的信息位置

组账户信息保存在/etc/group和/etc/gshadow两个文件中。重点关注group

1./etc/group 配置文件解释如下图

  1. head -1 /etc/group

2./etc/gshadow 配置文件解释如下图

  • 超级用户组 root 0

  • 普通用户组

    • 系统用户组 1-999(centos7) 1-499(centos6)

    • 可登陆用户组 1000-65535(centos7)500-65535 (centos6)

  1. groupadd
  2. -g 指定组id
  3. -r 创建系统用户组

组的文件

/etc/group

  • 组名

  • 密码占位

  • gid

  • 组成员

/etc/gshadow

  • 组名

  • 密码

  • 组管理员的密码

  • 组成员

1 groupadd新增组

使用groupadd命令新增组,groupadd [-g GID] groupname

  1. #创建基本组, 不指定gid
  2. [root@bgx ~]# groupadd no_gid
  3. [root@bgx ~]# tail -n1 /etc/group
  4. no_gid:x:1000:
  5. #创建基本组, 指定gid为5555
  6. [root@bgx ~]# groupadd -g 5555 yes_gid
  7. [root@bgx ~]# tail -n1 /etc/group
  8. yes_gid:x:5555:
  9. #创建系统组,gid从201-999
  10. [root@bgx ~]# groupadd -r sys_group
  11. [root@bgx ~]# tail -n1 /etc/group
  12. sys_group:x:990:

2 groupmod修改组

使用groupmod命令修改组

  1. #-g 修改组gid
  2. [root@bgx ~]# groupmod -g 1111 no_gid
  3. [root@bgx ~]# tail -1 /etc/group
  4. no_gid:x:1111:
  5. #-n 修改组名称(把yes_gid名字改为active_group)
  6. [root@bgx ~]# groupmod yes_gid -n active_group
  7. [root@bgx ~]# tail -1 /etc/group
  8. active_group:x:5555:

3.groupdel删除组,

删除时需要注意,如果用户存在基本组则无法直接删除该组,如果删除用户则会移除默认的私有组,而不会移除基本组。

  1. # 私有组的情况,直接删除用户,组也就没了
  2. [root@bgx ~]# userdel jack
  3.  
  4. #删除组
  5. [root@bgx ~]# groupdel active_group
  6.  
  7. #删除用户附加组
  8. [root@bgx ~]# id lqz
  9. uid=1069(lqz) gid=5005(lqz) groups=5005(lqz),5004(devops)
  10. [root@bgx ~]# groupdel devops
  11. [root@bgx ~]# id lqz
  12. uid=1069(lqz) gid=5005(lqz) groups=5005(lqz)
  13. #无法删除用户基本组
  14. [root@bgx ~]# groupdel network_sa
  15. groupdel: cannot remove the primary group of user 'bgx_lqz'
  16. #只有删除用户或者用户变更基本后,方可删除该组

4 gpasswd设置组密码

使用gpasswd设置组密码[扩展,可以不会

  1. [root@bgx ~]# groupadd devops
  2. [root@bgx ~]# gpasswd devops
  3. Changing the password for group devops
  4. New Password:
  5. Re-enter new password:

5 newgrp切换基本组身份

使用newgrp命令切换基本组身份[扩展,可以不会

  1. #1.检查账户信息
  2. [root@bgx ~]# useradd lqz
  3. [root@bgx ~]# id lqz
  4. uid=1069(lqz) gid=5005(lqz) groups=5005(lqz)
  5. #2.切换普通用户
  6. [root@bgx ~]# su - lqz
  7.  
  8. #3.创建新文件,查看文件的属主和属组
  9. [lqz@bgx ~]$ touch file_roots
  10. [lqz@bgx ~]$ ll
  11. -rw-rw-r-- 1 lqz lqz 0 Jun 13 10:06 file_roots
  12. #4.使用newgrp切换到devops组
  13. [lqz@bgx ~]$ newgrp devops
  14. Password:
  15. #5.创建文件,检查属主和属组
  16. [lqz@bgx ~]$ touch file_test
  17. [lqz@bgx ~]$ ll
  18. -rw-rw-r-- 1 lqz lqz 0 Jun 13 10:06 file_roots
  19. -rw-r--r-- 1 lqz devops 0 Jun 13 10:08 file_test

修改组信息

groupmod

  1. -g 修改gid
  2. -n 修改组名

删除组

groupdel 删除组

 

原文链接:https://www.cnblogs.com/coderxueshan/p/17930301.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号