linux用户和群组管理

useradd
(1)-s:指定用户命令解释器 shell
(2)/bin/bash: 用户默认的
(3)/sbin/nologin: 虚拟用户 #例如,创建一个虚拟用户redhat uid为 888,
# useradd -u 888 -s /sbin/nologin -M redhat
(4)-M:不创建家目录
(5)-u: 指定用户uid
(6)-G:让用户属于多个用户组
userdel 删除用户,默认不会删除家目录(如果不用在/etc/passwd 里面将用户信息进行注释#)
(1)-r:删除用户及用户的家目录
usermod 修改用户属于多个用户组
-s:修改命令属性,例如修改命令解释器 usermod -s /bin/bash mysql
-G:让用户属于多个用户组
例如:
# usermod -G root student #让root与student属于同一组
# usermod -G '' student #‘’:把root踢出同一组

chown 修改用户的所有者

groupadd group_name 创建一个新用户组
groupdel group_name 删除一个用户组
groupmod -n new_group_name old_group_name 重命名一个用户组

useradd -c "备注" -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户
useradd user1 创建一个新用户
userdel -r user1 删除一个用户 ( '-r' 同时删除用户的家目录)
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性

passwd 修改口令
passwd user1 修改一个用户的口令 (只允许root执行)

chage -E 2009-12-31 user1 设置用户口令的失效期限
chage -l 查看用户口令的有效期
pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户
grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组
id 用户名查用户信息
UID 用户ID,0代表root,不能随便改用户ID为0
虚拟用户 用户ID为1-999(rhel7),用户ID为1-499(rhel6),满足系统服务在运行时,都要有一个用户和用户组,但是不能su - 切换。
普通用户 1000+(rhel7) 500+(rhel6)
GID 组ID
newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组

/etc/passwd #第1列:用户名,第2列:密码,第3列:用户说明信息,第4列:用户的家目录,第5列:用户使用的命令解释器shell
# grep -c redhat /tmp/rhcsa/redhat.txt #wc -l:显示行数,-c:也是显示行数
# grep redhat /tmp/rhcsa/redhat.txt | wc -l
/etc/skel #目录下面的内容是新用户家目录的模板
1、创建目录 /home/libin
2、修改权限和所有者
3、把/etc/skel 下面的内容 复制到/home/libin
(1)useradd alex (2)su -alex (3)\rm -fr /* (4)exit退出alex (5)重新登 alex 会出现 -bash-4.2
原因: 当前用户家目录下面 与环境变量相关的文件 被删除了 解决办法:(1)su -alex (2) cp /etc/skel/.bash* ~ (3)重新登录alex即可

cat /etc/passwd 列出系统上的所有用户
cat /etc/shadow 查看用户Hash
cat /etc/group 列出系统上的所有组
groups 当前用户所在的组
groups test test用户所在的组
getent group xxx xxx组里的用户
(1)grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' #列出所有的超级用户账户
(2)awk -F: 'length($2)==0 {print $1}' /etc/shadow #查看是否存在空口令用户
(3)awk '/\$1|\$6/{print $1}' /etc/shadow #查看远程登录的账号

posted @ 2022-07-11 00:51  LB_运维技术  阅读(83)  评论(0编辑  收藏  举报