linux用户和组相关的命令

linux用户和组相关的命令

0.介绍

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切换用户

su (switch user) 命令,管理员su到普通用户,不需要用户密码;反之,不行

su USERNAME
su -l USERNAME
su - USERNAME

whoami查看当前用户

显示当前登录的用户名

$SHELL显示shell类型

echo $SHELL

id查看用户属性

id USERNAME:显示的用户uid gid等

id suse 
  -u 显示uid
  -g 显示gid
  -gn 显示组名

finger 查看用户信息
finger suse

passwd修改密码

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开始到上次修改密码时间
  • 账号非活动天数:密码到期后,账号没有立即锁定账户,但是用户登录必须修改密码
  • 加密算法:
    1. 对称加密:加密解密使用同一个秘钥,例如:3DES,AES;
      缺点:秘钥管理和分发不利
    2. 非对称加密:公钥加密,秘钥是成对的,私钥(s)/公钥(p),公钥可以从私钥中提取得到,公钥加密,私钥解密。例如:RSA,DSA;
      特点:加密速度慢,安全性高;能完成秘钥分发
    3. 单项加密:只能加密,不能解密,类似于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 passwd

passwd

修改秘钥属性有passwd,chage,usermod方法,但是只有管理员可以操作

passwd USERNAME
    -e  YYYY-MM-DD
    -i 非活动天数
    -n 密码最短使用天数
    -x 最长使用天数
    -w 警告天数

修改密码示例:
点击跳转示例4

chage

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 删除用户

不会删除用户家目录
userdel USERNAME

2.组管理

groupadd 创建组

创建用户时,会给用户创建一个私有组(用户基本的组),除此之外的组成为额外组,系统用户的组称为系统组。

groupadd GRPNAME
 -g 创建组的时候指定GID  

/etc/group文件存放组的信息
组名:密码占位符:GID:以此组为额外组的用户列表
新建组示例:
点击跳转示例1

groupmod 修改组

相当于操作/etc/group文件夹

groupmod 修改组属性
  -g GID
  -n NEW_NAME

groupdel 删除组

groupdel GRPNAME

gpasswd 修改组的密码

当其他用户不属于这个组时,但需要临时使用这个组,就需要组密码,才能使用这个组
gpasswd GROUPNAME
组密码存放在/etc/gshadow目录下,格式如下
hellogrp:$6$Lt7iB/9mtcO/$AJ1NGZFNOSO7dN96ZUrGThD6vN.1r0IpIUDfgfRA9WUBAScaBz3RrFXns.q.wMp4DOxfkv2KzfJMVb3o5u6Fe0::
组名:组密码:管理员:成员

newgrp 切换用户的基本组

newgrp GROUPNAME
临时切换当前用户的基本组,退出使用exit
修改组密码示例:
点击跳转示例6

3.示例

示例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

如果切换到该用户已有的额外组,则不需要输入组密码

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注