linux学习笔记之用户身份与权限

2021/10/23 7:09:49

本文主要是介绍linux学习笔记之用户身份与权限,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

用户身份与文件权限  

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

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

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

 

通过使用用户组号码(GID,Group IDentification),可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务(在/etc/group里查看)  

另外,在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳到其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。

Tips

基本用户组就像是原生家庭,是在创建账号(出生)时就自动生成的;而扩展用户组则像工作单位,为了完成工作,需要加入到各个不同的群体中,这是需要手动添加的。

命令

id命令用于显示用户的详细信息,语法格式为“id用户名” useradd命令用于创建新的用户账户,语法格式为“useradd [参数] 用户名”。

 

 useradd命令中的参数以及作用

参数 作用
-d 指定用户的家目录(默认为/home/username)
-e 账户的到期时间,格式为YYYY-MM-DD.
-u 指定该用户的默认UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认Shell解释器
  groupadd命令 用于创建新的用户组,语法格式为“groupadd [参数] 群组名”。   usermod命令用于修改用户的属性,语法格式为“usermod [参数] 用户名”  

 usermod命令中的参数以及作用

参数 作用
-c 填写用户账户的备注信息
-d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的UID
  passwd命令用于修改用户的密码、过期时间等信息
参数 作用
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
--stdin 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username
serdel命令用于删除已有的用户账户   在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用-r参数将其删除
参数 作用
-f 强制删除用户
-r 同时删除用户及用户家目录
 
 
文件权限(一般、特殊、隐藏)与归属
  可读(r)、可写(w)、可执行(x)等权限。对于一般文件来说,“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。但是,对于目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录

 

    文件权限的字符与数字表示

 

若某个文件的权限为7,则代表可读、可写、可执行(4+2+1)   减号是占位符,代表这里没有权限,在数字表示法中用0表示     常见的文件类型包括普通文件(-)、目录文件(d)、链接文件(l)、管道文件(p)、块设备文件(b)以及字符设备文件(c)  
文件的特殊权限
  SUID是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效) [root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 33600 Apr 7 2020 /usr/bin/passwd SGID特殊权限有两种应用场景:当对二进制程序进行设置时,能够让执行者临时获取文件所属组的权限;当对目录进行设置时,则是让目录内新创建的文件自动继承该目录原有用户组的名称   SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。换句话说,当对某个目录设置了SBIT粘滞位权限后(只能改目录权限),那么该目录中的文件就只能被其所有者执行删除操作了,比如/tmp [root@localhost ~]# ll -d /tmp
drwxrwxrwt. 10 root root 4096 Oct 22 19:45 /tmp

原有x执行权限,特殊权限是小写,没有则是大写,如s/S, t/T  

      SUID、SGID、SBIT特殊权限的设置参数

参数 作用
u+s 设置SUID权限
u-s 取消SUID权限
g+s 设置SGID权限
g-s 取消SGID权限
o+t 设置SBIT权限
o-t 取消SBIT权限
其实,SUID、SGID与SBIT也有对应的数字表示法,分别为4、2、1。也就是说777还不是最大权限,最大权限应该是7777,其中第1个数字代表的是特殊权限位
[root@localhost ~]# chmod 7534 anaconda-ks.cfg
[root@localhost ~]# ll anaconda-ks.cfg
-r-s-wsr-T. 1 root root 1037 Aug 20 15:45 anaconda-ks.cfg

更改权限和归属命令 chmod  权限 文件    (权限用数字,或u/g/o/a  +/-  r/w/x) chown  所有者:所属组  文件 或chown  所有者.所属组  文件
针对目录要加-R参数,不加子文件不会变    
文件的隐藏属性

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

如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”

参数 作用
i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
s      彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域),xfs文件系统不支持
[root@localhost ~]# chattr +i anaconda-ks.cfg
[root@localhost ~]# lsattr anaconda-ks.cfg
----i--------------- anaconda-ks.cfg
  lsattr命令用于查看文件的隐藏权限
文件访问控制列表

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

 

 setfacl命令中的参数以及作用

参数 作用
-m 修改权限
-M 从文件中读取权限
-x 删除某个权限
-b 删除全部权限
-R 递归子目录

 

ACL权限提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制。使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用-R递归参数;针对普通文件则使用-m参数;如果想要删除某个文件的ACL,则可以使用-b参数,要删除某一条指定的权限,就用-x参数

[root@linuxprobe ~]# setfacl -Rm u:linuxprobe:rwx /root
                                                             u用户(g组):用户名:权限        文件
[root@linuxprobe ~]# setfacl -x g:linuxprobe /etc/fstab
常用的ls命令是看不到ACL信息的,但是却可以看到文件权限的最后一个点(.)变成了加号(+),这就意味着该文件已经设置了ACL   getfacl命令用于查看文件的ACL权限规则,英文全称为“get files ACL”,语法格式为“getfacl [参数] 文件名称”   在备份/home目录上的ACL权限时,可使用-R递归参数,这样不仅能够把目录本身的权限进行备份,还能将里面的文件权限也自动备份
[root@linuxprobe /]# getfacl -R home > backup.acl
ACL权限的恢复也很简单,使用的是--restore参数
[root@linuxprobe /]# setfacl --restore backup.acl

 



这篇关于linux学习笔记之用户身份与权限的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程