12.用户,用户组 密码管理 - xiaoxiaoxuegao/rhcsa GitHub Wiki
用户,用户组 密码管理
一.用户(username)用户组:
1).mulitcs多用户系统(支持多个用户登录系统,也支持一个用户登录多次)
2).系统中为什么要有用户:因为要操作系统
3).用户不能单独存在,用户必须依赖于组,不可能单独存在
4).如果有用户,该用户必须有自己的所属组;
5).一个用户可以属于多个组;用户在不同的组所扮演的角色不同。
6).组内可以没有任何用户
7).用户组可以让用户管理更加方便
8).Linux系统中,存在大量的用户和用户组
9).用户信息以及用户组信息都是保存在配置文件etc/中的
8).linux安全,因为权力分散,例如apache管理服务,而且apache 是nologin的shell不能登录
9)id 用户名:查看用户是否存在
1.系统出了root,和自己注册的普通用户以外,有很多默认用户,用不到的
2.w:可以查看当前有哪些用户正在使用
[snow@www Desktop]$ w
06:51:45 up 15 min, 2 users, load average: 0.85, 0.44, 0.21
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
snow :0 06:50 ?xdm? 34.11s 0.13s gdm-session-worker [pam/gdm-passw
snow pts/0 06:51 1.00s 0.04s 0.02s w
1)注释:会有两个snow是因为,snow登陆了一个图形界面,一个命令行界面,tty理解为控制台,图形化就是控制台登陆,有多个控制台-》ctl alt f2 会切换到控制台,窗口界面和控制台界面都是控制台界面
2)必须分清控制台和伪终端 ;pts/0和远程(ssh):伪终端
3)有多少个控制台:5个 控制台之间互相切换ctrl alt fn f1~ctrl alt fn f6,ctrl alt fn f1是图形化界面;
4).查看当前系统支持的所有的shell类型:cat /etc/shells,最常用的是/bin/bash,那些不能登陆的用户用的是/sbin/nologin(为了安全不让登陆)
3.重要文件用户信息以及用户组信息都是保存在配置文件etc/中的:
1)./etc/group 存放用户组信息
2)./etc/gshadow 存放用户组密码信息
3)./etc/passwd: 存放用户基本信息 ,里面的每一行都代表一个用户
tail -2 /etc/passwd 查看后2行是否有这个用户的信息
mp:x:72:72::/:/sbin/nologin
snow:x:1000:1000:snow:/home/snow:/bin/bash
用户名:用户密码:用户的UID:用户的GID:描述信息:用户家目录:用户的登陆shell
以“:”分割每列的含义:
a.第一列:”snow”表示用户名(username);
b.第二列:“x”表示该用户的密码,被加密的(为了安全用x代替,实际密码存放别的文件里)
c.第三列:“1000”用户ID(UID)(计算机能识别该用户的标志)
d.第四列:“1000”组ID(GID); 默认属于 /etc/passwd下面的组,该用户的所属组的号,名字是用户看的,号是系统看的,主组
e.第五列:“snow”全名,电话号等,用户描述信息,可以为空,可以很长;
f.第六列:“/home/snow”用户家目录;
g.第七列:“/bin/bash”用户在登陆时使用的是什么类型的shell(最常用的是bash) sbin/nologin的shel类型,保证安全性
4)./etc/shadow:存放用户密码信息 查看系统支持什么类型的shell用:cat /etc/shells
二.用户用户信息(大部分都在root下设置)
1.添加用户(参数设置功能)
1)添加用户命令:useradd 用户名 /adduser 用户名
例:useradd snow
注:若创建用户时不指定该用户你的所属组,那么系统会为该用户创建一个私有组,该私有组(private group)的名字与用户名一样 man 5 passwd 查看帮助文档,看看都什么意思
2)添加用户并指定一些信息:useradd 用户名 -u 用户ID -g 组ID(没有可以不加,创建完会自动创建,组名与用户ID相同) -G “附加组id” -c “描述信息,描述信息,…” -d /(家目录) -s /bin/bash(用的什么shell) -u:创建用户时指定用户的UID -g: 创建用户时指定用户的主组号(primry group),所指的组号必须存在,若不加则会自动创建一个私有组,且该私有组是该用户的主组。 用户的主组就是用户的主要组,即用户登录时默认属的组。 用户的附加组,在用户登录时不会使用,除非通过手工的命令来更改 -c:创建用户时添加一些用户的描述信息 -d:创建用户时指定用户的家目录(可以改用户家目录) -s:创建用户时指定用户登录的shell -G:创建用户时指定用户的附加组,所指的组号必须存在。 单独G会覆盖附加组 aG会追加附加组 注:useradd可以创建用户的一瞬间为用户自定义信息
注在用户创建完毕之后不能使用useradd进行更改用户
usermod可以用来修改用户,与useradd几乎一模一样,只是可以添加用户之后更改。
useradd - - help
必考:useradd wzy -G las 没指定wzy主组会自动创建私有组,私有组是主组,而且wzy属于las附加组
例1:useradd wanghao -u 2000 -c “wh,18603061111” -d /wh -s /bin/sh
wanghao:x:2000:2000:wh,18603061111:/wh:/bin/sh
2.修改用户:usermod 用户名 -u 用户ID -g 组ID(没有可以不加,创建完会自动创建,组名与用户ID相同) -G “附加组id” -c “描述信息,描述信息,…” -d /(家目录) -s /bin/bash(用的什么shell)--》可以一个一个换,不用所有都加
3.创建用户附加组(不仅属于自己的组还属于另一个组): G 后面可以加组名 usermod yq -G 2002
3)查看是否添加成功:ls/home查看home目录下有没有这个用户 或 id 用户名
注意:不能在/home目录下自己建文件夹
4)判断一个用户是否存在:判断用户是否能登陆(需要密码)/etc/passwd文件,里面有所有用户信息;id 要查看的用户名
4.删除用户userdel:建议加上-r参数,用户添加的时候会自己生成自己的家目录 除了家目录还会生成自己的邮件池,邮件池位置/var/spool/mail下,若使用userdel命令,-r参数能帮助删除家目录和邮件池,若不是用就不会删除家目录和邮件池.
例:userdel -r 用户
三.用户组:
用户组信息存放在/etc/group 文件里
root:x:0: ->组名:组密码:组号:组成员(有附加组就显示,没有就不显示)
x表示组密码被加密了,加密后的文件存放在/etc/gshadow下
1.添加用户组:groupadd -g 组号 组名 -g指定了该组的组号 例:groupadd -g 20000 china-node 这里 没有人
useradd huangshuo -g china-node 在用户组里添加用户
user -G yq huangshuo 把huangshuo添加到yq附加组里-》提示用户huangshuo已存在
2.修改用户附加组:
1).usermod -G 附加组 用户
例:usermode -G yq huangshuo
2).不删除其他组的情况下,添加附加组:usermod -aG 要附加的用户组 用户
例:usermod -aG 2002 huangshuo
3).临时切换组:newgrp 组名-》让输入密码
例:newgrp yq
4).修改用户:gpasswd 组名
例:gpasswd yq
用法:gpasswd 参数 用户名 组名
选项: gpasswd -a 用户名 组名 向组 GROUP 中添加用户 USER
例:gpasswd -a gzy yq 将gzy加入到yq组中
gpasswd -d 用户名 组名 从组 GROUP中删除用户 例:gpasswd -d gzy yq 将gzy从yq组中删除
-h, --help 显示此帮助信息并推出
-Q, --root CHROOT_DIR 要 chroot 进的目录
-r, --remove-password 移除组 GROUP 的密码
-R, --restrict 向其成员限制访问组 GROUP
-M, --members USER,... 设置组 GROUP 的成员列表
-A, --administrators ADMIN,... 设置组的管理员列表
除非使用 -A 或 -M 选项,不能结合使用这些选项。
3.删除用户组:groupdel 组
1).当一个组,组内还有用户将该组当成自己的主组时,此组是不能删除的,如果是附加组可以删除
四.用户及用户组的密码管理:
(一).用户密码信息:
1)./etc/group 存放用户组信息
2)./etc/shadow 存放用户密码信息
root:$6$LUeWtq6Q$6MlSQXnjTOfnSyEu/3hxBeED8CBKx1r70AaYDfE/04wib/4.Cg1.le461BuimQhhGZMlbufiDxmrR5mDu./mp0:17397:0:99999:7:::
nobody:*:16141:0:99999:7:::
dbus:!!:17397::::::
a.密码都是加密的$6$代表密码加密的代码(哈希算法)
b.没有密码的会显示“!” 代表账号被锁定了 “!!”表示两把锁,若被锁住了,则该用户也无法登陆
第一列:用户名
第二列:加密后的密码,若是*或!表示该用户还没有设置密码,“!”被锁,无法登陆
第三列:表示上次修改密码时间天(从1970.1.1到添加用户时间的天数)
第四列:修改密码最小间隔,密码最小有效期(0代表没有有效期,避免频繁修改密码,例如3 至少使用三天才能改)
第五列:修改密码最大间隔,密码最长有效期(使用多长时间后必须更改一次,越小安全度越高),不改就失效 !!:最大有效期必须大于最小有效期
第六列:密码到期前多少天发送警告
第七列:密码到期后的宽限日期(默认没有)
第八列:账号失效日期(优先级最高)
第九列:保留字段
修改用户的密码信息命令:root下操作
1.passwd --help(查看帮助文档) 根据参数更改
-d, 删除已命名帐号的密码(只有根用户才能进行此操作)
-l, 锁住账号
-e, 账号失效日期
-u 解锁指名账户的密码
-x, 密码的最长有效时限(只有根用户才能进行此操作)
-n, 密码的最短有效时限(只有根用户才能进行此操作)
-w, 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
-i, 账号宽限日期
例:passwd -n 3 -x 5 -w -i 4 snow
2.chage —help(查看帮助文档) 根据参数更改 不能解锁密码 -d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期” **** chage -d 0 用户名 :将最近一次密码修改时间设为0,表示用户在下次登录账号时必须修改密码 例:tail -1 /etc/shadow 1.普通用户下设置密码命令:passwd (改自己的密码,要求输入旧密码,输入新密码,会一直提示,大写字母小写字母数字特殊符号都要有才能正确) whatis passed ->级别是1 普通用户可以用
2.root下设置密码(可以强行指定):passwd 用户名(敲两次密码就OK)
3.修改密码的特殊命令:echo “密码” |passwd - -stdin 用户名
- -stdin 让passwd能接受标准输入
4.用echo “密码” |passwd - -stdin 用户名 改完用户密码之后,使用chage -d 0 用户名 普通用户切换普通用户下次登录时必须修改密码
(二).用户组密码信息
1.一个用户在创建一个文件时,文件拥有者是用户自己,文件所属组时该用户的主组
2.临时切换组:newgrp 组名-》若组名不是自己的所属组会让输入密码
例:newgrp yq 让文件所属组为yq touch 123 ->ls -l 123 ==>此时123的所属组是yq 3.更改文件所属组:chgrp 组名 文件 把文件所属组改成 4. 组密码的作用:让那些本来不属于该组的用户在想以这个组的身份创建文件的时候可以通过谁入密码来临时的加进一个组
组密码信息存放位置:/etc/gshadow
--------- 以上是管理员操作------------------- 1.家目录不能改
2.chfn 可以改全名:
[snow@www Desktop]$ chfn
Changing finger information for snow.
名称 [snow]: gaoxiaoxue …………………….
3.chsh可以改shell
[snow@www Desktop]$ chsh
Changing shell for snow.
New shell [/bin/bash]: /bin/sh
修改完看不出来,需要退出在登陆就可以看出来
---以上是非root用户也可以做的操作--------------------
------手动创建用户---------------------
1.切换到一个用户 cd ~snow
里面都是隐藏文件,隐藏文件是为了防止用户对系统不熟悉擅自操作文件导致出错 不要自己创建家目录 每当创建一个用户时,用户的目录里面需要一些关键的环境变量配置文件,默认创建一个用户时,系统会自动从/etc/skel/里的文件全部拷贝到新建的用户的家目录里,用户依赖自己家目录里的环境变量配置文件才会获得shell {手动在创建一个用户时:/etc/passwd编写;/etc/group编写;创建家目录创建邮件池->cp -a /etc/skel/.[!.]* /home/snow/ } 会把/etc/skel/里的文件全部拷贝过来,这个目录里表面看什么都没有,实际都是隐藏文件ls -a 查看
[root@www skel]# ls -a
. .. .bash_logout .bash_profile .bashrc .mozilla 错误的:cp -a /etc/skel/.* /home /snow/ ->这样不行,因为会把 ..目录也拷贝过来,..目录是上级目录下的所有文件
正确的:cp -a /etc/skel/.[!.]* /home/snow/ ->拷贝除了..以外的以.开头的所有目录
2./etc/skel/的用法:(在企业中应用非常多) 在skel里面创建的文件,在没创建一个用户时,新用户家目录都会拷贝这个文件,即所有用户的共同文件。 1).在root下可以更改:
vim /etc/passwd
vim /etc/shadow
2).touch README
vim README ->在里面添加内容 这是一个手册,所有注册用户都能看见
3).禁止所有普通用户登录:touch /etc/nologin(在服务器维护时会用到) wall “广播内容” 发送广播信息