UI视频教程 2016-11-06 13:05:02 一 用户配置文件 1 用户信息文件 /etc/passwd 我们先打开这个文件看一下 这里涉及到一些格式,我们还记得用man可以查看配置信息的帮助 man 5 passwd 这里看到:分割的每一项都有做详细说明,我们来总结下这里 第1个字段:用户名称 第2个字段:密码标志,我们可以看到都是x,那么真实的密码在哪里呢,我们来看/etc/shadow文件 这里我们看到root对应的第二个字段就是root的密码,显然是经过加密的,那么为什么密码不直接放在passwd中呢,我们看下两个文件的详细权限 对于passwd的,一般用户还是可以可读的,但是对于shadow,就什么权限都没有了,只有root可以查看,这样做是为了更安全些。 第3个字段:UID(用户ID) 我们可以发现在passwd中除了root用户我们认识,还有很多其他的我们没见过的,这些叫系统用户(伪用户),不能登录,只是在做系统调用服务的时候用到,我们不用管它们即可 0:超级用户 1-499 系统用户(伪用户) 500-65535 普通用户 第4个字段:GID(用户初始组ID) 这里我们要区分下初始组和附加组 初始组:就是指用户一登录就立刻拥有这个组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组 附加组:指用户可以加入多个其它的用户组,并拥有这些组的权限,附加组可以有多个 第5个字段:用户说明,这个一般就是描述信息 第6个字段:家目录 普通用户:/home/用户名/ 超级用户:/root/ 第7个字段:登录之后的shell 二 影子文件 /etc/shadow 我们打开这个文件来看一下 第1个字段:用户名 第2个字段:加密密码,加密算法是SHA512加密算法,如果是“!!”“*”代表没有密码,不能登录 第3个字段:密码最后一次修改日期,我们看到root的这个字段是17105,这个是使用1970年1月1日作为标准时间,每过一天,时间戳+1 第4个字段:两次密码的修改间隔时间(和第3个字段相比),就是说多少天后可以修改这个密码,我们看到root用户的这个字段是0 第5个字段:密码有效期(和第3个字段相比),我们看到root用户的这个字段是99999,基本上是永久有效 第6个字段:密码到期前的警告天数(和第5个字段相比),也就说比如我们在第5个字段设置了一个密码有效期,比如10天,然后我们这个字段设置是7,那么就是还剩7天到期的时候,就会有警告了。 第7个字段:密码过期后的宽限天数(和第5个字段相比) 0代表密码过期后立即失效,-1代表永远不会失效 第8个字段:账号失效的时间(要用时间戳表示),如果这个字段设置了失效时间,前面设置的有效期就没用了。 第9个字段:保留 那么我们刚才一直在说时间戳,接下来我们看下时间戳的换算公式 1 把时间戳换算为日期 date -d “1970-01-01 16066 days” 我们把16066的时间戳转换为日期 2 把日期转换为时间戳 三 组信息文件/etc/group和组密码文件/etc/gshadow 1 组信息文件/etc/group 我们打开这个文件看一下 第1个字段:组名 第2个字段:组密码标志 第3个字段:GID 第4个字段:组中附加用户 2 组密码文件/etc/gshadow 第1个字段:组名 第2个字段:组密码 第3个字段:组管理员用户名 第4个字段:组中附加用户 兄弟连沈超老师说不推荐组密码方式管理,一般用root管理,所以这里了解即可 四 用户管理相关文件 1 用户的家目录 普通用户 :/home/用户名/,所有者和所属组都是此用户,权限是700 超级用户:/root/,所有者和所属组都是root,权限是550 2 用户的邮箱 /var/spool/mail/用户名/ 比如我们创建一个用户fuqiang,然后到这个路径下查看,就会发现这个路径下自动生成了这个新用户的邮箱 3 用户模板目录 /etc/skel/ 我们看下这个目录 我们看到这个目录下的内容和/home/用户名下的内容是一样的,也就是说,在创建用户的时候,在/home/用户名下,就会自动生成这些模板目录下的文件 五 用户管理命令 1 用户添加命令useradd: useradd 选项 用户名 选项: -u UID 手动指定用户的UID,我们知道普通用户的UID是从500,自动往后排的,如果我想设置一个吉利的数字,比如888,就可以用这个选项 -d 家目录,比如我们不想放在/home下,就可以用这个选项改 -c 用户说明 -g 组名:手工指定用户的初始组,这个一般不建议修改 -G 组名:手工指定用户的附加组 -s shell:手工指定用户的登录shell,默认是/bin/bash 那么如果我们不加任何选项,默认是怎么样的呢,比如我现在添加一个fq的用户 我们来查看一下跟用户相关的文件信息 我们可以看到默认的这些信息 那么用户默认值文件在哪里呢, 2 修改用户密码passwd: passwd 选项 用户名 -S 查询用户密码的密码状态,仅root用户可用 2016-11-03 用户密码设定时间 0 密码修改间隔时间 99999 密码有效期 7 警告时间 -1 密码不失效 -l 暂时锁定用户,仅root用户可用,锁定用户,这个用户就不能登录了,其实就是修改shadow文件中对应密码的字段,前面加!! -u 解锁用户,仅root用户可用 还可以使用字符串作为用户的密码 echo “123 ”| passwd -stdin fq 这个主要用于shell编程,批量创建用户 3 修改用户信息 usermod: usermod 选项 用户名 -u UID 修改用户的UID -G 组名 修改用户的附加组 -L 锁定用户 -U 解锁用户 这个命令格式跟useradd类似,只不过useradd是新增,这个是修改已有 4 修改用户密码状态 chage chage 选项 用户名 -d日期 修改密码最后一次更改日期(shadow第3个字段) -m天数 两次密码修改间隔(4字段) -M 天数 密码有效期(5字段) -W天数 密码过期前有效期(6字段) -I 天数 密码过期后宽限天数(7字段) -E 日期 账号失效日期(8字段) 其实这样也都可以手工修改shadow文件 chage -d 0 fq 把fq的密码最后一次更改日期归0 ,这样用户一登录就要修改密码 5 删除用户userdel userdel 选项 用户名 -r 删除用户的同时删除用户家目录 当然除了这种方式外,我们也可以手工删除用户,就是上面说的涉及到用户的各个文件去删除即可 6 查看用户id id 用户名 比如我执行usermod -G root fuqiang,然后再用id查看 我们看到fuqiang用户多了一个附加组 7 切换用户身份su 我们一般用su 直接加用户名进行切换,但是这样用户的环境变量会有问题,具体可用env命令查看,会发现有些环境并没有切换过去 加选项 - 会连同用户的环境变量一起切换 -c 仅执行一次命令,而不切换用户 比如:su -root -c “useradd user3” 六 用户组管理命令 1 添加用户组groupadd 选项 组名 -g GID 指定组ID 我们先添加一个fuqianggroup的组 groupadd -g 600 fuqianggroup 然后到/etc/group下看看 可以看到这个组已经添加成功了 2 修改用户组groupmod 选项 组名 -g GID 指定组的GID -n 修改组名 比如我想把刚刚创建的fuqianggroup组修改为fqgroup 再来看下/etc/group 发现修改成功了 3 删除用户组groupdel 组名 注意:这样只能删除附加组,如果想删除初始组,必须把初始组的用户也删掉才行。 4 把用户填加到组里或者从组中删除 gpasswd 选项 组名 -a 用户名:把用户加入组 -d 用户名:把用户从组中删除 我想把fuqiang这个用户添加到刚才的fqgroup中 gpasswd -a fuqiang fqgroup 再把它删除 gpasswd -d fuqiang fqgroup 好了,Linux用户和用户组管理就总结到这里,如有问题,欢迎指正,谢谢。 |
|