Linux 是一个多用户、多任务的操作系统
1:用户身份与能力
设计 Linux 系统的初衷之一就是为了满足多个用户同时工作的需求,因此 Linux 系统必须具备很好的安全性。
root管理员级别最高,它拥有最高的系统所有权,能够管理系统的各项功能,如添加/删除用户、启动/关闭服务进程、开启/禁用硬件设备等
root账户的UID为0
UID 就相当于我们的身份证号码一样具有唯一性,因此可通过用户的 UID 值来判断用户身份。
- 管理员 UID 为 0:系统的管理员用户。
- 系统用户 UID 为 1~999: Linux 系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
- 普通用户 UID 从 1000 开始:是由管理员创建的用于日常工作的用户。
需要注意的是,UID 是不能冲突的,而且管理员创建的普通用户的 UID 默认是从 1000开始的(即使前面有闲置的号码)。
为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过使用用户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。
套娃 另外,在 Linux 系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳入其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。
1.1:useradd命令
useradd 命令用于创建新的用户,格式为“useradd [选项] 用户名”
可以使用 useradd 命令创建用户账户。使用该命令创建用户账户时,默认的用户家目录会被存放在/home 目录中,默认的 Shell 解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。
一个简单的例子:
1.2:groupadd命令
groupadd 命令用于创建用户组,格式为“groupadd [选项] 群组名”
1.3:usermod命令
usermod 命令用于修改用户的属性,格式为“usermod [选项] 用户名”
例如:变更用户组
1.4:passwd命令
passwd 命令用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”
普通用户只能使用 passwd 命令修改自身的系统密码,而 root 管理员则有权限修改其他所有人的密码。更酷的是,root 管理员在 Linux 系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便。
实例:跟新密码:
1.5:userdel命令
userdel 命令用于删除用户,格式为“userdel [选项] 用户名”
2:文件权限与归属
尽管在 Linux 系统中一切都是文件,但是每个文件的类型不尽相同,因此 Linux 系统使用了不同的字符来加以区分,常见的字符如下所示。
- -:普通文件。
- d:目录文件。
- l:链接文件。
- b:块设备文件。
- c:字符设备文件。
- p:管道文件。
在 Linux 系统中,每个文件都有所属的所有者和所有组,并且规定了文件的所有者、所有组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。
对于一般文件来说::“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。
对于目录文件来说:“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录。
若某个文件的权限为 7 则代表可读、可写、可执行(4+2+1);若权限为 6 则代表可读、可写(4+2)。
3:文件的特殊权限
在复杂多变的生产环境中,单纯设置文件的 rwx 权限无法满足我们对安全和灵活性的需求,因此便有了 SUID、SGID 与 SBIT 的特殊权限位。
3.1:SUID
SUID 是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属
主的权限
3.2:SGID
SGID 主要实现如下两种功能:
- 让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);5.3 文件的特殊权限 103
- 在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。
chmod可以用于设置文件或者目录的权限
格式为“chmod [参数] 权限 文件或目录名称”。
3.3:SBIT
SBIT 特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件
换句话说,当对某个目录设置了 SBIT 粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了。
4:文件的隐藏属性
Linux 系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。
4.1:chattr命令
chattr 命令用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。
如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”。
4.2:lsattr命令
lsattr 命令用于显示文件的隐藏权限,格式为“lsattr [参数] 文件”
5 文件访问控制列表
望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了
如果针对某个目录设置了 ACL,则目录中的文件会继承其 ACL;若针对文件设置了 ACL,则文件不再继承其所在目录的 ACL。
5.1:setfacl 命令
setfacl 命令用于管理文件的 ACL 规则,格式为“setfacl [参数] 文件名称”。
其中,针对目录文件需要使用-R 递归参数;针对普通文件则使用-m 参数;如果想要删除某个文件的 ACL,则可以使用-b 参数。
5.2:getfacl 命令
getfacl 命令用于显示文件上设置的 ACL 信息,格式为“getfacl 文件名称”。
6:su与sudo
6.1:su
su 命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户
切换用户:
上面的 su 命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。强烈建议在切换用户身份时添加这个减号(-)。
另外,当从 root 管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成 root管理员就需要进行密码验证了
6.2:sudo
用 sudo 命令把特定命令的执行权限赋予给指定用户,这样既可保证普通用户能够完成特定的工作,也可以避免泄露 root 管理员密码。
sudo 命令用于给普通用户提供额外的权限来完成原本 root 管理员才能完成的任务,格式为“sudo [参数] 命令名称”
修改sudio配置文件,使用visudo命令,注意只有root才能使用这个命令:
设置一个普通用户可以以root用户的身份执行cat命令
标签:文件,用户组,用户,命令,Linux,权限,身份 来源: https://blog.csdn.net/qq_45331503/article/details/117374222
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。