Linux所采取多用户信息存储策略是: 将用户信息分别存储在passwd,shadow,group,gshadow四个文件中 /etc/passwd 用户基本信息文件,包括用户名,用户UID,组ID
Linux所采取多用户信息存储策略是: 将用户信息分别存储在passwd,shadow,group,gshadow四个文件中
/etc/passwd 用户基本信息文件,包括用户名,用户UID,组ID 登录之后所使用的Shell,家目录,注释说明
/etc/shadow 用户密码信息文件,包括了经过加密之后的密码,最近一次修改密码的间隔,以及密码期限,在何时提示用户修改密码,何时密码过期等等
有趣的是 /etc/shadow 文件的权限是 000 即任何用户都没有读写执行的权限,当然除了我们的超级管理员root之外,什么都拦不住root。因此如果想阅读shadow文件里面的内容,必须使用root的身份。
/etc/group 组信息文件
/etc/gshadow 组密码信息文件
创建,删除,修改 用户/组 的信息其实都可以通过在以上4个文件中增,删,改数据来实现。
其中最重点要了解和掌握的便是 /etc/shadow 与 /etc/passwd (不超过5分钟便能记住 -.-)
vim /etc/passwd
浏览passwd不需要使用root的身份(只摘录其中一部分)
root:x:0:0:root:/root:/bin/bashpulse:x:117:124:PulseAudio daemon,,,:/var/run/pulse:/bin/falsertkit:x:118:126:RealtimeKit,,,:/proc:/bin/falsesaned:x:119:127::/var/lib/saned:/bin/falseusbmux:x:120:46:usbmux daemon,,,:/var/lib/usbmux:/bin/falsecojson:x:1000:1000:cojson,,,:/home/cojson:/bin/bash
以下为其格式
用户名:密码标志:UID:GID(组ID):用户说明(备注):家目录:登录之后的Shell
其中要特别说明的是:
UID为0的为超级管理员,1-499为系统用户(伪用户),500-65535为普通用户
可以自定义家目录,置于登录之后的Shell
有 /bin/false 禁止该用户登录,无法使用任何服务
/bin/bash 默认的Shell
/sbin/nologin 不允许登录系统,但可以使用其他服务
再来看看 /etc/shadow 其中存储的是用户的密码
sudo vim /etc/shadow
查看,修改此文件均需要root权限
选取其中一个用户 fucker来分析
fucker:$6$38ca4Fw6$E8FhQ1c9aUjNqCNBSuk2.D.FHe8DfZuUPvyn/U8PPT0USWrT3lALOdyCsoMtdi/1Mk/PucsV8ntat2BXAyGUw/:17214:0:99999:7:::
其格式为
用户名:加密密码:最后一次修改密码的时间:两次密码修改的间隔:密码有效期:提前N天提示修改密码:密码过期后的宽限的天数:账号失效时间:保留字段
Linux便是通过这两个文件来管理用户信息以及密码
用户管理的常用操作:
useradd fucker #添加用户,具体参数通过man来查询#添加用户时如不指定具体参数的话,将使用存储在/etc/default/useradd中的默认值passwd [用户名] #修改指定用户的密码,不加参数的话便是修改当前操作用户的密码passwd 修改当前用户的密码passwd 用户名 设置密码-l 锁定用户 用户名 (使其无法登录,相当于在/etc/shadow文件中用户的密码字段前加上!)-u 解锁用户 用户名passwd --stdin 用户名 从输入流中获取密码usermod 修改用户信息-c 给用户加说明-G 添加附加组-u 修改uid-L 锁定-U 解锁跟useradd差别不是很大,主要区别是usermod只能修改已存在的用户chage 修改用户密码状态change -d 0 用户名把shadow的第三个字段也就是密码修改日期归0了这样用户一登陆就要修改密码
用户切换命令 su
su 选项 用户名- 代表连带用户环境的变量一起切换-c仅执行一次命令,而不切换用户身份su - root切换成rootsu - root -c "命令"#不切换成root但是用root的身份执行一次"useradd"相当于 sudo
删除用户
userdel -r 用户名删除用户同时删除用户家目录手工删除用户其是就是删除/etc/passwd/etc/shadow/etc/group/etc/gshadow中对应的用户信息
组管理
groupadd [选项] 组名-g GID: 指定组idgroupmod [选项] 组名-g GID: 修改组ID- n 新组名groupdel 组名删除组gpasswd 选项 组名-a 添加用户-d 删除用户如 gpasswd -a user1 testgroup
以上命令均可以通过修改用户信息文件来实现