linux关于用户身份与文件权限详细介绍
用户身份与文件权限
用户身份与能力
UID
- 管理员的UID为0:系统的管理员用户
- 系统用户的UID为1~999:
- 普通用户从1000开始。
useradd命令
用于创建新的用户
useradd 【选项】 用户名
默认情况下:用户家目录会被存放在/home下,默认的shell解释器为/bin/bash.而且默认会创建一个与该用户同名的基本用户组。
这些默认可由下面的参数修改。
参数 | 作用 |
---|---|
-d | 指定用户的家目录 |
-e | 账户的到期时间,格式为YYYY-MM-DD |
-u | 指定该用户的默认UID |
-g | 指定一个初始的用户基本组(必须已经存在) |
-G | 指定一个或者多个扩展用户组 |
-N | 不创建与用户同名的基本用户组 |
-s | 指定该用户的默认shell解释器 |
groupadd命令
用于创建用户组
usermod命令
用于修改用户的属性
用户的信息保存在/etc/passwd
usermod 【选项】 用户名
参数 | 作用 |
---|---|
-c | 填写用户账户的备注信息 |
-d -m | 这两参数连用,可重新指定用户的家目录,并且把旧的数据转移过去 |
-e | 账户的到期时间,格式为YYYY-MM-DD |
-g | 变更所属用户组 |
-G | 变更拓展用户组 |
-L | 锁定用户,禁止其登录系统 |
-U | -s 变更默认终端 |
-u | 修改用户的uid |
passwd命令
用于修改用户密码,过期时间,认证信息
passwd 【选项】 【用户名】
参数 | 作用 |
---|---|
-l | 锁定用户,禁止其登录 |
-u | 接除锁定,容许用户登录 |
–stdin | 允许通过标准输入修改用户密码,如echo “mima” | passwd --stain Username |
-d | 该用户可以空密码登录 |
-e | 强制用户在下次登录时修改密码 |
-S | 显示用户的密码是否被锁定,以及密码所采用的加密算法 |
userdel命令
用于删除用户
uderdel 【选项】 用户名
参数 | 作用 |
---|---|
-f | 强制删除用户 |
-r | 同时删除用户以及家目录 |
文件权限与归属
尽管linux系统中一切皆文件,但是每个文件的类型不尽相同
字符 | 文件类型 |
---|---|
- | 普通文件 |
d | 目录文件 |
l | 链接文件 |
b | 块设备文件 |
c | 字符设备文件 |
p | 管道文件 |
文件的特殊权限
SUID
suid是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
当文件由rwx变为rws时,就意味着普通用户临时的获得了修改passwd文件的权限
SGID
让执行者临时拥有属组的权限。
让某个目录中创建的文件自动继承该目录的用户组。
chown命令
设置文件所有者
chown 【-R】 user名 :group名 文件名 # -R是在文件夹的时候添加
chmod 命令
修改文件所属用户,所属组,其他用户的权限
chmod 777 文件名
chgrp命令
设置文件所属组
chgrp 【-R】 所属组 文件名 (目录名)
SBIT
SBIT特殊权限位,可确保用户只能删除自己的文件,而不能删除其他用户的文件
当设置SBIT后,文件的其他人权限的x就会变为t,如果没x就会变为T。
文件隐藏属性
chattr命令
用于设置文件的隐藏属性
chattr 【参数】 文件 # 加功能就是+参数,移除功能就是移除参数
参数 | 作用 |
---|---|
i | 文件:不允许删除改名,添加和修改数据 目录:只能修改目录下文件的数据,不允许新建和删除文件。 |
a | 文件:只能增加,不能删除修改 目录:只能修改,新建,不允许删除。 |
S | 文件内容在修改之后立即同步到硬盘 |
s | 彻底从硬盘中删除,不可回复 |
A | 不在修改这个目录或文件的最后访问时间(atime) |
b | 不在修改文件或目录的存取时间 |
D | 检查压缩文件中的错误 |
d | 使用dump命令备份时忽略本文件/目录 |
c | 默认将文件或者目录进行压缩 |
u | 当删除文件后依然保持其在硬盘中的数据,方便日后恢复 |
t | 让文件系统支持尾部合并 |
X | 可以直接访问压缩文件中的内容。 |
lsattr命令
用于显示文件的隐藏权限
文件访问控制列表(ACL)
不知道大家是否注意到,前文讲的一般权限,特殊权限,隐藏权限其实有一个共性-----权限是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了。
基于普通文件或目录设置的ACL其实就是针对指定的用户或者用户组设置文件或目录的操作权限。
如果针对某个目录设置了ACL,则目录的文件会继承其ACL,若针对文件设置了ACL,则文件不在继承其所在目录的ACL。
setfacl命令
用于管理文件的ACL规则
setfacl 【参数】 文件名称
-R #针对目录文件使用的递归参数
-m #针对普通文件使用的参数
-b #删除某个文件的ACL
例:给一个普通用户设置进去/root的rwx权限
但是的但是 我们怎么知道这个文件上是不是有ACL呢。
常用的ls命令是看不到ACL表的信息的,但是却可以看到文件的权限最后一个点(.)变成了加号(+)。这就意味着文件已经设置了ACL了。
getfacl命令
用于显示文件上设置的ACL信息
getfacl 文件名称
su命令与sudo服务
su命令
解决切换用户身份的需求使得当前用户在不退出登录的情况下,顺畅的切换到其他用户。
sudo
你从普通用户切换到root用户,是需要root密码的,这就存在着泄露root用户密码的风险。
sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务
sudo 【参数】 命令名称
参数 | 作用 |
---|---|
-h | 列出帮助信息 |
-l | 列出当前用户可执行的命令 |
-u 用户名 或 UID值 | 以指定的用户身份执行命令 |
-k | 清空密码的有效时间,下次执行sudo命令需要再次进行密码验证 |
-b | 在后台执行指定的命令 |
-p | 更改询问密码的提示语 |
总结来说,sudo有以下功能:
- 限制用户执行指定的命令
- 记录用户执行的每一条命令
- 配置文件(/etc/sudoers)提供集中的用户管理,权限与主机参数(visudo就是这里面的内容)
- 验证密码的后5分钟内无需让用户再次验证密码。
visudo的内容:
谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表
dianxin3 ALL=(ALL) ALL
aqassoc ALL=(ALL) NOPASSWD:ALL,!/bin/su,!/sbin/init,!/sbin/shutdown # !后面的是除了的
- 点赞
- 收藏
- 关注作者
评论(0)