账号、群组管理是什么?
账号、群组管理指的是对linux用户的账号、群组信息进行的操作
相关文件介绍
/etc/passwd
文件 /etc/passwd 记录了使用者的账号等信息
以 : 分割,分别为
- 账号名
- 密码(已放到/etc/shadow)
- UID(0为系统管理员,1-999为系统预留,1000-6000为一般用户)
- GID(与/etc/group第三列对应)
- 账号说明
- 家目录
- Shell(nologin表示无法登陆shell)
/etc/shadow
文件 etc/shadow 记录了账号的密码等信息
以 : 分割,分别为
- 账号名
- 加密后的密码
- 最近一次改变密码的日期(其值为1970/1/1到该日期的天数)
- 密码下次可修改的天数(为0表示随时可修改,目的是避免频繁更新密码)
- 密码必须修改的天数(目的是定期更换密码)
- 密码必须修改前的警告天数(目的是在密码过期前给予提示)
- 密码过期后的失效天数(用户密码未修改会过期,过期仍可登陆,过了失效时间则不可登陆)
- 账号失效日期(其值为1970/1/1到该日期的天数,无论是否过期都无法使用)
- 预留位暂未使用
/etc/group
文件 etc/group 记录了账号群组的相关信息
以 : 分割,分别为
- 群组名
- 群组密码
- GID(与/etc/passwd第四列对应)
- 加入该群组的账号(与/etc/gshadow第四列对应)
/etc/gshadow
文件 /etc/gshadow 记录群组密码、群组管理员等信息
以 : 分割,分别为
- 群组名
- 密码,为*或空时表示无群组管理员
- 群组管理员的账号
- 加入该群组的账号(与/etc/group第四列对应)
初始群组和有效群组
初始群组指的是/etc/passwd中指定的GID,且其无需在/etc/group第四列指定
而有效群组则是通过命令 groups 显示出来的第一个群组,每次新建的文件所属群组则是当前有效群组
使用命令 newgrp 可切换当前用户的有效群组,其会开启一个新的shell来变更当前用户的有效群组(若要回原本的shell则用命令exit)
账号管理
useradd
命令 useradd 可添加账号,-u指定UID,-g指定初始群组和GID,-G指定加入的群组,-M 不建立家目录,-m建立家目录,-c指定账号说明,-d指定家目录,-r建立系统账号,-s指定shell,-e指定失效日期,-f指定密码过期是否会失效(0失效,-1不失效)
如上,添加账号会在etc下的passwd、shadow、group文件新增相关信息,默认值参考etc下的default/useradd、login.defs、skel/*
passwd
新建立的账号是没有密码的,如上/etc/shadow中的第2位为!,可通过命令passwd设置密码,–stdin表示由管道输入,-l使密码失效,-u恢复密码,-S列出shadow相关信息,-nxwi设置shadow的第4567列
如上设置test的密码,若后面没有加账号则是设置当前登陆账号的密码
chage
命令 change 可显示或指定密码的相关信息,-l显示信息,-dmMWIE设置shadow的第45678列
如下设置账号第一次登陆时必须修改密码
usermod
命令 usermod 可修改账号的详细信息,-lucds修改passwd的第13567列,-gfe修改shadow的第478列,-G修改群组,-a增加群组,-LU冻结/解冻账号,如下修改账号名
userdel
命令 userdel 可删除账号,-r连同家目录等资料一起删除
id
命令 id 可查看账号UID等信息
finger
命令 finger 查看账号的一些额外信息
chfn
命令 chfn 设置账号的一些额外信息,-f 全名,-o办公室名称,-p办公室号码,-h接家里电话,实际修改passwd的第5列
chsh
命令 chsh 设置账号的shell,-l显示系统支持的shell,-s指定shell
群组管理
groupadd
命令 groupadd 可新建群组,-g指定GID,-r建立系统群组
groupmod
命令 groupmod 修改群组相关参数,-g修改GID,-n修改群组名
groupdel
命令 groupdel 删除群组,删除前需确保当前群组未被账号设置为初始群组
gpasswd
命令 gpasswd 可设置群组管理员(未加参数表示对群组设置密码),管理自己群组的增删情况,-A将群组交给某账号管理,-M将一些账号加入群组,-r移除群组密码,-R让群组密码失效,-a将某个账号加入群组,-d将某个账号移除群组
如上创建群组交由song管理,然后可看到gshadow的第34列有新增密码和管理员,如下将用户test添加到mygroup群组
身份切换
su [username]
命令 su 用于切换用户(后面不跟用户名表示切换到root),- 代表用login-shell设定的环境变量登陆,-l(与 - 类似)后面需加上用户,-m和-p表示使用当前环境,而不是新用户的设置环境,-c 以某一用户身份运行后续的指令
如上以root身份查看/etc/shadow
sudo
命令 sudo 可以让用户以其他用户身份执行命令(定义在/etc/sudoers内的用户才能执行,执行时需输入当前用户密码),-b 将后面的指令放到背景中让系统自行执行(不影响当前shell),-u 后面接其他用户(无则为root)
如上以 test 的身份新建 1.txt
visudo 与 /etc/sudoers
文件/etc/sudoers规定了sudo命令的使用规则
设定用户
可对单一用户设置sudo权限
- root ALL=(ALL:ALL) ALL
- 用户 可下达命令的主机名称=(可切换的身份) 可下达的指令
- root ALL=(ALL:ALL) NOPASSWD: ALL 加入NOPASSWD: 可避免每次使用sudo都要密码
设定群组
可设置群组的sudo权限,加入群组的用户可使用sudo
- %admin ALL=(ALL) ALL
- 群组 可下达命令的主机名称=(可切换的身份) 可下达的指令
使用者信息
查询当前使用者——w、who、last、lastlog
命令 w 可显示目前登陆在系统上面的使用者
- 第一行为时间、开机(up)多久、各个使用者的平均负载
- 第二行为第三行的说明
命令 who 简略显示当前在线用户
命令 last 显示最近登陆的用户,而 lastlog 读取/var/log/lastlog文件中的信息
与使用者对话——write、mesg、wall
命令 write user 可向其他用户发送信息,输入完后按 Ctrl+d 结束输入
命令 mesg [y|n] 可选择是否接收其他用户(除root外)的信息
命令 wall 可向所有用户发送信息
发送邮箱——mail
上面的 write、wall 需在线才能使用,而命令 mail 可发送邮件给用户,每一个用户都有一个mailbox,其位置在 /var/spool/mail 中
mail -s "hello" song < 1.txt
如上命令发送一封标题为hello,内容在1.txt(结束的最后一行需输入小数点 . )的邮件,而查阅邮件直接输入 mail
其他
pwck
命令 pwck 用于检查 /etc/passwd 中的内容,还可对比/etc/passwd和/etc/shadow中的信息是否一致,相对应群组检查用grpck
pwconv
命令 pwconv 将/etc/passwd中的账号密码移动到/etc/shadow中
pwunconv
命令 pwunconv 将/etc/shadow内的密码写回到/etc/passwd,并删除/etc/shadow
chpasswd
命令 chpasswd 将未加密的密码,经过加密后,写回到/etc/shadow