二、用户身份与文件权限

Linux 是一个多用户、多任务的操作系统,具有很好的稳定性与安全性,在幕后保障 Linux系统安全的则是一系列复杂的配置工作 。本文将详细讲解文件的所有者、所属组以及其他人可对文件进行的读(r)、写(w)、执行(x)等操作,以及如何在 Linux 系统中添加、删除、修改用户账户信息 。我们还可以使用 SUID、 SGID 与 SBIT 特殊权限更加灵活地设置系统权限功能,来弥补对文件设置一般操作权限时所带来的不足 。隐藏权限能够给系统增加一层隐形的防护层,让黑客最多只能查看关键日志信息,而不能进行修改或删除 。而文件的访问控制列表(List,ACL)可以进一步让单一用户、用户组对单一文件或目录进行特殊的权限设置,让文件具有能满足工作需求的最小权限 。最后还将讲解如何使用 su 命令与 sudo 服务让普通用户具备管理员的权限,不仅可以满足日常的工作需求,还可以确保系统的安全性 。
1.用户身份与能力
?用户身份:管理员 UID 为 0:系统的管理员用户 。
?系统用户 UID 为 1~999: Linux 系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围 。
?普通用户 UID 从 1000 开始:是由管理员创建的用于日常工作的用户 。
注:UID 是不能冲突的,而且管理员创建的普通用户的 UID 默认是从 1000开始的(即使前面有闲置的号码)
为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念 。通过使用用户组号码(GID,Group ),我们可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务 。假设有一个公司中有多个部门,每个部门中又有很多员工 。如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设置权限 。例如,可以通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的数据库信息等 。
另外,在 Linux 系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人 。如果该用户以后被归纳入其他用户组,则这个其他用户组称之为扩展用户组 。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要 。
:建立用户帐号
语法格式 [] LOGIN
说明:
-c<备注>加上备注文字 。备注文字会保存在passwd的备注栏位中 。-d<登入目录>指定用户登入时的起始目录 。-D变更预设值.-e<有效期限>指定帐号的有效期限 。-f<缓冲天数>指定在密码过期后多少天即关闭该帐号 。-g<群组>指定用户所属的群组 。-G<群组>指定用户所属的附加群组 。-m自动建立用户的登入目录 。-M不要自动建立用户的登入目录 。-n取消建立以用户名称为名的群组.-r建立系统帐号 。-s指定用户登入后所使用的shell 。-u指定用户ID 。
实例:创建一个普通用户并指定家目录的路径、用户的 UID 以及 Shell 解释器 。在下面的命令中,请注意/sbin/,它是终端解释器中的一员,与 Bash 解释器有着天壤之别 。一旦用户的解释器被设置为,则代表该用户不能登录到系统中:
[root@LB-nginx-01 ~]# useradd -d /home/centos/ -u 8888 -s /sbin/nologin centos[root@LB-nginx-01 ~]# id centosuid=8888(centos) gid=8888(centos) 组=8888(centos)
:创建用户组
语法格式: [] group
说明:
-g:指定新建工作组的 id;-r:创建系统工作组,系统工作组的组ID小于 500;-K:覆盖配置文件 "/ect/login.defs";-o:允许添加组 ID 号不唯一的工作组 。-f,--force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出 。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)