[root@oldboy ~]# grep -E -v "^#|^$" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
[root@oldboy ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
在我们创建一个用户时,如果创建时指定了参数,以指定参数为准,如果没有指定参数,那么就以系统中默认的两个配置文件(/etc/login.defs /etc/default/useradd)作为参照.
组的概念:
组就是一个逻辑概念。逻辑上将多个用户捆绑成一个组,当我们操作组的时候就相当于在操作组下的所有用户。
组的分类:
基本组:创建时指定组,就叫基本组 (只能有1个)
私有组:创建时没有指定组,默认创建与用户同名的组 (只有有1个)
附加组:对于用户来说,可以有N多个。 (有多个)
注意:
1.首先得有组。
2.在进行加入。
组的信息存放在那里?
/etc/group
/etc/gshadow
1.使用groupadd命令新增组,groupadd [-g GID] groupname
#创建基本组, 不指定gid
[root@bgx ~]# groupadd no_gid
#创建基本组, 指定gid为5555
[root@bgx ~]# groupadd -g 5555 yes_gid
#创建系统组,gid从201-999
[root@bgx ~]# groupadd -r sys_gid
2.使用groupmod命令修改组
#-g 修改组gid
[root@bgx ~]# groupmod -g 1111 no_gid
#-n 修改组名称
[root@oldboy ~]# groupmod yes_gid -n active_gid
3.groupdel删除组,默认删除私有组。如果要删除基本组,需要先删除基本组中的用户才可以删除该组。
[root@oldboy ~]# useradd ttboy -g active_gid
[root@oldboy ~]# useradd ggboy -G active_gid
[root@oldboy ~]# grep "active_gid" /etc/group
active_gid:x:12345:ggboy
[root@oldboy ~]# groupdel active_gid
groupdel:不能移除用户“ttboy”的主组
#移除主要的成员,就能删除该组
[root@oldboy ~]# userdel ttboy
[root@oldboy ~]# groupdel active_gid
[root@oldboy ~]# id ggboy
uid=6009(ggboy) gid=12346(ggboy) 组=12346(ggboy)
注意:删除一个组,必须确保该组的主要成员已经移除该组,就可以正常删除。(附加进来的成员无需考虑在内。)
/etc/profile.d/1.sh
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile
[root@oldboy ~]# bash
/etc/profile.d/1.sh
/etc/bashrc
/root/.bashrc
su - username属于登陆式shell,su username属于非登陆式shell,区别在于加载的环境变量不一样。
#1.普通用户使用su切换root
[xuliangwei@node1 ~]$ su
密码: #输入root的密码
[root@node1 xuliangwei]# pwd
/home/xuliangwei
#2.普通用户使用su -切换到root,会加载root的环境变量
[xuliangwei@node1 ~]$ su -
密码:
[root@node1 ~]# pwd
/root
#3.以某个用户的身份执行某个服务,使用命令su -c username
[root@bgx ~]# su - xuliangwei -c 'ifconfig'
[root@bgx ~]# su - xuliangwei -c 'ls ~'
#1.快速配置sudo方式
[root@node1 ~]# usermod bgx -G wheel
[root@node1 ~]$ sudo tail -f /var/log/secure #sudo审计日志
#1.切换普通用户
[root@bgx ~]# su - xuliangwei
#2.检查普通用户能提权的命令
[xuliangwei@xuliangwei ~]$ sudo -l
User xuliangwei may run the following commands on this host:
(ALL) ALL
#3.普通用户正常情况下是无法删除opt目录的
[xuliangwei@xuliangwei ~]$ rm -rf /opt/
rm: cannot remove `/opt: Permission denied
#4.使用sudo提权,需要输入普通用户的密码。
[xuliangwei@xuliangwei ~]$ sudo rm -rf /opt
方式一:
oldxu oldqiang = 运维
oldli oldguo = dba
1.需要真实创建这四个用户
[root@oldboy opt]# useradd oldxu
[root@oldboy opt]# useradd oldqiang
[root@oldboy opt]# useradd oldli
[root@oldboy opt]# useradd oldguo
#编辑sudo配置
[root@bgx ~]# visudo
# 1.使用sudo定义分组,这个系统group没什么关系
User_Alias OPS = oldxu,oldqiang
User_Alias DBA = oldli,oldguo
# 2.定义可执行的命令组, 便于后续调用
Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
Cmnd_Alias STORAGE = /bin/mount, /bin/umount
Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
# 3.使用sudo开始分配权限
OPS ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES
DBA ALL=(ALL) SOFTWARE,PROCESSES
#4.登陆对应的用户使用 sudo -l 验证权限
方式二:针对系统中真实的组来进行操作
oldxu oldqiang = 运维
oldli oldguo = dba
#1.添加两个真实的系统组, OPS DBA
[root@www ~]# groupadd OPS
[root@www ~]# groupadd DBA
#2.添加两个用户, OPS(oldxu oldqiang) DBA(oldli oldguo)
[root@oldboy ~]# usermod oldxu -G OPS
[root@oldboy ~]# usermod oldqiang -G OPS
[root@oldboy ~]# usermod oldguo -G DBA
[root@oldboy ~]# usermod oldli -G DBA
#3.记得添加密码
[root@oldboy ~]# echo "1" | passwd --stdin oldxu
[root@oldboy ~]# echo "1" | passwd --stdin oldguo
[root@oldboy ~]# echo "1" | passwd --stdin oldli
[root@oldboy ~]# echo "1" | passwd --stdin oldqiang
#4.在sudo中配置规则
[root@www ~]# visudo
Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
Cmnd_Alias STORAGE = /bin/mount, /bin/umount
Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
%OPS ALL=(ALL) SOFTWARE
%DBA ALL=(ALL) SOFTWARE,PROCESSES
#5.检查sudo是否配置有错
[root@www ~]# visudo -c
/etc/sudoers: parsed OK
#6.检查oldxu,和oldguo的sudo权限
[oldguo@oldboy ~]$ sudo -l
[sudo] password for oldguo:
User oldguo may run the following commands on oldboy:
(ALL) /bin/rpm, /usr/bin/yum, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
[oldxu@oldboy ~]$ sudo -l
[sudo] password for oldxu:
User oldxu may run the following commands on oldboy:
(ALL) /sbin/ifconfig, /bin/ping, /bin/rpm, /usr/bin/yum, /sbin/service, /usr/bin/systemctl start,
/bin/mount, /bin/umount, /bin/chown, /bin/chmod, /bin/chgrp, /bin/nice, /bin/kill,
/usr/bin/kill, /usr/bin/killall
所以sudo,并不能完全的解决所有的权限问题,仅仅是相对的。 (需要有一个操作审计平台,来监督每个人的操作。 jumpserver )