Linux用户与权限:用户与组管理
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 | #useradd u2 |
2. 设置用户口令passwd
格式:passwd [选项] [用户名]
passwd //设置密码、激活用户;//注:新建的帐号都为禁用状态;
注:root用户可以更改所在用户的密码,而普通的用户只能修改本身的密码;
选项 | 含义 |
---|---|
-l | 锁定帐号:即不能用该帐号登录 |
-u | 解锁帐号; |
-d | 删除帐号的密码,超级用户使用 |
-k | 保持身份验证不过期 |
-e | 终止指名账户的密码 |
-w | 在密码过期前多少天提醒用户 |
-x/-n | 密码的最长/最短有效时限 |
-f | 强制执行操作 |
1 | #passwd –x 60 user 设置 user用户的密码有效期 |
3. 批量用户管理
批量创建用户帐号
输入 # newusers < new 批量新建用户帐号
格式– newusers <filename>
-filename的格式与 /etc/passwd 一致
举例
1 | #vi userfile.txt |
批量设置密码
输入 # pwunconv
暂时取消shadow加密
#chpasswd < newpasswd
批量设置用户密码
#pwconv
恢复用户密码
格式 – chpasswd < <filename\>
-filename 每一行的格式:
username:password
username必须是系统上已存在的用户
举例
1 | #vi userpwdfile.txt; chmod 600 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中
每一个用户都有自己的私有组
同一个组中的所有用户能共享属于这个组的文件
分类
- 分类法一:
标准组
标准组可以容纳多个用户
若使用标准组,在创建一个新的用户时就应该指定他所属于的组
私有组
私有组中只有用户自己
当在创建一个新用户时, 若没有指定他所属于的组,RHEL/CentOS 就建立一个和该用户同名的私有组,且用户被分配到这个私有组中
优点:防止新文件归 “公共” 组所有
缺点:可能会鼓励创建 “任何人都可以访问” 的文件
- 分类法二:
主要组群:当一个用户账户属于多个组群成员时,登录后所属的组群 便是主要组群,其他的组群是次要组群,一个用户账户只能属于一个 主要组群,即主组
次要组群:也称为附加组群,一个用户账户可以属于多个次要组群
组管理工具
groupadd添加组
格式 # groupadd [选项] [组群名]
选项
选项 | 含义 |
---|---|
-g | 为组群设置GID |
-r | 创建系统组群 |
-o | 允许使用和别的组群相同的GID创建组群 |
-f | 即使组群已经存在,还是强制创建组群 |
-p (密码) | 为新组群设置加密的密码 |
举例
1 | #groupadd mygroup 创建组 |
groupdel删除组
groupdel:删除一个已存在组,但不能删主组
需要从系统上删除组群时,可用groupdel命令来完成这项工作,如果该组群中仍包 括某些用户,则必须先使用userdel命令删除这些用户后,才能使用groupdel命令删 除组群。如果有任何一个组群的使用者在线上就不能移除该组群。
格式:# groupdel [组群名]
举例:
删除组群user1
1 | #groupdel user1 |
groupmod 修改组
格式
#groupmod [选项][组群名]
选项
选项 | 含义 |
---|---|
-g | 设置组群 |
-o | 重复使用组群GID |
-n(新组群名) | 更改组群名称 |
举例
1 | #groupmod -g 503 mygroup |
gpasswd设置组群密码
格式: gpasswd [选项][组群名]
选项 | 含义 |
---|---|
-a | 将一个用户加入到一个组群中 |
-d | 将一个用户从一个组群中删除 |
-r | 取消一个组群的组群密码 |
-R | 限制其成员访问组 |
-A(组群管理员) | 指定组群的管理员 |
-M(用户) | 设置组群的成员列表 |
举例:
1 | #gpasswd –A pl mygroup //将pl设为mygroup群组的管理员 |
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