5.组命令管理**
组账户信息保存在/etc/group和/etc/gshadow两个文件中

/etc/group 组账户信息

[root@localhost ~]# head -2 /etc/group
root:x:0:
bin:x:1:

// /etc/group由“:”分割成4个字段,每个字段具体含义如下
字段名称             注释说明
1.组账户名称      //组的名称
2.密码占位符      //组的密码(存在/etc/gshadow)
3.组GID              //组GID的信息
4.组成员             //这里仅显示附加成员,基本成员不显示

/etc/gshadow 组密码信息
[root@localhost ~]# head -2 /etc/gshadow
root:::
bin:::

// /etc/gshadow由“:”分割成4个字段,每个字段具体含义如下
字段名称             注释说明
1.组账户名称       //组的名称
2.密码占位符       //组密码
3.组GID               //组管理员
4.组成员              //这里仅显示附加成员,基本成员不显示

使用groupadd命令新增组
语法:groupadd [-g GID] groupname
//不指定gid默认从1000开始
[root@localhost ~]# groupadd gtest
[root@localhost ~]# tail -1 /etc/group
gtest:x:5004:

//'-g'指定gid
[root@localhost ~]# groupadd -g 5555 gtest2
[root@localhost ~]# tail -1 /etc/group
gtest2:x:5555:

//'-r'创建系统组,gid从201-999
[root@localhost ~]# groupadd -r test_test
[root@localhost ~]# tail -1 /etc/group
test_test:x:995:

使用groupmod命令修改组信息
//-g 修改组gid
[root@localhost ~]# groupmod -g 5600 gtest2
[root@localhost ~]# tail -5 /etc/group
gtest2:x:5600:

//-n 修改组名称
[root@localhost ~]# groupmod -n gtestx gtest2
[root@localhost ~]# tail -1 /etc/group
gtestx:x:5600:

使用groupdel删除组
//该命令没有特殊选项,如果一个用户有基本组和附加组,只能删除附加组,不能删除基本组

//删除组
[root@localhost ~]# groupdel gtestx

//删除用户附加组
[root@localhost ~]# tail /etc/group
dba:x:1004:oldgirl
students:x:1005:oldgirl
[root@localhost ~]# groupdel students

//无法删除用户基本组
[root@localhost ~]# tail /etc/group
oldboy1:x:1001:
[root@localhost ~]# groupdel oldboy1
groupdel: cannot remove the primary group of user 'oldboy1'
//只有删除用户或者用户变更基本后,方可删除该组

使用gpasswd设置组密码
[root@localhost ~]# gpasswd gtest
Changing the password for group gtest
New Password:
Re-enter new password:

使用newgrp命令切换基本组身份
//检查账户信息
[root@localhost ~]# id dba
uid=998(dba) gid=1004(dba) groups=1004(dba)

//切换普通用户
[root@localhost ~]# su - oldgirl

//创建新文件,并验证权限
[root@localhost ~]# touch group_test
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1577 Oct 18 18:46 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Oct 29 21:03 group_test

//切换组信息
[xiao@localhost ~]$ newgrp gtest
Password:
[xiao@localhost ~]$ id
uid=1002(xiao) gid=5004(gtest) groups=5004(gtest),1002(xiao)

//建立文件,检查权限
[xiao@localhost ~]$ touch group_new
[xiao@localhost ~]$ ll
total 0
-rw-rw-r-- 1 xiao xiao 0 Oct 29 21:15 group_new

6.身份切换*****
Linux系统中,有时候普通用户有些事情是没办法操作,除非是root用户才能做到,这时就需要临时切换到root身份来做事了,
那么在学习如何切换用户之前,我们先来了解下用户工作环境

shell分类
交互式shell 等待用户输入执行提交的命令(终端操作),exit退出
非交互式shell 执行shell脚本,脚本执行结束shell自动退出
1.把交互命令换成同等功能非交互命令
2.提前做好应答文件

登陆shell 需要输入用户名和密码才能进入shell,su - oldboy
非登陆shell 不需要输入用户和密码就能进入,比如执行,sh,bash

//查看登陆shell
yum install -y psmisc
[root@localhost ~]# pstree

//临时设置,永久设置需要写配置文件
[root@localhost ~]# export PS1='[\h@\u \t]#'
[localhost@root 21:36:33]#
bash配置文件
Bash的配置文件保存用户的工作环境

个人配置文件:~/.bash_profile ~/.bashrc
全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc

profile类文件,设定环境变量,登陆前运行的脚本和命令
bashrc类文件,设定本地变量,定义命令别名
字符串环境变量文件:/etc/locale.conf(centOS7)

全局配置和个人配置设置冲突,以个人设置为准
shell配置文件顺序
//登录式shell配置文件执行顺序
/etc/profile-->/etc/profile.d/*.sh-->.bash_profile-->~/.bashrc-->/etc/bashrc

//非登陆式shell配置文件执行顺序
~/.bashrc-->/etc/bashrc-->/etc/profile.d/*d.sh

//如何验证登录shell和非登陆shell,配置文件执行顺序,只需要在每个配置文件加入一段'echo'即可
注意:添加的echo字段必须放置在第二行
//最后通过登录shell和非登陆shell方式登录linux,即可验证执行顺序。
如果全局配置和个人配置出现冲突,那么如何验证呢

编辑全局变量 /etc/profile 新增一行:PS1='[\h@\u \t]#'
[localhost@root 22:10:43]# //当前shell终端环境

编辑个人配置/home/xiao/.bash_profile 新增一行:PS1='\u@\H#'

[localhost@root 22:19:37]#su xiao
[xiao@localhost root]$

[localhost@root 22:20:28]#su - xiao
[xiao@localhost.localdomain]#

创建用户,并登录系统
[localhost@root 22:23:10]#useradd xiao1
[localhost@root 22:23:23]#echo '123'|passwd --stdin xiao1
Changing password for user xiao1.
passwd: all authentication tokens updated successfully.

//使用xiao1用户登录linux
ssh xiao1@10.0.1.31
[localhost@xiao1 20:27:43]#

//使用使用whoami查看当前登录用户
[xiao1@localhost ~]$ whoami
xiao1

切换用户,使用命令su [-] username
su命令后面-代表进入登陆式shell 否则代表进入非登陆式shell 只不过他们所执行的环境配置文件不一样。
普通用户su- 不加username时可以切换root用户,但需要输入密码。
超级管理员root用户使用su -切换普通用户不需要密码。
[xiao1@localhost ~]$ pwd
/home/xiao1

//不加'-'切换到root账户下时,当前目录没有变化
[xiao1@localhost ~]$ su
Password:
[root@localhost xiao1]# pwd
/home/xiao1

以某个用户的身份执行某个服务,使用命令su -c username
[root@localhost ~]# su - xiao -c 'ifconfig'
[root@localhost ~]# su - xiao -c 'ls ~'
hello profile
hello .bash_profile
group_new

7.sudo提升权限*****

su切换用户身份,如果每个普通用户都能切换到root身份,如果某个用户不小心泄露root的密码,那么系统会变得非常不安全
为了改进这个问题,从而产生了sudo这个命令。使用sudo执行一个root才能执行的命令是可以办到的,但是需要输入密码,这个密码
并不是root的密码而是用户自身的密码
默认只有root用户才能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的,即,使用visudo命令去编辑相关的配置
文件/etc/sudoers

//CentOS7提权方法,授权用户具有管理员所有的权限
[root@localhost ~]# usermod -G wheel xiao

//日志审计
[root@localhost tmp]# sudo tail -f /var/log/secure
系统安装后就有sudo命令,如果没有sudo命令,可通过如下方式安装
[root@localhost tmp]# yum install -y sudo
使用visudo命令编辑/etc/sudoers配置文件
//执行visudo,等于使用vi编辑sudoers配置文件
[root@localhost tmp]# visudo

//默认
root ALL=(ALL) ALL

//新增
oldboy ALL=(ALL) /bin/rm,/bin/cp
//root默认就拥有sudo最高权限,我们在改行下新增oldboy用户,让此用户拥有sudo权限

案例需求:
要求xiao用户能够添加删除修改所有用户属性(包括密码),但不包括root
visudo
xiao ALL=(ALL) /usr/sbin/user*,/usr/bin/passwd,!/usr/sbin/usermod * root,!/usr/bin/passwd * root,
!/usr/bin/passwd root
别名:
100 User_Alias USER=oldboy,xiao,%dba
101 Cmnd_Alias SU = /usr/sbin/user*,/usr/bin/passwd,!/usr/sbin/usermod * root,!/usr/bin/passwd * root,
!/usr/bin/passwd root
103 USER ALL=(ALL) SU

//使用visudo -c检查配置文件
[root@localhost tmp]# visudo -c
/etc/sudoers: parsed OK

sudo配置选项详解
//下面解释如上每行代表含义
用户名 主机名 角色名 命令名
root ALL= (ALL) ALL
oldboy ALL 使用最高角色执行 /bin/rm,/bin/cp
oldboy ALL=(ALL) NOPASSWD:/bin/rm,/bin/cp

普通用户验证sudo权限
//切换普通用户
[root@localhost ~]# su - xiao

//检查普通用户sudo权限明细
[xiao@localhost ~]$ sudo -l
....省略部分
User xiao may run the following commands on localhost:
(ALL) /usr/sbin/user*, /usr/bin/passwd, !/usr/sbin/usermod * root, !/usr/bin/passwd * root,
!/usr/bin/passwd root

//普通用户删除opt目录,删除失败
[xiao@localhost ~]$ rm -rf /opt/
rm: cannot remove ‘/opt/’: Permission denied

//使用sudo提权,验证用户权限是否可用,需要输入普通用户的密码
[xiao@localhost ~]$ sudo rm -rf /var/opt

sudo免密码配置选项
//普通用户执行sudo不需要输入密码配置
//修改前
oldboy ALL=(ALL) /bin/rm,/bin/cp
//修改后
oldboy ALL=(ALL) NOPASSWD:/bin/rm,/bin/cp

//默认普通用户无法删除
[xiao@localhost ~]$ rm -f /root/002
rm: cannot remove ‘/root/002’: Permission denied

//验证sudo免密码执行权限
[xiao@localhost ~]$ sudo rm -f /root/002
sudo配置组
//如果每增加一个用户需要配置一行sudo,这样设置太麻烦了,所以可以进行如下设置
//新增组
%oldboy ALL=(ALL) bin/rm,bin/cp
/group1这个组的所有用户都拥有sudo的权利,接下来只需要将用户加入该组即可

//创建用户加入该组
[root@localhost ~]# groupadd oldboy
[root@localhost ~]# useradd oldboy -g oldboy
[root@localhost ~]# useradd oldgirl -g oldboy

//root用户建立目录
[root@localhost ~]# mkdir /root/oldboy_sudo

//切换用户并删除测试
[root@localhost ~]# su - oldboy -c 'rm -rf /root/oldboy_sudo'
rm: cannot remove ‘/root/oldboy_sudo’: Permission denied

//使用sudo
[oldboy@localhost ~]$ sudo rm -rf /root/oldboy_sudo
当然配置文件/etc/sudoers包含了诸多配置项,可以使用命令man sudoers 来获得帮助信息

下面介绍一个很实用的案例,我们的需求是把linux服务器设置成这个样子,只允许使用普通账户登录Linux服务器,但可以让普通用户不输入密码就能
sudo su -切换到root账户。

//禁止root用户登录
[root@localhost ~]# sed -i 's@#PermitRootLogin yes@PermitRootLogin no@g' /etc/ssh/sshd_config
[root@localhost ~]# systemctl restart sshd

//配置sudo权限
[root@localhost ~]# visudo
User_Alias USER=oldboy,xiao,%dba
Cmnd_Alias SU = /usr/sbin/user*
USER ALL=(ALL) SU

sudo日志审计
通过sudo和syslog配合实现对所有用户进行权限的日志审计并记录日志集中管理,实施后让所有运维和开发执行的sudo命令都有记录可查,
杜绝了内部人员的操作安全隐患
sudo日志审计,专门针对sudo命令的系统用户记录其执行命令的相关信息,所谓sudo命令日志审计,并不记录普通用户的操作,而是记录执行
sudo命令的用户操作。

/var/log/message 公共日志
时间 地点(主机名) 人物(进程) 信息
/var/log/secure 安全日志

安装sudo、rsyslog
yum install -y sudo rsyslog

linux系统用户管理(二)的更多相关文章

  1. linux系统用户管理(一)

    Linux系统用户管理1.用户管理*****2.Linux用户命令****3.用户创建的原理***4.密码管理***5.组命令管理**6.身份切换*****7.sudo提升权限***** 我们现在所使 ...

  2. 实验三:Linux系统用户管理及VIM配置

    项目 内容 这个作业属于哪个课程 班级课程的主页链接 这个作业的要求在哪里 作业要求链接地址 学号-姓名 17043133-木腾飞 学习目标 1.学习Linux系统用户管理2.学习vim使用及配置 实 ...

  3. 实验三 Linux系统用户管理及VIM配置

    项目 内容 这个作业属于哪个课程 班级课程的主页链接 这个作业的要求在哪里 作业要求链接接地址 学号-姓名 17041428-朱槐健 作业学习目标  1.学习Linux系统用户管理 2.学习vim使用 ...

  4. Linux系统用户管理

    一.Linux账户 广义上讲,Linux的账户包括用户账户和组账户两种. Linux系统下的用户账户有两种,普通用户和超级用户.普通用户在系统中的任务就是普通工作,管理员在系统上的任务就是对普通用户和 ...

  5. linux 下用户管理

    linux 下用户管理 一.用户的分类 1.超级用户:root UID=0 2.系统用户:不需要登录系统,对应用程序服务,主要维护系统的正常运行:UID = 1 ~ 499(RHEL7 = 1 ~ 9 ...

  6. linux系统--用户和用户组

    一.用户和用户组的概念 用户:使用操作系统的人 用户组:具有相同系统权限的一组用户.在linux系统中可以存在多个用户组 1.1 /etc/group 这里存储当前系统中所有用户组的信息 每一行对应一 ...

  7. centos linux系统日常管理复习 CPU物理数逻辑核数,iftop ,iotop ,sar ,ps,netstat ,一网卡多IP,mii-tool 连接,ethtool速率,一个网卡配置多个IP,mii-tool 连接,ethtool速率 ,crontab备份, 第十八节课

    centos linux系统日常管理复习 物理CPU和每颗CPU的逻辑核数,uptime ,w,vmstat,iftop ,iotop ,sar ,ps,netstat ,一个网卡配置多个IP,mii ...

  8. centos linux系统日常管理3 服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,curl,ping ,telnet,traceroute ,dig ,nc,nmap,host,nethogs 第十六节课

    centos linux系统日常管理3  服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,cur ...

  9. centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课

    centos  Linux系统日常管理2  tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...

随机推荐

  1. redis--主从复制(读写分离)

    应用程序对服务器大量的读写,服务器很可能会宕机,导致数据丢失.为了解决这一问题就有了主从复制. 作用: 1:防止数据丢失 2:提高系统的吞吐量 主从复制:从服务器复制主服务器中的数据. 读写分离:应用 ...

  2. Java线程——线程之间的数据共享

      在 Java 传统线程机制中的共享数据方式,大致可以简单分两种情况: ➢ 多个线程行为一致,共同操作一个数据源.也就是每个线程执行的代码相同,可以使用同一个 Runnable 对象,这个 Runn ...

  3. 201771010123汪慧和《面向对象程序设计JAVA》第八周实验总结

    一.理论部分 1.接口 用interface声明,是抽象方法和常量值定义的集 合.从本质上讲,接口是一种特殊的抽象类. 在Java程序设计语言中,接口不是类,而是对类 的一组需求描述,由常量和一组抽象 ...

  4. go语言实现leetcode-242

    package main import ( "fmt" "reflect" ) func isAnagram(s string, t string) bool ...

  5. java数目

    第一部分: Java语言篇1 <Java编程规范>星级:适合对象:初级,中级介绍:作者James Gosling(Java之父),所以这本书我觉得你怎么也得读一下.对基础讲解的很不错. 2 ...

  6. IPO套路

    日前,温州市冠盛汽车零部件集团股份有限公司(以下简称:冠盛集团)在证监会官网更新了招股说明书,距离上会仅一步之遥.值得注意的是,这已经是公司第四次披露招股说明书,2018年6月,公司曾在IPO审核最严 ...

  7. 吴裕雄--天生自然TensorFlow高层封装:Estimator-自定义模型

    # 1. 自定义模型并训练. import numpy as np import tensorflow as tf from tensorflow.examples.tutorials.mnist i ...

  8. selector的使用,android:clickable="true"

    <ImageView android:id="@+id/patrol_buzzer_btn" android:layout_width="80dp" an ...

  9. 连词词组|relax|brings about a rise in|Chance are (high)that|Have no clue|Be passionate about|Tedious|overwhelmed by piles of

    efficient有效率的 effective有效果的 Make sb. Do Stuff没有复数 首先的三种表述:First off=To begin with=For starters 其次:Ad ...

  10. Linux-父进程wait回收子进程

    1.wait工作原理 (1).子进程结束时,系统向其父进程发送SIGCHILD信号 (2).父进程调用wait函数后阻塞 (3).父进程被SIGCHILD信号唤醒然后去回收僵尸子进程 (4).父子进程 ...