用户组的管理
跟组相关的文件 /etc/group、/etc/gshadow
/etc/group 存放用户组的信息
[root@lixian ~]# head -1 /etc/group #以:为分割符,分为4列 root:x:0:
第一列: 组的名称
第二列: 组的密码的占位符
第三列: 组的ID ,GID
第四列: 哪个用户使用这个组作为附加组,这个地方存放的是用户的名称,多个逗号分隔
/etc/gshadow 存放用户组的密码信息
[root@qls ~]# head -1 /etc/gshadow #组的密码的信息 root::: ntp:!:: mail:::postfix
第一列: 组的名称
第二列: 组的密码,空或者!表示没有密码
第三列: 组的管理者
第四列: 哪个用户使用这个组作为附加组,这个地方存放的是用户的名称,多个逗号分隔
用户组的命令
groupadd #创建用户组
-g #指定的组的ID,GID
-r #创建系统组
[root@lixian ~]# groupadd user01 #创建一个组 [root@lixian ~]# grep 'user01' /etc/group user01:x:2016: [root@lixian ~]# groupadd -g 2018 user02 #创建组并且指定组的ID [root@lixian ~]# grep 'user02' /etc/group user02:x:2018: [root@lixian ~]# groupadd -r user04 #创建一个系统组 [root@lixian ~]# grep 'user04' /etc/group user04:x:663:
groupmod #修改组的信息
-g #修改组的ID
-n #修改组的名称
[root@lixian ~]# groupmod -g 2019 user01 #修改组的ID [root@lixian ~]# grep 'user01' /etc/group user01:x:2019: [root@lixian ~]# groupmod -n user10 user01 #修改组的名称 [root@lixian ~]# grep 'user01' /etc/group [root@lixian ~]# grep 'user10' /etc/group user10:x:2019:
groupdel #删除组
可以删除没有用户作为主组的组,如果只是附加组,删除不会提示
[root@lixian ~]# groupdel user10 #删除一个组 [root@lixian ~]# grep 'user10' /etc/group [root@lixian ~]# grep 'web' /etc/group oldboy1:x:2002:web web:x:2015: [root@lixian ~]# groupdel web #删除一个有用户作主组的组 groupdel: cannot remove the primary group of user 'web' [root@lixian ~]# usermod -g user03 web [root@lixian ~]# groupdel web
用户的授权
su #需要输入root的秘密才可以登录
sudo #权限控制,给指定的权限,但配置比较复杂
shell的类型
交互式shell #命令行的操作,交互式的操作shell
非交互式shell #脚本的执行方式,一键操作
登录式shell #根据用户名和密码的方式登录,单独的会话窗口
非登录式shell #在当前shell窗口执行,不需要用户名和密码,bash登录
个人的环境变量或别名配置文件
用户家目录下的.bashrc
用户家目录下的.bash_profile
全局的环境变量
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
profile类: 定义系统环境变量和系统登录所要执行的命令或者脚本
bashrc类: 设置本地的变量及别名,系统登录所要执行的命令或者脚本
登录式shell配置文件的执行顺序
1、/etc/profile
2、/etc/profile.d/*.sh
3、~/.bash_profile
4、~/.bashrc
5、/etc/bashrc
非登录式shell配置文件的执行顺序
1、~/.bashrc
2、/etc/bashrc
3、/etc/profile.d/*.sh
su username #切换的时候,加载的环境变量的配置文件不一样 ,只切换的用户的身份,没有切换环境
su – username #切换用户的身份的同时,也切换了环境/etc/profile
[root@lixian /etc]# su lx #使用 su 切换用户普通用户,不需要输入密码 [lx@lixian etc]$ cd /home/ [lx@lixian home]$ su root #普通用户切换到其他用户是需要密码的 Password: [root@lixian /home]# su - lx #使用 su - 切换用户 Last login: Mon Dec 16 15:04:44 CST 2019 on pts/1 [lx@lixian ~]$
以其他用户的身份执行命令
[root@lixian ~]# su - test -c "pwd" #以其他用户的身份执行命令 /home/test
sudo提权
sudo #针对某一个命令的权限,让一个普通用户拥有高权限
root用户才能配置
visudo #配置sudo权限,编辑/etc/suduers
和root用户有个相同的组——wheel组,系统日志管理
[root@lixian ~]# useradd lx -G wheel #给lx用户添加到wheel组 [root@lixian ~]# id lx uid=1000(lx) gid=1000(lx) groups=1000(lx),10(wheel) [root@lixian ~]# echo '1' |passwd --stdin lx #设置密码 [root@lixian ~]# su - lx [lx@lixian ~]$ rm -rf /opt/ #直接删除是删不掉的 rm: cannot remove ‘/opt/’: Permission denied [lx@lixian ~]$ sudo mkdir /opt #需要用sudo,然后删除
具体给某个用户设置权限
[root@lixian ~]# useradd dev01 [root@lixian ~]# echo '1' |passwd --stdin dev01 [root@lixian ~]# visudo #设置具体权限 dev01 ALL=(ALL) /bin/cat [root@lixian ~]# su - dev01 [dev01@lixian ~]$ sudo -l #查看设置的权限 User dev01 may run the following commands on qls: (ALL) /bin/cat [dev01@lixian ~]$ cat /var/log/secure cat: /var/log/secure: Permission denied [dev01@lixian ~]$ sudo cat /var/log/secure #使用sudo来使用权限 Dec 16 18:38:48 qls sudo: pam_unix(sudo:session): session opened for user root by root(uid=0)
visudo设置语法:
dev01 ALL=(ALL) /bin/cat,/bin/yum,/bin/*
用户 主机=角色 命令 多个命令使用逗号分隔
/bin/* 表示/bin目录下的所有目录
无密码执行命令,在命令之前加 NOPASSWD:
配置完之后,可以使用visudo -c 检查语法 。
sudo的设置方法
①:visudo认可的组,不是真实系统组
Cmnd_Alias READ = /bin/cat #命令的别名
DEV ALL=(ALL) NOPASSWD: READ #授权
给用户设置权限READ相当于设置权限 /bin/cat
②:真实的组
[root@lixian ~]# groupadd dev
[root@lixian ~]# usermod -g dev dev01
[root@lixian ~]# usermod -g dev dev02
#visudo设置
%dev ALL=(ALL) NOPASSWD: READ,SOFTWARE
案例:禁止root用户远程登录
禁止root用户远程登录,使用普通用户进行远程登录,免密的切换到root。
#进行配置root禁止远程登录 [root@lixian ~]# vim /etc/ssh/sshd_config 38 PermitRootLogin no #重启对应的服务 [root@lixian ~]# systemctl restart sshd #创建普通用户 [root@lixian ~]# useradd yunwei [root@lixian ~]# echo '1' | passwd --stdin yunwei #visuod设置 yunwei ALL=(ALL) NOPASSWD: /bin/su #使用普通用户登录 [C:\~]$ ssh yunwei@10.0.0.100