目录

组的基本原理

组账户信息保存在/etc/group/etc/gshadow 两个文件中.

/etc/group组账户信息

[root@zls ~]# head -2 /etc/group
root:x:0:
bin:x:1:bin,daemon // /etc/group由':' 分割, 分割为4个字段,每个字段的具体含义如下:
字段名称
1.组的名称
2.组的密码(存在/etc/gshadow)
3.组GID信息
4.仅显示附加成员,基本成员不显示

/etc/gshadow组密码信息

[root@zls ~]# head -2 /etc/gshadow
root:::
bin:::bin,daemon // /etc/gshadow由 ':' 分割, 分割为4个字段,每个字段的具体含义如下:
字段名称
1.组名称
2.组密码
3.组管理员
4.仅显示附加成员,基本成员不显示

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

//创建基本组, 不指定gid
[root@zls ~]# groupadd no_gid
[root@zls ~]# tail -n1 /etc/group
no_gid:x:1000: //创建基本组, 指定gid为5555
[root@zls ~]# groupadd -g 5555 yes_gid
[root@zls ~]# tail -n1 /etc/group
yes_gid:x:5555: //创建系统组,gid从201-999
[root@zls ~]# groupadd -r sys_group
[root@zls ~]# tail -n1 /etc/group
sys_group:x:990:

2.使用groupmod 命令新增组

//-g 修改组gid
[root@zls ~]# groupmod -g 1111 no_gid
[root@zls ~]# tail -1 /etc/group
no_gid:x:1111: //-n 修改组名称
[root@zls ~]# groupmod -n active_group yes_gid
[root@zls ~]# tail -1 /etc/group
active_group:x:5555:

3.使用groupdel删除组

  • 该命令 没有特殊选项,如果一个用户有基本组和附加组,只能删除附加组,不能删除基本组
#删除组
[root@zls ~]# groupdel active_group #删除用户附加组
[root@docker ~]# id zls
uid=1069(zls) gid=5005(zls) groups=5005(zls),5004(devops)
[root@docker ~]# groupdel devops
[root@docker ~]# id zls
uid=1069(zls) gid=5005(zls) groups=5005(zls) #无法删除用户基本组
[root@zls ~]# tail -n1 /etc/group
network_sa:x:5008:
[root@zls ~]# groupdel network_sa
groupdel: cannot remove the primary group of user 'zls_zls'
#只有删除用户或者用户变更基本后,方可删除该组

4.使用gpasswd设置组密码【了解即可】

[root@zls ~]# groupadd devops
[root@zls ~]# gpasswd devops
Changing the password for group devops
New Password:
Re-enter new password:

5.使用newgrp命令切换基本组身份[了解即可]

//检查账户信息
[root@docker ~]# useradd zls
[root@docker ~]# id zls
uid=1069(zls) gid=5005(zls) groups=5005(zls) //切换普通用户
[root@docker ~]# su - zls //创建新文件,并验证权限
[zls@docker ~]$ touch file_roots
[zls@docker ~]$ ll
-rw-rw-r-- 1 zls zls 0 Jun 13 10:06 file_roots //切换组信息
[zls@docker ~]$ newgrp devops
Password: //建立文件,检查权限
[zls@docker ~]$ touch file_test
[zls@docker ~]$ ll
total 0
-rw-rw-r-- 1 zls zls 0 Jun 13 10:06 file_roots
-rw-r--r-- 1 zls devops 0 Jun 13 10:08 file_test

用户身份切换

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

如何在普通用户的情况下,完成日常工作?

1)su 切换用户,使用普通用户登录,然后使用su命令切换到root。

优点:简单,方便

缺点:需要知道root密码,不安全,切换到root没有日志审计功能

2)sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户。

优点:安全,方便

缺点:复杂

1.Shell分类

交互式shell    //等待用户输入执行的命令(终端操作,需要不断提示)
非交互式shell //执行shell脚本, 脚本执行结束后shell自动退出 登陆shell //需要输入用户名和密码才能进入shell su - zls
非登陆shell //不需要输入用户和密码就能进入,比如执行sh, bash, su username //查看登陆shell
[root@zls ~]# pstree //临时设置,永久设置需要写配置文件
[root@zls ~]# export PS1='[\h@\u \t]#'
[zls@root 02:06:28]#

2.bash shell配置文件

Bash的配置文件保存用户的工作环境

个人配置文件: ~/.bash_profile ~/.bashrc
全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc profile类文件, 设定环境变量, 登陆前运行的脚本和命令
bashrc 类文件, 设定本地变量, 定义命令别名 全局配置和个人配置设置冲突, 优先使用个人配置准

3.shell配置文件应用顺序

//登录式shell配置文件执行顺序
/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc //非登陆式shell配置文件执行顺序
~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh #验证登陆shell和非登陆shell配置文件执行顺序, 在每个配置文件加入一段 “echo”即可。
#最后通过登陆shell和非登录shell方式登陆linux, 即可验证执行顺序。

扩展登录提示信息

开机动画 vim motd

                   _ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
佛祖保佑 永不宕机
https://www.driverzeng.com // _ooOoo_
// o8888888o
// 88" . "88
// (| -_- |)
// O\ = /O
// ____/`---'\____
// . ' \\| |// `.
// / \\||| : |||// \
// / _||||| -:- |||||- \
// | | \\\ - /// | |
// | \_| ''\---/'' | |
// \ .-\__ `-` ___/-. /
// ___`. .' /--.--\ `. . __
// ."" '< `.___\_<|>_/___.' >'"".
// | | : `- \`.;`\ _ /`;.`/ - ` : | |
// \ \ `-. \_ __\ /__ _/ .-` / /
// ======`-.____`-.___\_____/___.-`____.-'======
// `=---='
//
// .............................................
// 佛祖镇楼 BUG辟易
// 佛曰:
// 写字楼里写字间,写字间里程序员;
// 程序人员写程序,又拿程序换酒钱。
// 酒醒只在网上坐,酒醉还来网下眠;
// 酒醉酒醒日复日,网上网下年复年。
// 但愿老死电脑间,不愿鞠躬老板前;
// 奔驰宝马贵者趣,公交自行程序员。
// 别人笑我忒疯癫,我笑自己命太贱;
// 不见满街漂亮妹,哪个归得程序员? /**
*        ┏┓  ┏┓+ +
*       ┏┛┻━━━┛┻┓ + +
*       ┃      ┃  
*       ┃   ━   ┃ ++ + + +
*       ████━████ ┃+
*       ┃       ┃ +
*       ┃   ┻   ┃
*       ┃      ┃ + +
*       ┗━┓   ┏━┛
*         ┃   ┃           
*         ┃   ┃ + + + +
*         ┃   ┃    Code is far away from bug with the animal protecting
*         ┃   ┃ +     神兽保佑,代码无bug  
*         ┃   ┃
*         ┃   ┃  +         
*         ┃    ┗━━━┓ + +
*         ┃      ┣┓
*         ┃       ┏┛
*         ┗┓┓┏━┳┓┏┛ + + + +
*         ┃┫┫ ┃┫┫
*         ┗┻┛ ┗┻┛+ + + +
*/

4.如果全局配置和个人配置出现冲突, 那么如何验证呢?

编辑全局配置 /etc/profile     新增一行: PS1='[\h@\u \t]#'
[zls@root 02:16:57]# //当前终端shell环境 编辑个人配置 ~/.bash_profile 新增一行: PS1='[\u@\H]#' [zls@root 02:18:27]#su zls_zls
[zls_zls@zls root]$ [zls@root 02:18:34]# su - zls_zls
[zls_zls@zls.com]#

5.创建用户,并登录系统

[root@zls ~]# useradd zls
[root@zls ~]# echo "123"|passwd --stdin zls //使用zls用户登录当前Linux系统
➜ ~ ssh zls@192.168.56.111
zls@192.168.56.111's password:
[zls@zls ~]$ //可以使用whoami查看当前登录用户
[zls@zls ~]$ whoami
zls

6.切换用户,使用命令su [-] username

su命令后面跟-代表进入登陆式shell 如果su命令后不加-代表进入非登陆式shell,他们之间的区别在于加载的环境变量不一样。

普通用户su -代表直接切换至root用户身份, 但需要输入root用户密码。

[zls@zls ~]$ pwd
/home/zls //不加 '-' 切换到root账户下时,当前目录没有变化
[zls@zls ~]$ su
密码:
[root@zls zls]# pwd
/home/zls
[root@zls zls]# exit
exit //加 '-'切换到root账户,当前目录为root账户的家目录。
[zls@zls ~]$ su -
密码:
[root@zls ~]# pwd
/root

7.以某个用户的身份执行某个服务,使用命令su -c username

[root@zls ~]# su - zls -c 'ifconfig'
[root@zls ~]# su - zls -c 'ls ~'

5.用户身份提权

1.su命令sudo命令

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

2.Centos7提权

[root@zls ~]# usermod zls -G wheel
//日志审计
[root@zls ~]$ sudo tail -f /var/log/secure

3.CentOS6提权

#1.系统安装后就有sudo命令,如果没有sudo命令,可通过如下方式安装
[root@zls ~]# yum install -y sudo #2.使用`visudo`命令编辑sudo配置文件, 相当于 vim /etc/sudoers`配置文件
[root@zls ~]# visudo #会对配置进行验证
zls ALL=(ALL) /bin/rm, /bin/cp #新增 #3.配置选项详解
1.用户名 2.主机名 3.角色名 4.命令名
root ALL= (ALL) ALL
zls ALL 使用最高角色执行 /bin/rm, /bin/cp #允许使用sudo执行命令
zls ALL=(ALL) NOPASSWD:/bin/cp, /bin/rm //不需要密码使用rm、cp命令 #4.使用visudo -c检查配置文件
[root@zls ~]# visudo -c
/etc/sudoers: parsed OK

4.普通用户验证sudo权限

1.切换普通用户
[root@zls ~]# su - zls 2.检查普通用户sudo权限明细
[zls@zls ~]$ sudo -l
...
User zls may run the following commands on this host:
(ALL) /bin/rm, (ALL) /bin/cp 3.普通用户删除opt目录,删除失败
[zls@zls ~]$ rm -rf /opt/
rm: cannot remove `/opt': Permission denied 4.使用sudo提权,验证用户权限是否可用,需要输入普通用户的密码
[zls@zls ~]$ sudo rm -rf /opt

5.sudo免密码配置选项

#1.普通用户执行sudo不需要输入密码配置
[root@zls ~]# visudo
zls ALL=(ALL) /bin/rm, /bin/cp #默认
zls ALL=(ALL) NOPASSWD:/bin/rm, /bin/cp #修改后 #2.默认普通用户无权删除
[zls@zls ~]$ rm -f /root/002
rm: cannot remove `/root/002': Permission denied #3.验证sudo免密码执行权限
[zls@zls ~]$ sudo rm -f /root/002

6.sudo配置组

//如果每增加一个用户需配置一行sudo,这样设置非常麻烦。所以可以进行如下设置

%zls  ALL=(ALL)     NOPASSWD:/bin/rm, /bin/cp  #新增组
//group1这个组的所有用户都拥有sudo的权力。接下来只需要将用户加入该组即可。 //创建用户加入该组
[root@zls ~]# groupadd zls
[root@zls ~]# useradd zls1 -g zls
[root@zls ~]# useradd zls2 -g zls //root用户建立目录
[root@zls ~]# mkdir /root/zls_sudo //切换用户并删除测试
[root@zls ~]# su - zls1
[zls1@zls ~]$ rm -rf /root/zls_sudo
rm: cannot remove `/root/zls_sudo': Permission denied //使用sudo
[zls1@zls ~]$ sudo rm -rf /root/zls_sudo

当然配置文件/etc/sudoers包含了诸多配置项,可以使用命令man sudoers来获得帮助信息。

下面介绍一个很实用的案例,我们的需求是将Linux服务器设置成如下:

1.仅允许使用普通账户登陆Linux服务器,禁止root直接登录

2.可以让普通用户不输入密码就能sudo su -切换到root账户

//禁止root用户登陆
[root@zls ~]# sed -i 's@#PermitRootLogin yes@PermitRootLogin no@g' /etc/ssh/sshd_config
[root@zls ~]# systemctl restart sshd //配置sudo权限
[root@zls ~]# visudo
User_Alias USER_SU = zls1,zls2,zls
Cmnd_Alias SU = /bin/su
USER_SU ALL=(ALL) NOPASSWD:SU //使用root登陆服务器失败
➜ ~ ssh root@192.168.56.11
root@192.168.56.11's password:
Permission denied, please try again. //使用普通用户登陆服务器
➜ ~ ssh zls@192.168.56.11
zls@192.168.56.11's password:
Last login: Mon Oct 30 09:28:21 2017 from 192.168.56.2 //使用sudo提权至root用户
[zls@zls ~]$ sudo su -
[root@zls ~]#
sudo企业案例
1)优化ssh禁止root用户登录
[root@oldboyedu ~]# vim /etc/ssh/sshd_config
修改禁止root用户登录
原来:
#PermitRootLogin yes
修改成:
PermitRootLogin no 修改ssh的端口
原来:
#Port 22
修改成:
Port 52013 2)重启ssh服务
[root@oldboyedu ~]# systemctl restart sshd 3)关闭防火墙
[root@oldboyedu ~]# systemctl stop firewalld 4)visudo
User_Alias USER_SU = zls1,zls2,zls
Cmnd_Alias SU = /bin/su
USER_SU ALL=(ALL) NOPASSWD:SU
7.sudo执行流程:

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

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

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

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

Linux用户的基本操作3 (组的基本管理,用户提权)的更多相关文章

  1. Linux上查看用户名和组并把特定用户放到特定的组之下

    cat /etc/passwd             //查看所有的用户信息 cat /etc/passwd|grep 用户名       //查看某一个用户的信息 cat /etc/group   ...

  2. Linux 用户管理和提权

    Linux ⽀持多个⼈使⽤同⼀个⽤户登录系统, Windows 在修改组策略的情况下,也可以多个⼈使⽤同⼀个⽤户登录 远程连接Linux的⽅式:SSH协议 远程连接Windows的⽅式:RDP协议 安 ...

  3. Linux:常用命令讲解(系统、防火墙、提权与文件传输)

    一.系统用户操作指令 一般在 Linux 系统中有多个账号,但一般不推荐使用 root 账号,因为 root 账号的权限太大,如果账号泄露会有安全隐患: 一般配置软件时也不要在 root 账号下进行: ...

  4. Linux安全攻防:使用TRAP实现持续控制和提权

    ATT&CK TRAP技术说明 在ATT&CK中,TRAP属于事件触发执行的一种技术,可以用于持续控制(persistence)和提权(privilege escalation). T ...

  5. linux系统学习笔记:文件、目录、用户

    本篇主要从stat函数开始,逐个说明stat结构的每一个成员,以此来了解文件的所有属性.同时将说明修改这个属性的各个函数. 一.文件 使用stat函数族得到和文件有关的信息结构. #include & ...

  6. linux和windows互传文件/用户配置文件和密码配置文件/用户组管理/用户管理

    2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理 3.3 用户管理 linux和windows互传文件 显示日期date [root@centos_1 ...

  7. Linux组和提权

    目 录 第1章 组命名管理**    1 1.1 group组信息和密码信息    1 1.1.1 /etc/group 组账户信息    1 1.1.2 /etc/gshadow 组密码信息     ...

  8. Linux用户提权管理方案

    提权管理方案背景: 如果一个公司有10余个运维或网络安全人员,同时管理服务器,切换到管理员用户时(su - root),必须要有root管理员密码,如果其中一人修改过root密码,其他用户则登录不了, ...

  9. Linux提权-suid提权

    0x1 suid概念 通俗理解为其他用户执行这个程序是可以用该程序所有者/组的权限 0x2 suid提权 简单理解为,一个文件有s标志(权限中包含s),并且对应的是root权限,那么当运行这个程序时就 ...

  10. linux提权方法(不断总结更新)

    目录 1.suid提权 2.rbash绕过 3.git提权 4.Linux Kernel 4.4.x (Ubuntu 16.04) - 'double-fdput()' bpf(BPF_PROG_LO ...

随机推荐

  1. python常用函数 L

    lstrip(str) 删除字符串左边的字符,支持传入参数. 例子: ljust(int) 格式化字符串,左对齐,支持传入填充值. 例子: loads(json) 将json字符串转换为dict. 例 ...

  2. Class.forName的作用

    在java语言中,任何类只有被装载到JVM上才能运行.Class.forName()方法的作用就是把类加载到JVM中,它会返回一个与带有给定字符串明的类或者接口相关联的Class对象,并且JVM会加载 ...

  3. 洛谷P3830 随机树(SHOI2012)概率期望DP

    题意:中文题,按照题目要求的二叉树生成方式,问(1)叶平均深度 (2)树平均深度 解法:这道题看完题之后完全没头绪,无奈看题解果然不是我能想到的qwq.题解参考https://blog.csdn.ne ...

  4. 【串线篇】sql映射文件-分布查询(下)cellection的1-n

    1.场景 一个门人手一把钥匙 1-n 一个Lock对应一个Key集合(collection自动整成list) Map不是collection的子接口或者实现类.Map是一个接口. JavaBean:p ...

  5. PyQt5界面上调用subprocess.Popen会闪命令窗口的问题

    最近再做一个界面开发,主要实现的点击一个按钮,会执行adb安装应用程序的功能,在调试阶段一切都正常,但打包成一个exe安装程序,安装之后运行,点击按钮会闪一下adb的命令窗口 先列出subproces ...

  6. TP、FP、FN、TN的含义

    true positive(被正确分类的正例) false negative(本来是正例,错分为负例) true negative(被正确分类的负例) false positive(本来是负例,被错分 ...

  7. SecureCRT 多窗口 批量操作Linux

    1.打开多个窗口 2.Window --> Tile Verically将窗口并列展开 3.右击空白部分选择弹出下方的命令窗口 4.右击命令行窗口,选择发送命令至所有窗口 5.完成

  8. 网站升级HTTPS教程

    远程桌面连接工具 由于运营商的肆意劫持,越来越多的网站开始使用HTTPS协议,开启HTTPS会优待提升排名,我减少被劫持页面等等   现在越来越多的网站开始使用HTTPS协议,其实百度从2014年底就 ...

  9. HDU 5667 构造矩阵快速幂

    HDU 5667 构造矩阵快速幂 题目描述 解析 我们根据递推公式 设 则可得到Q的指数关系式 求Q构造矩阵 同时有公式 其中φ为欧拉函数,且当p为质数时有 代码 #include <cstdi ...

  10. webbench(web性能压力测试工具)

    在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.但是,在压力测试中存在一个共性,那就是压力测试的结果 ...