您的位置:首页 > 其它

用户身份与文件权限

2019-09-26 19:20 253 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Less_jie/article/details/101465762

用户身份与能力
在Linux系统中,用户的身份号码即UID(User IDentification)具有唯一性,因此可通过用户的UID值来判断用户身份。
UID为0:系统的管理员用户。(Linux系统的管理员之所以是root,是因为该用户的UID为0,与用户名叫什么无关。)
UID为1~999:系统用户 Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。
useradd命令
用于创建新的用户,格式:useradd [选项] 用户名。
创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。
参数:

useradd -d /home/limuzi -u 1626 -s /sbin/nologin muzi #创建用户muzi,指定其家目录路径,UID以及Shell解释器。
id muzi #查看用户uid,gid和用户组信息。输出结果:uid=1626(muzi) gid=1626(muzi) groups=1626(muzi)
groupadd命令:
用于创建用户组,格式:groupadd [选项] 组名
usermod命令:
用于修改用户的属性,格式:usermod [选项] 用户名。
用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,诸如用户的UID、基本/扩展用户组、默认终端等。
参数:

passwd命令:
用于修改用户密码、过期时间、认证信息等,格式:passwd [选项] [用户名]。
普通用户只能使用passwd命令修改自身的系统密码,而root管理员则有权限修改其他所有人的密码。
root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便。既然root管理员可以修改其他用户的密码,就表示完全拥有该用户的管理权限。
参数:

userdel命令:
userdel命令用于删除用户,格式为“userdel [选项] 用户名”。
如果我们确认某位用户后续不再会登录到系统中,则可以通过userdel命令删除该用户的所有信息。在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用-r参数将其删除。
参数:






文件权限与归属
在Linux系统中一切都是文件,但是每个文件的类型不尽相同,因此Linux系统使用了不同的字符来加以区分,常见的字符如下所示。
-:普通文件。
d:目录文件。
l:链接文件。
b:块设备文件。(键盘等)
c:字符设备文件。
p:管道文件。
文件权限:可读(r)、可写(w)、可执行(x),也可以分别用数字4、2、1表示。


通过ls命令查看到的文件属性信息

文件的特殊权限
1.SUID
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。
查看passwd命令属性时发现所有者的权限由rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限。另外有读者会好奇,那么如果原本的权限是rw-呢?如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S。
格式:chmod u+s 文件名

2.SGID
1.>让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);
2.>在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。例在目录设置SGID,则用户在该目录创建文件,文件的默认的用户组将由用户自己的基本用户组变为目录的所属组,使得同组内的其他用户都能访问该文件。
格式:chmod -R g+s 文件名

3.SBIT
确保用户只能删除自己的文件,而不能删除其他用户的文件。如果赋予了SBIT权限,则其他用户中的可执行权限位会从x/-变为t/T。
chmod和chown
1.>chmod命令是一个非常实用的命令,能够用来设置文件或目录的权限,格式为“chmod [参数] 权限 文件或目录名称”。
2.>chown命令可以设置文件或目录的所有者和所属组,其格式为“chown [参数] 所有者:所属组 文件或目录名称”。
3.>chmod和chown命令是用于修改文件属性和权限的最常用命令,它们还有一个特别的共性,就是针对目录进行操作时需要加上大写参数-R来表示递归操作,即对目录内所有的文件进行整体操作。
常用参数:
a:所有人
u:所有者
g:所有组
o:其他用户
r:可读权限
w:可写权限
x:可执行权限
s:suid或sgid权限(一般配合u或g参数使用,如果配合a参数,则代表同时设置suid和sgid)
t:sbit权限(一般配合o参数使用,配合u或g参数使用无任何效果,配合a参数使用效果等同于配合o参数)
+:添加权限
-:移除权限

文件隐藏权限
Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。有用户曾经在生产环境和RHCE考试题目中碰到过明明权限充足但却无法删除某个文件的情况,或者仅能在日志文件中追加内容而不能修改或删除内容,这在一定程度上阻止了黑客篡改系统日志的图谋,因此这种“奇怪”的文件也保障了Linux系统的安全性。
chattr命令
chattr命令用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”。

chattr命令中用于隐藏权限的参数及其作用

lsattr命令
lsattr命令用于显示文件的隐藏权限,格式为“lsattr [参数] 文件”。在Linux系统中,文件的隐藏权限必须使用lsattr命令来查看,平时使用的ls之类的命令则看不出端倪。
一旦使用lsattr命令后,文件上被赋予的隐藏权限马上就会原形毕露。此时可以按照显示的隐藏权限的类型(字母),使用chattr命令将其去掉。



文件访问控制列表
一般权限、特殊权限、隐藏权限其实有一个共性—权限是针对某一类用户设置的。
如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了。通俗来讲,基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限。另外,如果针对某个目录设置了ACL,则目录中的文件会继承其ACL;若针对文件设置了ACL,则文件不再继承其所在目录的ACL。
setfacl命令
setfacl命令用于管理文件的ACL规则,格式为“setfacl [参数] 文件名称”。
文件的ACL提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。
常用参数:
-R:递归参数,针对目录文件时使用;
-m:针对普通文件时使用;
-b:删除文件或目录的ACL;

getfacl命令
getfacl命令用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”。要设置ACL,用的是setfacl命令;要想查看ACL,则用的是getfacl命令。

su命令与sudo服务
Linux系统为了安全性考虑,使得许多系统命令和服务只能被root管理员来使用,但是这也让普通用户受到了更多的权限束缚,从而导致无法顺利完成特定的工作任务。
su命令
su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户,比如从root管理员切换至普通用户。
sudo命令
sudo命令把特定命令的执行权限赋予给指定用户,这样既可保证普通用户能够完成特定的工作,也可以避免泄露root管理员密码。我们要做的就是合理配置sudo服务,以便兼顾系统的安全性和用户的便捷性。sudo服务的配置原则也很简单—在保证普通用户完成相应工作的前提下,尽可能少地赋予额外的权限。
sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务,格式为“sudo [参数] 命令名称”。
常用参数:

sudo命令具有如下功能:
1.>限制用户执行指定的命令:
2.>记录用户执行的每一条命令;
3.>配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;
4.>验证密码的后5分钟内(默认值)无须再让用户再次验证密码。

visudo命令
用于配置用户权限。使用该命令配置用户权限时将禁止多个用户同时修改sudoers配置文件,还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。只有root管理员才能用visudo命令。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: