linux用户身份与用户权限

(时隔一个月再更新,其中痛苦,唯有自知。不管怎么样,学习还得继续)
linux是一个多用户、多任务的操作系统,具有很好的稳定性与安全性在幕后保障linux系统安全的是一系列复杂的配置工作。

1 用户身份与能力

在RHEL7系统中,每个用户都自己的UID,像人的身份证号一样是不重复的,用户的身份有下面这些:

  • 管理员UID为0:系统的管理员用户
  • 系统用户的UID为1-999: linux为了避免因某个服务程序出现漏洞而被黑客提权至整个系统,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏的范围。
  • 普通用户的UID是从1000开始的:是由管理员创建的用户日常工作的用户。

为了方便管理管理属于同一组的用户,linux引入用户组的概念。通过使用组号码(GID, group ID). 每个用户创建时会自动创建一个与其同名的用户组,如果该用户以后被归纳入其他组,则这个其他用户组称之为拓展用户组。一个用户只有一个用户组,但是可以有多个拓展用户组。
用户组相关命令之前已经记过linux常用用户组与用户命令,这里不重复了。

2 文件权限与归属

2.1文件类型与权限类型

linux中一切都是文件,但是文件的类型不尽相同,因此linux中使用不同的字符来加以区分,常见的字符如下:

  • - :普通文件
  • d:目录文件
  • l:链接文件
  • b:块设备文件
  • c: 字符设备文件
  • p:管道文件
    每个文件都有所有者和所有组,并且规定了文件的所有者,所有组以及其他人对文件的读写执行的泉下。文件的读写执行可以简写为rwx, 可以分别用数字4、2、1表示。 文件的数字化就是这三个数字相加而来比如rwx就是4+2+1=7。如果是6只能是4+2=rw。
2.3文件的特殊权限

在复杂多变的生产环境中,单纯设置文件的读写执行无法满足我们都安全和灵活性的需求,因此便有了SUID\SGID\SBIT的特殊权限。 特殊权限与一般权限同时使用,弥补一般权限不能实现的功能。
SUID
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者(只对可执行的二进制程序有效)
SGID
SGID主要实现两种功能:

  1. 让执行者临时用户属组的权限。
  2. 在某个目录中创建的文件自动继承该目录的用户组。

SBIT
SBIT(Sticky Bit)特殊权限位可确保用户只能删除自己的文件。被成为”粘滞位“或保护位。当目录被设置成保护位之后,文件的其他人权限,原本可执行x会变成t,原本没有x权限会变成T.

chmod -R o+t file

2.4文件的隐藏属性

linux中的文件除了具备一般或特殊权限外还有一种隐藏权限。隐藏权限常用到两个命令
chattrchattr用于设置文件的隐藏权限,lsattr用于显示文件的隐藏权限,隐藏权限必须用这个命令来看,ls看不出端倪。

2.5文件的访问控制列表

前文说的三种权限都是针对某一类用户设置的, 如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表ACL(access control list)了。基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限。另外,如果针对目录设置ACL, 那么目录中的文件将会继承其ACL.主要使用两个命令:

设置ACL权限 setfacl [opt] filename
显示CAL权限 getfacl filename

3 su 与 sudo命令

实验环境中其实不存在安全问题, 系统崩了再装一个也问题不大,但在生产环境中还是要多一份敬畏之心,不要用root管理员身份去做事, 一旦写了错误的命令,就很危险。 linux为了系统安全性考虑,很多命令和服务只能使用root, 这也让受到了更多的权限束缚。普通用户为了完成特定的工作任务,就需要
切换身份——su命令。

[redhat@linuxlearner ~]$ su - root 
Password: 
Last login: Tue Aug 24 22:25:03 EDT 2021 on pts/0
[root@linuxlearner ~]# su - redhat 
Last login: Tue Aug 24 22:26:28 EDT 2021 on pts/0

su 和用户名之间有一个-符号,意味着完全切换到另一个用户, 如果没有-, 环境变量是不改变的,如下:

[redhat@linuxlearner ~]$ echo $USER
redhat
[redhat@linuxlearner ~]$ su root 
Password: 
[root@linuxlearner redhat]# echo $USER
redhat

加一个 - 号就不一样了:

[redhat@linuxlearner ~]$ echo $USER 
redhat
[redhat@linuxlearner ~]$ su - root 
Password: 
Last login: Tue Aug 24 22:31:53 EDT 2021 on pts/0
[root@linuxlearner ~]# echo $USER 
root

尽管像上面这样使用su命令后,普通用户可以切换到root,但是这有暴露管理员密码的风险而且使用root本身也有风险。sudo命令可以把特定命令的执行权限赋予给指定用户。 sudo可以

  1. 限制用户执行的命令
  2. 记录用户执行的每一条命令
  3. 配置文件提供集中的用户管理、权限与主机等参数
  4. 验证密码后的五分钟无须用户再次验证密码
[root@linuxlearner ~]# visudo
     96 ##
     97 ## Allow root to run any commands anywhere
     98 root    ALL=(ALL)       ALL
     99 redhat  ALL=(ALL)       ALL

保存之后,普通用户就可以使用sudo拥有root的权限了。

[redhat@linuxlearner root]$ sudo ls 
anaconda-ks.cfg  initial-setup-ks.cfg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值