- linux用户和组相关的命令
- 0.介绍
- 1.用户管理
- useradd创建用户
- su切换用户
- whoami查看当前用户
- $SHELL显示shell类型
- id查看用户属性
- passwd修改密码
- passwd
- chage
- usermod
- usermod 修改用户属性
- userdel 删除用户
- 2.组管理
- groupadd 创建组
- groupmod 修改组
- groupdel 删除组
- gpasswd 修改组的密码
- newgrp 切换用户的基本组
- 3.示例
linux是多用户,多任务系统。文件系统是一种数据抽象
文件权限针对下面三种对象:属主,属组,其他人
- 属主:拥有者
- 属组:所属的组
- 其他人:不属于上述两类
用户:分为管理员和普通用户
- 管理员:root用户,id=0
- 普通用户分为系统用户(用来执行系统程序,不能登录用来管理系统,id在1-499),可登录用户(id >500)
组:容器,映射用户群和访问权限
1.用户管理可以创建用户,修改用户属性,删除用户,创建组,修改组属性,删除组等操作
useradd创建用户useradd或adduser都可以用户创建用户
useradd tom
创建用户时,系统自动创建同名的组,用户的私有组,只为用户一个人使用
用户数据保存在/etc/passwd文件夹,格式如下
fedora:x:2003:2003:Fedora Community:/home/fedora:/bin/tcsh
用户名:密码占位符:UID:GID:注释信息:家目录:默认shell
useradd USERNAME: -u UID 指定uid,有效范围 0-65535,不能重复;如果没有给用户指定基本组,且与UID相同的GID没有被占用,这GID同UID -g GID 有效范围已有的GID的基本组 -G GID 有效范围已有的GID,可以有多个额外组 -c COMMENT 指定注释信息 -d /path/to/somewhere 指定家目录的路径 -s /path/to/shell_command 指定shell路径 -r 创建系统用户,ID号为1-499之间的用户 系统用户的家目录有路径,但是不会被创建 -M 不为用户创建家目录 -m 必须为用户创建家目录
创建用户示例:
点击跳转示例1
点击跳转示例2
su (switch user) 命令,管理员su到普通用户,不需要用户密码;反之,不行
su USERNAME su -l USERNAME su - USERNAMEwhoami查看当前用户
显示当前登录的用户名
$SHELL显示shell类型echo $SHELL
id查看用户属性id USERNAME:显示的用户uid gid等
id suse -u 显示uid -g 显示gid -gn 显示组名 finger 查看用户信息 finger susepasswd修改密码
linux没有密码的用户不允许登录
passwd # 修改当前用户的密码 passwd USERNAME # 修改指定用户的密码,只有管理员有这个权限 passwd -l USERNAME # 锁定用户账号 passwd -u USERNAME # 锁定用户账号
修改密码示例:
点击跳转示例4
用户密码在/etc/shadow文件夹中,通常改文件没有任何权限,每一行格式如下
fedora:$6$CEJ63Rfa$UEsHnz/cx/tDRTFAfEawjEI7yGiOzedpMEXcjWvkRvDx14FmXceqquhmAtMWuv764zgtufgdUaNVEokrFkTfu1:19112:2:50:7:::
登录名 : 加密的密码串 : 最近一次修改密码的时间 : 密码最短使用期限 : 密码最长使用期限 : 密码到期警告天数 : 账号非活动天数 : 账号过期期限 : 预留段
- 加密密码串
$ 加密方法 $ 8位随机数salt $ 密码
$分隔符,加密方法:1代表MD5加密,6代表sha-512 - 最近一次修改密码的时间:1970/1/1开始到上次修改密码时间
- 账号非活动天数:密码到期后,账号没有立即锁定账户,但是用户登录必须修改密码
- 加密算法:
- 对称加密:加密解密使用同一个秘钥,例如:3DES,AES;
缺点:秘钥管理和分发不利 - 非对称加密:公钥加密,秘钥是成对的,私钥(s)/公钥§,公钥可以从私钥中提取得到,公钥加密,私钥解密。例如:RSA,DSA;
特点:加密速度慢,安全性高;能完成秘钥分发 - 单项加密:只能加密,不能解密,类似于hash,用于实现提取数据特征码;例如:md5(128位),sha,SHA1(160位),SHA256(256位),SHA512
特点:无论输入多大数据,输出是定长的;输入一样,结果一定一样,反正输入数据微小改变,结果巨大改变(雪崩效应)
通常密码加密,还需要加salt,salt不同,密码加密后hash值也不一样。防止hash值相同时,密码被破解。所以即使看到salt和加密后hash值,也不能推出原密码
加密命令
openssl passwd -1 -salt 12345678 redhat
密码安全策略
足够复杂:
1.密码长度至少5位以上;
2.要包含大小写,数字,特殊字符至少三类;
3.要定期更换,不要重复使用此前用过的密码
查看passwd和shadow文件的帮助文件
[root@node1 ~]# whatis shadow shadow (3) - 加密密码文件工具函数 shadow (5) - 影子化了的密码文件 [root@node1 ~]# man 5 shadow 可以查看相关用法 [root@node1 ~]# whatis passwd sslpasswd (1ssl) - compute password hashes passwd (1) - update user's authentication tokens passwd (5) - password file [root@node1 ~]# man 5 passwdpasswd
修改秘钥属性有passwd,chage,usermod方法,但是只有管理员可以操作
passwd USERNAME
-e YYYY-MM-DD
-i 非活动天数
-n 密码最短使用天数
-x 最长使用天数
-w 警告天数
修改密码示例:
点击跳转示例4
chage USERNAME
-d 修改最近一次密码修改时间
-m 最短使用天数
-M 修改最长使用天数
-W 警告天数
-I 非活动天数
-E 过期时间
usermod
usermod USERNAME
-e YYYY-MM-DD 过期时间
-i day 非活动天数
usermod 修改用户属性
可以修改用户属性
usermod: -u UID -g GID -G GID 修改额外组,覆盖原来的额外组 -a -G 保留原来的额外组,并追加新GID -c COMMENT -s /PATH/TO/SHELL -l NEW_NAME 修改用户的登录名称 -d /path/to/somewhere 修改家目录 -m -d /path/to/somewhere 修改家目录,并将原家目录中的文件移动过去 -r 创建系统组
每个家目录是由系统从/etc/skel目录中的隐藏文件生成的默认家目录。
修改用户属性示例:
点击跳转示例3
点击跳转示例5
不会删除用户家目录
userdel USERNAME
创建用户时,会给用户创建一个私有组(用户基本的组),除此之外的组成为额外组,系统用户的组称为系统组。
groupadd GRPNAME -g 创建组的时候指定GID
/etc/group文件存放组的信息
组名:密码占位符:GID:以此组为额外组的用户列表
新建组示例:
点击跳转示例1
相当于操作/etc/group文件夹
groupmod 修改组属性 -g GID -n NEW_NAMEgroupdel 删除组
groupdel GRPNAME
gpasswd 修改组的密码当其他用户不属于这个组时,但需要临时使用这个组,就需要组密码,才能使用这个组
gpasswd GROUPNAME
组密码存放在/etc/gshadow目录下,格式如下
hellogrp:$6$Lt7iB/9mtcO/$AJ1NGZFNOSO7dN96ZUrGThD6vN.1r0IpIUDfgfRA9WUBAScaBz3RrFXns.q.wMp4DOxfkv2KzfJMVb3o5u6Fe0::
组名:组密码:管理员:成员
newgrp GROUPNAME
临时切换当前用户的基本组,退出使用exit
修改组密码示例:
点击跳转示例6
示例1 创建一个用户mandriva,其ID号为2002,基本组为distro(组ID为3003),附加组为linux
groupadd -g 3003 distro
groupadd linux
useradd -u 2002 -g distro -G linux mandriva
创建结果如下
[root@node1 ~]# tail -2 /etc/group linux:x:1001:mandriva distro:x:3003: [root@node1 ~]# tail -1 /etc/passwd mandriva:x:2002:3003::/home/mandriva:/bin/bash
示例2
创建一个用户fedora,其全名为Fedora Community,默认shell为tcsh;
useradd -c "Fedora Community" -s /bin/tcsh fedora
创建结果如下
[root@node1 ~]# tail -1 /etc/passwd fedora:x:2003:2003:Fedora Community:/home/fedora:/bin/tcsh
示例3
修改mandriva的ID号为4004,基本组为linux,附加组为distro和fedora
usermod -u 4004 -g linux -G distro,fedora mandriva
创建结果如下
[root@node1 ~]# id mandriva uid=4004(mandriva) gid=1001(linux) 组=1001(linux),3003(distro),2003(fedora)
示例4
给fedora加密码,并设置其密码最短使用期限为2天,最长为50天
passwd fedora passwd -n 2 -x 50 fedora 或者 chage -m 2 -M 50 fedora
结果如下
[root@node1 ~]# id fedora uid=2003(fedora) gid=2003(fedora) 组=2003(fedora) [root@node1 ~]# passwd fedora 更改用户 fedora 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@node1 ~]# passwd -n 2 -x 50 fedora 调整用户密码老化数据fedora。 passwd: 操作成功
示例5
将mandriva的默认shell改为/bin/bash
usermod -s /bin/bash mandriva
示例6
创建一个hellogrp组,设置密码;并且使用fedora用户基本组切换为hellogrp,创建一个1.txt文件
[root@node1 ~]# groupadd hellogrp [root@node1 ~]# gpasswd hellogrp 正在修改 hellogrp 组的密码 新密码: 请重新输入新密码: [root@node1 ~]# su - fedora [fedora@node1 ~]$ cd /tmp [fedora@node1 /tmp]$ id uid=2003(fedora) gid=2003(fedora) 组=2003(fedora) [fedora@node1 /tmp]$ touch 1.txt [fedora@node1 /tmp]$ ls -l 总用量 0 -rw-rw-r-- 1 fedora fedora 0 5月 1 15:45 1.txt [fedora@node1 /tmp]$ newgrp hellogrp 密码: [fedora@node1 /tmp]$ touch 2.txt [fedora@node1 /tmp]$ ls -l 总用量 0 -rw-rw-r-- 1 fedora fedora 0 5月 1 15:45 1.txt -rw-r--r-- 1 fedora hellogrp 0 5月 1 15:46 2.txt [fedora@node1 /tmp]$ id uid=2003(fedora) gid=4006(hellogrp) 组=4006(hellogrp),2003(fedora) [fedora@node1 /tmp]$ exit exit
如果切换到该用户已有的额外组,则不需要输入组密码



