linux系统用户管理(二)
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系统用户管理(二)的更多相关文章
- linux系统用户管理(一)
Linux系统用户管理1.用户管理*****2.Linux用户命令****3.用户创建的原理***4.密码管理***5.组命令管理**6.身份切换*****7.sudo提升权限***** 我们现在所使 ...
- 实验三:Linux系统用户管理及VIM配置
项目 内容 这个作业属于哪个课程 班级课程的主页链接 这个作业的要求在哪里 作业要求链接地址 学号-姓名 17043133-木腾飞 学习目标 1.学习Linux系统用户管理2.学习vim使用及配置 实 ...
- 实验三 Linux系统用户管理及VIM配置
项目 内容 这个作业属于哪个课程 班级课程的主页链接 这个作业的要求在哪里 作业要求链接接地址 学号-姓名 17041428-朱槐健 作业学习目标 1.学习Linux系统用户管理 2.学习vim使用 ...
- Linux系统用户管理
一.Linux账户 广义上讲,Linux的账户包括用户账户和组账户两种. Linux系统下的用户账户有两种,普通用户和超级用户.普通用户在系统中的任务就是普通工作,管理员在系统上的任务就是对普通用户和 ...
- linux 下用户管理
linux 下用户管理 一.用户的分类 1.超级用户:root UID=0 2.系统用户:不需要登录系统,对应用程序服务,主要维护系统的正常运行:UID = 1 ~ 499(RHEL7 = 1 ~ 9 ...
- linux系统--用户和用户组
一.用户和用户组的概念 用户:使用操作系统的人 用户组:具有相同系统权限的一组用户.在linux系统中可以存在多个用户组 1.1 /etc/group 这里存储当前系统中所有用户组的信息 每一行对应一 ...
- 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 ...
- 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 ...
- 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网络知识 第十五节课 ...
随机推荐
- POJ - 1127 Jack Straws(几何)
题意:桌子上放着n根木棍,已知木棍两端的坐标.给定几对木棍,判断每对木棍是否相连.当两根木棍之间有公共点或可以通过相连的木棍间接的连在一起,则认为是相连的. 分析: 1.若线段i与j平行,且有部分重合 ...
- 51nod 1284:2 3 5 7的倍数 容斥原理
1284 2 3 5 7的倍数 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数. 例如N ...
- SEO教程:快速增加360搜索引擎收录,360自动推送批量推送版
上次改编了一下百度的JS推送代码,实现了批量推送 传送门>>>百度链接提交-js代码推送批量推送版 这次我们来研究360js自动推送代码. <script> (funct ...
- php中const和define的区别
define部分:宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段.(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议.)宏的语法为:#define 宏名称 宏值作为一种建议和一种广大 ...
- rabbitmq设置队列消息存活时间
public static final int ALIVETIME = 600000; public static final String QUEUE = "hnyz_gs_queue&q ...
- MySQL-TPS,QPS到底是什么
计算TPS,QPS的方式 qps,tps是衡量数据库性能的关键指标,网上普遍有两种计算方式 TPS,QPS相关概念 QPS:Queries Per Second 查询量/秒,是一台服务 ...
- Restful设计相关
1.get,从服务器获取资源. 2.post 新增资源. 3.put 更新完整资源. 4.patch 更新部分资源. 5. delete 删除资源.
- Ubuntu apt install 下载软件很慢的解决办法
1.打开/etc/apt/sources.list 将内容替换为以下内容(注意把sources.list文件备份一下) deb http://mirrors.aliyun.com/ubuntu/ xe ...
- EditText制作简单的登录界面
EditText与之前的TextView和Button的用法大体相同,用法案例如下: activity_edit_text.xml: <?xml version="1.0" ...
- Est数据库
Est--编码序列,gene 片段且具有标签 其中,est数据库中是类似测序1.测序2.测序3这样的序列.实验室测得的序列是cDNA,通过上图方法拼接,电脑克隆(dbest).如果有overlap则认 ...