Linux用户与权限:用户与组管理

用户管理

groups 查看当前登录用户的组内成员
groups gliethttp 查看gliethttp用户所在的组,以及组内成员
whoami 查看当前登录用户名

  • 任何用户被分配一个独特的用户id号(UID),当用户登录时,它被分配一个主目录并 且运行一个程序(通常是一个shell程序)

  • 没有权限许可用户不能读取、写或者执行其它用户的文件

  • 用户帐号通常从UID 500开始(员工辞职后若删除原ID也删除,再重新建立除非指定, 否则顺后面一位数字,例如503

  • 每一个文件都属于一个UID和GID所有(每一个用户都有一个匹配的用户和组)

  • 任何进程运行时都带一个UID和一个或多个GID标识符

    • 通常决定于哪个用户执行这个进程
  • 三种访问类别

    • 运行的进程跟文件有着同样的UID(user)
    • 运行的进程跟文件有着同样的GID(group)
    • 其它进程(other)

1. 添加新用户 useradd/adduser

  • 格式:useradd/adduser [选项] [用户名]

参数:

选项 含义
-u 指定用户的UID值
-g 指定用户所属的默认组
-G 指定用户附加组
-m 若用户主目录不存在则建立用户主目录
-d 指定主目录
-e 指定用户帐号有效日期(YYYY-MM-DD)
-s 指定默认的shell类型
-M 不建立用户主目录

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#useradd u2

#useradd -g g2 u2

#useradd -e 2019-01-12 u3

#useradd -g group1 -e 12/12/2019 user1
#passwd user1

#useradd -G staff tom
#passwd tom

#useradd -G ftpgrp -d /var/ftp2 -s /sbin/nologin -M ftp1
#passwd ftp1

2. 设置用户口令passwd

  • 格式:passwd [选项] [用户名]

  • passwd //设置密码、激活用户;//注:新建的帐号都为禁用状态;

  • 注:root用户可以更改所在用户的密码,而普通的用户只能修改本身的密码;

选项 含义
-l 锁定帐号:即不能用该帐号登录
-u 解锁帐号;
-d 删除帐号的密码,超级用户使用
-k 保持身份验证不过期
-e 终止指名账户的密码
-w 在密码过期前多少天提醒用户
-x/-n 密码的最长/最短有效时限
-f 强制执行操作
1
2
3
4
5
6
7
8
9
#passwd –x 60 user 设置 user用户的密码有效期

#passwd -w 10 user 设置 user 用户的密码失效前10天开始提醒用户

#passwd -l user 可以锁定用户 user

#passwd -s user 显示用户user 当前已被锁定

#passwd -u user 解除user用户帐号的锁定

3. 批量用户管理

批量创建用户帐号

输入 # newusers < new 批量新建用户帐号

格式– newusers <filename>

-filename的格式与 /etc/passwd 一致

举例

1
2
3
4
5
6
7
#vi userfile.txt
#cat userfile.txt
user1:\x:1001:1001::/home/user1:/bin/bash
user2:x\:1002:1002::/home/user2:/bin/bash
ftpuser1:\x:2001:2001::/home/ftpuser1:/sbin/nologin
ftpuser2:\x:2002:2002::/home/ftpuser2:/sbin/nologin
#newusers userfile.txt

批量设置密码

输入 # pwunconv 暂时取消shadow加密

#chpasswd < newpasswd 批量设置用户密码

#pwconv 恢复用户密码

格式 – chpasswd < <filename\>

-filename 每一行的格式:

username:password

username必须是系统上已存在的用户

举例

1
2
3
4
5
6
7
#vi userpwdfile.txt; chmod 600 userpwdfile.txt
#cat userpwdfile.txt
user1:123456
user2:passwd
ftpuser1:123qaz
ftpuser2:xsw321
#chpasswd < userpwdfile.txt

4.删除用户

  • 格式: userdel [选项] [ 用户名]

  • 选项:

选项 含义
-r 删除用户并同时删除用户主目录及本地邮件 存储文件等信息
-f 强制删除用户

实例:

#userdel -r user1

注意:如果只是临时禁止用户登录系统,那么不用删除账户,可以采取 临时查封用户账号的办法。编辑口令文件/etc/passwd,将*放在要被查封 用户的加密口领域,这样该用户就不能登录系统了。但是主目录,文件 以及组信息还是保留的。如果以后需要修改,将*改为x

5.修改用户信息

  • 格式: usermod [选项] [用户名]

  • 选项:

    选项 含义
    -l 更改用户名
    -d 更改用户主目录
    G 修改附加组
    -g 修改主组
    -L 锁定用户帐号(不能登录)
    -U 解锁用户帐号
    -c 改变用户的表述信息
    -e 设置用户账户的过期时间
    -s 改变用户的默认shell

    实例:

    1
    2
    3
    4
    5
    6
    #usermod -d /abc u3
    usermod -G group2 u3
    #usermod -l user3 u3

    #usermod -L user1
    #usermod -U user1

组管理

简介

  • 用户指派给组

  • 每一个组被分配一个独特的组ID(GID)

  • GID保存在/etc/group中,加密后的密码存放在/etc/gshadow中

  • 每一个用户都有自己的私有组

  • 同一个组中的所有用户能共享属于这个组的文件

分类

  1. 分类法一:
  • 标准组

    • 标准组可以容纳多个用户

    • 若使用标准组,在创建一个新的用户时就应该指定他所属于的组

  • 私有组

    • 私有组中只有用户自己

    • 当在创建一个新用户时, 若没有指定他所属于的组,RHEL/CentOS 就建立一个和该用户同名的私有组,且用户被分配到这个私有组中

    • 优点:防止新文件归 “公共” 组所有

    • 缺点:可能会鼓励创建 “任何人都可以访问” 的文件

  1. 分类法二:
  • 主要组群:当一个用户账户属于多个组群成员时,登录后所属的组群 便是主要组群,其他的组群是次要组群,一个用户账户只能属于一个 主要组群,即主组

  • 次要组群:也称为附加组群,一个用户账户可以属于多个次要组群

组管理工具

groupadd添加组

格式 # groupadd [选项] [组群名]

选项

选项 含义
-g 为组群设置GID
-r 创建系统组群
-o 允许使用和别的组群相同的GID创建组群
-f 即使组群已经存在,还是强制创建组群
-p (密码) 为新组群设置加密的密码

举例

1
2
3
4
5
#groupadd mygroup 创建组

#groupadd -r sysgroup 创建系统组群

#groupadd -g 888 group2 创建指定GID组

groupdel删除组

groupdel:删除一个已存在组,但不能删主组

需要从系统上删除组群时,可用groupdel命令来完成这项工作,如果该组群中仍包 括某些用户,则必须先使用userdel命令删除这些用户后,才能使用groupdel命令删 除组群。如果有任何一个组群的使用者在线上就不能移除该组群。

格式:# groupdel [组群名]

举例:

删除组群user1

1
2
3
#groupdel user1 

#cat /etc/group |grep user1

groupmod 修改组

格式

#groupmod [选项][组群名]

选项

选项 含义
-g 设置组群
-o 重复使用组群GID
-n(新组群名) 更改组群名称

举例

1
2
3
#groupmod -g 503 mygroup

#groupmod –n newgroup mygroup

gpasswd设置组群密码

格式: gpasswd [选项][组群名]

选项 含义
-a 将一个用户加入到一个组群中
-d 将一个用户从一个组群中删除
-r 取消一个组群的组群密码
-R 限制其成员访问组
-A(组群管理员) 指定组群的管理员
-M(用户) 设置组群的成员列表

举例:

1
2
3
 #gpasswd –A pl mygroup //将pl设为mygroup群组的管理员 

$gpasswd –a aaa mygroup //pl可以向mygroup群组添加用户aaa

newgrp新组名

  • 给组账号设置完密码后,用户登录系统,使用newgrp命令,输入给组 账号设置的密码,就可以临时添加到指定组,可以管理组用户,具有组权限。

  • 使用newgrp命令可以让用户账户以另一个组群的身份进行登录,即用 相同的账户名、不同的组群身份登录系统。如果要切换,用户必须是 该组群的用户,否则无法登录指定的组群。单一用户如果要同时隶属 多个组群,需要利用交替用户的设置。如果不指定组群名称,则 newgrp命令会登录该用户名称的预设组群。

  • 语法:newgrp [组群名]

举例: • 将用户pl以组群user的身份登录系统 • #su – pl • #id • #newgrp user • #id pl

用户和组的关系

  • 组是用户的集合。

  • 一个标准组可以容纳多个用户。

  • 同一个用户可以同属于多个组,这些组可以是私有组,也可以是标准组。

  • 当一个用户同属于多个组时,将这些组习惯分为 :

    • 主组(初始组):用户登录系统时 的组。

    • 附加组:可切换的其他组。

练习

1、创建一个用户 test

useradd test

2、创建一个用户test1 指定其主组为test

useradd -g test test1

3、创建一个用户 test2 指定其uid 为1000

useradd -u 1000 test2

4、将test1、test2 加入到test组中

usermod -a -G test test1

usermod -a -G test test2

*5、添加一个用户 user3 uid 为600 设置其家目录在/data/user3 主组为 test 附加组为 test1 test2

需要创建data 目录

#mkdir /data

useradd -u 600 -d /data/user3 -g test user3