一、基本概念
Linux是一个多用户多任务的分时操作系统,可以多个用户同时登陆Linux。这一点比Windows可优秀多了。
一个用户操作Linux需要经过三个步骤的权限认证:
- Authentication:认证
- Authorization:授权
- Audition审计-->权限是否符合条例
Linux中有账户的概念:账户实质上就是一个用户在系统上的标识。操作系统为了识别每个用户,会给每个用户定义一个ID,就是UID。用户组就相当于多个用户的容器,有的系统又叫角色(便于更高效地管理用户权限);在linux系统中,用户组也有一个ID,叫GID。
Linux中的账户包括
- 用户账户(UID)
- 普通用户账户:在系统上的任务是进行普通工作,又分为系统用户和登录用户。其中,系统用户是为了能够让那些后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从来不用登陆系统。 如Oracle账号。
- 或管理员账户:在系统上的任务是对普通用户和整个系统进行管理。
- 组账户(组是用户的集合,GID)
- 标准组:标准组可以容纳多个用户
- 私有组:私有组中只有用户自己
ID范围的区分
用户标识:user id,UID
通常使用16bits二进制数字表示(0-65535)
管理员的用户标识:0
普通用户:1-65535
系统用户:1-499(Centos6)、1-999(Centos7)
登录用户:500-60000(Centos6)、1000-60000(Centos7)用户组标识:group id,GID
通常使用16bits二进制数字表示(0-65535)
管理员的用户组标识:0
普通用户组:1-65535
系统用户组:1-499(Centos6)、1-999(Centos7)
登录用户组:500-60000(Centos6)、1000-60000(Centos7)
二、Linux中的用户和组
Linux通过名称解析库“/etc/passwd”文件解析用户名与用户ID之间的对应关系。
name:password:UID:GID:GECOS:directory:shell
name: 用户名
password:可以是加密的密码,也可是占位符x;
UID:
GID:用户所属的主组的ID号;
GECOS:注释信息
directory:用户的家目录;
shell:用户的默认shell,登录时默认shell程序;
Linux通过名称解析库“/etc/group”文件解析用户名与用户ID之间的对应关系。
group_name:passwd:GID:user_list
user_list:该组用户的成员;以此组为附加组的用户的用户列表
三、Linux中的密码校验
用户在登录linux系统时,会对比password与之前保存在“/etc/shadow”、“/etc/gshadow”文件中的密码是否一致。
密码的使用策略:
- 使用随机密码;
- 最短长度不要低于8位;
- 应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;
- 定期更换。
Linux的密码加密方式使用单向加密算法,并且添加随机数(salt)计算得出的。
整个密码信息由九个部分组成,以冒号分割,含义如下:
用户名:加密的密码:最近一次修改密码的时间(从1970开始的天数):最短使用期限:最长使用期限:警告期段:密码禁用时间(非活动期限):账户过期期限:保留字段
其中,加密的密码字段使用$分隔,第一个段表示使用的加密算法,第二个段表示添加的salt。第三段表示加密后的密码。
系统识别算法ID | 算法名称 |
1 | md5:message digest,128bits |
2 | sha:secure hash algorithm,160bits |
3 | sha224 |
4 | sha256 |
5 | sha384 |
6 | sha512 |
四、Linux的权限校验
Linux的文件管理权限分为读、写和执行。分别用二进制的100、010、001或者十进制的421来表示。如下:
五、Linux中的sudo、sudo -i、su、su -命令
sudo :暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。缺点是每次执行超级用户权限都要在命令前加上 sudo ,优点是在当前终端再使用 sudo 不要再重复输入密码(只对于当前终端有效)。
sudo -i:为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。
su : 切换到某某用户模式,提示输入密码时的密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。
su - :su - 和 su 的不同之处在于 su - 切换用户后的目录为切换后目录的家目录,而 su 则是原目录。
六、Linux中对用户权限操作的一些常见命令
1.用户管理:
-
useradd
-
usermod
-
userdel
2.组管理:
-
groupadd
-
groupmod
-
groupdel
3.批量管理用户:
- 成批添加/更新一组账户:
newusers
- 成批更新用户的口令:
chpasswd
4.组成员管理:
- 向标准组中添加用户
-
gpasswd -a <用户账号名> <组账号名>
-
usermod -G <组账号名> <用户账号名>
- 从标准组中删除用户
-
gpasswd -d <用户账号名> <组账号名>
5.口令维护(禁用、恢复和删除用户口令):
- 设置用户口令:
-
passwd [<用户账号名>]
- 禁用用户账户口令
-
passwd -l <用户账号名>
- 查看用户账户口令状态
-
passwd -S <用户账号名>
- 恢复用户账户口令
-
passwd -u <用户账号名>
- 清除用户账户口令
-
passwd -d <用户账号名>
6.文件授权:
- chmod +(增加)/-(减少) 权限文件:chmod 755 abrt //赋予abrt权限rwxr-xr-x
- chown修改文件的所有者
- chgrp修改文件的所属组
我的微信公众号:架构真经(id:gentoo666),分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。每日更新哦!
参考资料: