linux用户身份与文件权限

  • A+
所属分类:linux技术
摘要

tips:可以将安装好的系统设置为一次快照,这样即便系统彻底崩溃了,也可以在5秒的时间内快速还原出一台全新的系统,而不用担心数据丢失

tips:可以将安装好的系统设置为一次快照,这样即便系统彻底崩溃了,也可以在5秒的时间内快速还原出一台全新的系统,而不用担心数据丢失

1、用户身份和能力

Linux系统的管理员之所以是root,并不是因为它的名字叫root,而是因为该用户的身份号码即UID(User IDentification)的数值为0。

管理员UID为0:系统的管理员用户。

系统用户UID为1~999:Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会由独立的系统用户负责运行,进而有效控制被破坏范围。

普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。

id命令用于显示用户的详细信息,语法格式为“id用户名”

useradd命令用于创建新的用户账户,语法格式为“useradd [参数] 用户名”

groupadd命令用于创建新的用户组,语法格式为“groupadd [参数] 群组名”

usermod命令用于修改用户的属性,英文全称为“user modify”,语法格式为“usermod [参数] 用户名”

passwd命令用于修改用户的密码、过期时间等信息,英文全称为“password”,语法格式为“passwd [参数] 用户名”

userdel命令用于删除已有的用户账户,英文全称为“user delete”,语法格式为“userdel [参数] 用户名”

2、文件权限与归属

对于一般文件来说,权限比较容易理解:“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。但是,对于目录文件来说,理解其权限设置就不那么容易了。很多资深Linux用户其实也没有真正搞明白。对于目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录。

linux用户身份与文件权限

linux用户身份与文件权限

linux用户身份与文件权限

在图5-3中,包含了文件的类型、访问权限、所有者(属主)、所属组(属组)、占用的磁盘大小、最后修改时间和文件名称等信息

tip:排在权限前面的减号(-)是文件类型(减号表示普通文件),新手经常会把它跟“无权限”混淆。尽管在Linux系统中一切都是文件,但是不同的文件由于作用不同,因此类型也不尽相同(有一点像Windows系统的后缀名)。常见的文件类型包括普通文件(-)、目录文件(d)、链接文件(l)、管道文件(p)、块设备文件(b)以及字符设备文件(c)。

3、文件的特殊权限

1. SUID

SUID是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效)。

这很像在古装剧中见到的手持尚方宝剑的钦差大臣,他手持的尚方宝剑代表的是皇上的权威,因此可以惩戒贪官,但这并不意味着他永久成为了皇上。因此这只是一种有条件的、临时的特殊权限授权方法。

2. SGID

SGID特殊权限有两种应用场景:当对二进制程序进行设置时,能够让执行者临时获取文件所属组的权限;当对目录进行设置时,则是让目录内新创建的文件自动继承该目录原有用户组的名称。

chmod命令用于设置文件的一般权限及特殊权限,英文全称为“change mode”,语法格式为“chmod [参数] 文件名”。

chown命令用于设置文件的所有者和所有组,英文全称为change own,语法格式为“chown所有者:所有组 文件名”。

3. SBIT(Sticky Bit)特殊权限位

SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。换句话说,当对某个目录设置了SBIT粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了。

tip:文件能否被删除并不取决于自身的权限,而是看其所在目录是否有写入权限

使用chmod命令设置特殊权限的参数

linux用户身份与文件权限

linux用户身份与文件权限

4、文件的隐藏属性

​ 既然叫隐藏权限,那么使用常规的ls命令肯定不能看到它的真面目。隐藏权限的专用设置命令是chattr,专用查看命令是lsattr。

chattr命令用于设置文件的隐藏权限,英文全称为change attributes,语法格式为“chattr [参数] 文件名称”

lsattr命令用于查看文件的隐藏权限,英文全称为“list attributes”,语法格式为“lsattr [参数] 文件名称”

5、文件访问控制列表(ACL)

setfacl命令用于管理文件的ACL权限规则,英文全称为“set files ACL”,语法格式为“setfacl [参数] 文件名称”

getfacl命令用于查看文件的ACL权限规则,英文全称为“get files ACL”,语法格式为“getfacl [参数] 文件名称”

ACL权限的设置都是立即且永久生效的,不需要再编辑什么配置文件

备份/home目录上的ACL权限时,可使用-R递归参数,这样不仅能够把目录本身的权限进行备份,还能将里面的文件权限也自动备份。

ACL权限的恢复也很简单,使用的是--restore参数。由于在备份时已经指定是对/home目录进行操作,所以不需要写对应的目录名称,它能够自动找到要恢复的对象

6、su命令与sudo服务

su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户

su命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。

sudo命令用于给普通用户提供额外的权限,语法格式为“sudo [参数] 用户名”。

当然,如果担心直接修改配置文件会出现问题,则可以使用sudo命令提供的visudo命令来配置用户权限。

但是每次执行sudo命令都要输入一次密码其实也挺麻烦的,这时可以添加NOPASSWD参数,使得用户下次再执行sudo命令时就不用密码验证:

visudo命令用于编辑、配置用户sudo的权限文件,语法格式为“visudo [参数]”。

visudo命令只有root管理员才可以执行,普通用户在使用时会提示权限不足。