1.组的基本管理
[root@zls ~]# head -2 /etc/group root:x:0: bin:x:1:bin,daemon // /etc/group由':' 分割, 分割为4个字段,每个字段的具体含义如下: 字段名称 1.组的名称 2.组的密码(存在/etc/gshadow) 3.组GID信息 4.仅显示附加成员,基本成员不显示 [root@zls ~]# head -2 /etc/gshadow root::: bin:::bin,daemon // /etc/gshadow由 ':' 分割, 分割为4个字段,每个字段的具体含义如下: 字段名称 1.组名称 2.组密码 !:没有密码 3.组管理员 4.仅显示附加成员,基本成员不显示 组的分类 1.基本组 2.附加组
创建组,修改组,删除组,组创建密码,切换组身份
#添加组 groupadd -g:指定GID # groupadd zls_e -g 60000 #创建zls_e, gid为60000 #修改组 groupmod -g:修改GID # groupmod zls_e -g 5237 #删除组 groupdel 注意:如果组内有其他成员,则无法删除 #组创建密码(了解即可) gpasswd [root@oldboyedu ~]# gpasswd zls_a Changing the password for group zls_a New Password: 1 Re-enter new password: 1 #切换组的身份(了解即可,没什么用) newgrp (切换用户的组身份后,创建的文件通过ll查看,用户组权限会变为切换的组)
2.shell的分类
1.登录式shell
2.非登录式shell
3.交互式shell
4.非交互式shell
3.环境变量加载顺序
1)登录式shell /etc/profile age=10 /etc/profile.d/*.sh age=11 ~/.bash_profile age=12 ~/.bashrc age=13 /etc/bashrc age=14 2)非登录式shell (像输入bash命令) .bashrc /etc/bashrc /etc/profile.d/*.sh (所有的sh都加载一遍)
如果有需求,所有用户都需要加载的环境变量,和登录式shell 非登录式shell都支持,把环境变量放在:
/etc/bashrc
/etc/profile.d/*.sh
总结:
1.登录式shell,会加载5个地方的环境变量
2.非登录式shell,会加载3个地方的环境变量
2.如果环境变量中配置冲突,最后一个加载的会把之前的冲突的配置覆盖
4. 登录显示动画
vim /etc/motd 开机动画,登录界面(可以用来提示文件在哪里) _oo0oo_ 088888880 88" . "88 (| -_- |) 0\ = /0 ___/'---'\___ .' \\\\| |// '. / \\\\||| : |||// \\ /_ ||||| -:- |||||- \\ | | \\\\\\ - /// | | | \_| ''\---/'' |_/ | \ .-\__ '-' __/-. / ___'. .' /--.--\ '. .'___ ."" '< '.___\_<|>_/___.' >' "". | | : '- \'.;'\ _ /';.'/ - ' : | | \ \ '_. \_ __\ /__ _/ .-' / / ====='-.____'.___ \_____/___.-'____.-'===== '=---=' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 佛祖保佑 iii 永不死机
5.切换用户(登录式shell)
su - (加上-登录式shell,不加-非登陆式shell且不会进家目录,最好加上所有环境变量加载一遍) [root@localhost ~]# su - ldc
-c: 不切换用户的情况下,使用其他用户执行命令
[ldc@localhost ~]$ su -root -c 'rm -fr /root/.bashrc' # 会要求输入root密码,用root执行该命令
6.用户提权(一般企业禁止root用户登录, 其他用户需要提权然后才能sudo)
1)sudo (-l:查看sudo的权限 # sudo -l 查看当前用户权限)
下方方法为centos7提权方法:
usermod oldboy1 -G wheel # 添加附加组, 该组有sudu权限(oldboy1需要重连,就可使用sudo)
2) visudo 查看编辑用户权限
## Allow root to run any commands anywhere 用户 主机 身份 命令 root ALL=(ALL) ALL zls_a ALL=(ALL) ALL(该用户可以使用所有命令,非root要用sudo) ldc ALL=(ALL) /bin/vim(该用户只能执行vim命令,非root要用sudo) ## Allows people in group wheel to run all commands 允许在这个组里的人执行所有命令 %wheel ALL=(ALL) ALL
visudo修改的文件是/etc/sudoers, 如果有vim权限即可修改用户权限(最好使用visudo命令, 有检查语法错误, 防止同事修改问题)
visudo的一些配置
原来: ## These are groups of related commands... ## Networking (网络相关组) # Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ## Installation and management of software (安装相关组) # Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
下方进行修改: ## Allow root to run any commands anywhere root ALL=(ALL) ALL oldboy1 ALL=(ALL) NOPASSWD: ALL(NOPASSWD: ALL就不用输入密码,否则sudo输完密码过几分钟还要输密码) oldboy1 ALL=STORAGE,SOFTWARE (该用户只能运行STORAGE和SOFTWARE组里的命令)
3)sudo配置免密码
#1.普通用户执行sudo不需要输入密码配置 [root@zls ~]# visudo zls ALL=(ALL) /bin/rm, /bin/cp #默认 zls ALL=(ALL) NOPASSWD:/bin/rm, /bin/cp #修改后,使用rm和cp不用输密码 #2.默认普通用户无权删除 [zls@zls ~]$ rm -f /root/002 rm: cannot remove `/root/002': Permission denied #3.验证sudo免密码执行权限 [zls@zls ~]$ sudo rm -f /root/002
4)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
7.sudo企业案例
1)优化ssh禁止root用户登录(提权,不要给vim,vi,visudo,su,echo,cat) [root@oldboyedu ~]# vim /etc/ssh/sshd_config 修改禁止root用户登录 原来: #PermitRootLogin yes 修改成: PermitRootLogin no 修改ssh的端口 原来: #Port 22 修改成: Port 52013 2)重启ssh服务 (无法ssh登录root,可以su切换root。其他用户可用sudo,但要先提权) [root@oldboyedu ~]# systemctl restart sshd 3)关闭防火墙 [root@oldboyedu ~]# systemctl stop firewalld 4)visudo (sudo配置文件) User_Alias USER_SU = zls1,zls2,zls # 用户别名, 用于多用户的设置(非同一群组用户) Cmnd_Alias SU = /bin/su # 命令别名, 可用于多命令设置 USER_SU ALL=(ALL) NOPASSWD:SU # 编辑多用户权限