目录
// 除了 passwd -S 命令可以查看用户的密码信息外,还可以利用 chage 命令,它可以显示更加详细的用户密码信息,并且和 passwd 命令一样,提供了修改用户密码信息的功能
1.用户和组管理
1.1 账户类型
Linux是多用户操作系统,为了安全考虑,需要对不同用户进行不同的权限管理
Linux下用户有两种,普通用户和超级用户(管理员)
普通用户需要超级用户创建,超级用户有最高的权限
1.2 创建用户命令” useradd “
useradd 【选项】【用户名】
声明:
①创建用户时,需要用-m选项,用来自动给用户创建一个用户主目录()
不然要在 /home下手动创建。
②创建用户时,如果不指定属组,那么系统就会自动创建一个组,且组名
与用户名相同的,并将用户放入改组。
常用选项如下:
例子:创建一个名为“test”用户,uid为2022,自动创建用户目录
useradd -u 2022 -m test
1.3 创建组命令” groupadd “
groupadd 【选项】【组名】
常用选项:
– g 指定组的GID
– o 一般与-g选项一起用,此选项可以使设置GID与已有的GID相同。
(一个GID多个组使用)
1.4 UID与GID
UID(用户ID)是Linux系统中每一个用户的唯一标识符。
①root用户的UID固定值为0
②系统用户的UID默认值为1-499
③普通用户默认为分配值为500-60000
GID(组ID)每一组也有一个数字形式的标识符。
①root组的GID固定值为0
②系统组的GID默认值为1-499
③普通组默认为分配值为500-60000
通过命令” id ” ,查看用户UID和GID
id 【用户名】
1.5 相关配置文件
①在Linux系统中管理用户配置文件主要有两个,分别为:/etc/passwd 和 /etc/shadow。
前者用于存放用户基本信息,后者用于存放密码相关信息(密码信息经过加密)。
②与用户相识,组也有两个文件存放组配置文件,分别为:/etc/group /和 /etc/gshadow
两个文件与用户两文件功能基本相同。
1.5.1 /etc/passwd文件
此文件是文本文件,存放用户登录需要的相关信息
例:查看文件/etc/passwd的最后一条信息
[root@localhost home]# tail -1 /etc/passwd
natasha:x:1003:2023::/home/natasha:/bin/bash
//可以看到,以冒号:为分隔符,一共有7个字段,解释为:
用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
1.5.2 /etc/shadow文件
此文件存放与用户密码相关的信息,密码为加密的信息,只有root用户才可以读此文件
例:查看文件/etc/shadow的最后一条信息
[root@localhost home]# tail -1 /etc/shadow
natasha:!!:19095:0:99999:7:::
//可以看到,以冒号:为分隔符,一共有 9 个字段,解释为:
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
1.5.3/etc/group文件
此文件存放组基本信息
例:查看文件/etc/group的最后一条信息
[root@localhost home]# tail -1 /etc/group
natasha:x:2023:
//可以看到,以冒号:为分隔符,一共有 4个字段,解释为:
组名:密码:GID:该用户组中的用户列表
1.5.4 /etc/gshadow文件
此文件存放组密码的加密信息,只能用root用户访问此文件。
例:查看文件/etc/gshadow的最后一条信息
[root@localhost home]# tail -1 /etc/gshadow
natasha:!::
//可以看到,以冒号:为分隔符,一共有 4个字段,解释为:
组名:加密密码:组管理员:组附加用户列表
1.6 管理用户和组
1.6.1修改用户命令” usermod “
usermod 【选项】【用户名】
常用选项:
- -c 用户说明:修改用户的说明信息,即修改 /etc/passwd 文件目标用户信息的第 5 个字段;
- -d 主目录:修改用户的主目录,即修改 /etc/passwd 文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径;
- -e 日期:修改用户的失效曰期,格式为 “YYYY-MM-DD”,即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段;
- -g 组名:修改用户的初始组,即修改 /etc/passwd 文件目标用户信息的第 4 个字段(GID);
- -u UID:修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第 3 个字段(UID);
- -G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件;
- -l 用户名:修改用户名称;
- -L:临时锁定用户(Lock);
- -U:解锁用户(Unlock),和 -L 对应;
- -s shell:修改用户的登录 Shell,默认是 /bin/bash。
例:修改用户test的UID
usermod -u 修改的UID号 test
1.6.2删除用户命令” userdel “
userdel 【选项】【用户名】
常用选项:
-r 把用户的主目录一起删除
1.6.3 修改组命令” groupmod ”
groupmod 【选项】【组名】
常用选项:
- -g GID:修改组 ID;
- -n 新组名:修改组名;
1.6.4 删除组命令” groupdel “
groupdel 【组名】
1.7 口令管理
1.7.1 为用户设置密码命令” passwd “
为用户设置密码是必要的,因为新创建的用户没有密码是无法登陆的。
passwd 【选项】【用户名】
常用选项:
- -S:查询用户密码的状态,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用;
- -l:暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 “!”,使密码失效。仅 root 用户可用;
- -u:解锁用户,和 -l 选项相对应,也是只能 root 用户使用;
- –stdin:可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用;
- -n 天数:设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;
- -x 天数:设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;
- -w 天数:设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;
- -i 日期:设置用户密码失效日期,对应 /etc/shadow 文件中各行密码的第 7 个字段。
-stdin选项的使用:给test用户增加密码为:passwd
[root@localhost ~]#echo “lamp” | passwd –stdin test
1.7.2 禁用用户账号命令” chage “
// 除了 passwd -S
命令可以查看用户的密码信息外,还可以利用 chage 命令,它可以显示更加详细的用户密码信息,并且和 passwd 命令一样,提供了修改用户密码信息的功能
chage 【选项】【用户名】
常用选项:
-d, –lastday 最 近 日 期 将 最 近 一 次 密 码 设 置 时 间 设 为 “最 近 日 期 ”
-E, –expiredate 过 期 日 期 将 帐 户 过 期 时 间 设 为 “过 期 日 期 ”,文件中的第 8 个字段
-h, –help 显 示 此 帮 助 信 息 并 推 出
-I, –inactive INACITVE 过 期 INACTIVE 天 数 后 , 设 定 密 码 为 失 效 状 态
-l, –list 显 示 帐 户 年 龄 信 息
-m, –mindays 最 小 天 数 将 两 次 改 变 密 码 之 间 相 距 的 最 小 天 数 设 为 “最 小 天 数 ”
-M, –maxdays 最 大 天 数 将 两 次 改 变 密 码 之 间 相 距 的 最 大 天 数 设 为 “最 大 天 数 ”
-R, –root CHROOT_DIR chroot 到 的 目 录
-W, –warndays 警 告 天 数 将 过 期 警 告 天 数 设 为 “警 告 天 数 ”
例:查看testpasswd用户的密码状态:
[root@localhost ~]# chage -l testpasswd
最 近 一 次 密 码 修 改 时 间 : 4月 29, 2020
密 码 过 期 时 间 : 8月 06, 2020
密 码 失 效 时 间 : 从 不
帐 户 过 期 时 间 : 5月 20, 2020
两 次 改 变 密 码 之 间 相 距 的 最 小 天 数 : 1
两 次 改 变 密 码 之 间 相 距 的 最 大 天 数 : 99
在 密 码 过 期 之 前 警 告 的 天 数 : 7
chage命令完成用户第一次登陆必须改密码操作 :
[root@localhost ~]#chage -d 0 lamp
0代表:1970年1月1日这一天
2.权限管理
2.1查看文件和目录
首先查看一下某yum目录下内容
[root@localhost /]# ls -ld /etc/yum/*
drwxr-xr-x. 2 root root 6 11月 5 2018 /etc/yum/fssnap.d
drwxr-xr-x. 2 root root 54 3月 20 18:06 /etc/yum/pluginconf.d
drwxr-xr-x. 2 root root 26 3月 20 18:04 /etc/yum/protected.d
drwxr-xr-x. 2 root root 37 3月 20 18:06 /etc/yum/vars
-rw-r–r–. 1 root root 444 11月 5 2018 /etc/yum/version-groups.conf
看到最前面的10列字母,第一列有字母 d 的表示为目录,- 代表为文件
后面2-9列为文件或目录的权限,我们可以把9列等分成3-3-3。
①前3列(第2-4个字符)为文件所有者具有的权限。
②中间3列(第5-7个字符)为属组具有的权限。
③后3列(第8-10个字符)为其他用户权限。
由上可知,文件权限主要针对三类对象
属主:u (owner)
属组:g (group)
其他:o (other)
r-w-x 代表的含义:
代表字符 | 权限 | 文件含义 | 目录含义 |
r | 读权限 | 读文件内容 | 列出目录中文件 |
w | 写权限 | 修改文件 | 创建,删除目录 |
x | 执行权限 | 执行文件 | 使用cd命令进入目录 |
**由二进制,rwx可以分别由数字表示为:4(r)- 2(w)- 1(x)
2.2 设置文件和目录命令” chmod “
2.2.1 数字形式” chmod ” 命令
由上可知:r-w-x分别对应的数字为4-2-1
例:drwxr-xr-x —-分隔开rwx,r-x,r-x
此目录(d)权限为7-5-5
利用此方法修改权限:
例:给test文件设置权限为666
[root@localhost ~]# ll test
-rw-r–r–. 1 root root 0 4月 30 09:58 test //未设置前644
[root@localhost ~]# chmod 666 test
[root@localhost ~]# ll test
-rw-rw-rw-. 1 root root 0 4月 30 09:58 test //设置后666
特别说明:如想要给目录下的所有子目录所有文件都设置权限,则需要使用-R(大写)选项
例:给test目录下的所有子目录所有文件
[root@localhost ~]# chmod [-R] 权限值 文件名
2.2.2 字符形式的” chmod “命令
权限赋予也可以使用字母形式
例:给test文件赋予-rwxrw-rw-权限
[root@localhost ~]# chmod u=rwx,g=rw,o=rw test
[root@localhost ~]# ll test
-rwxrw-rw-. 1 root root 0 4月 30 09:58 test
还可以使用+-符号对u g o 进行权限的增加或减少
例:给test文件的其他(o)增加x执行权限
[root@localhost ~]# chmod o+x test
[root@localhost ~]# ll test
-rwxrw-rwx. 1 root root 0 4月 30 09:58 test
// 可以看到其他用户增加了x的权限
2.2.3 设置文件归属命令” chown “
此命令可修改文件或目录的属主(所有者)或属组
修改文件所有者
[root@localhost ~]# chown [-R] 所有者 文件或目录
修改文件属组
[root@localhost ~]# chown [-R] :所属组 文件或目录
所有者和属组一起修改
[root@localhost ~]# chown [-R] 所有者:所属组 文件或目录
-R :修改指定目录下所有文件和子目录的归属
2.2.4 文件或目录的生成掩码命令” umask “
Windows 系统中,新建的文件和目录时通过继承上级目录的权限获得的初始权限,而 Linux 不同,它是通过使用 umask 默认权限来给所有新建的文件和目录赋予初始权限的。
获取默认生成掩码:直接输入umask
[root@localhost ~]# umask
0022
// root默认是0022,普通用户默认是 0002
可以看到有4位数字,但上面权限只有讲到3位,umask 默认权限的确由 4 个八进制数组成,但第 1 个数代表的是文件所具有的特殊权限(SetUID、SetGID等),在这先不讨论特殊权限。
最后的文件或目录权限并不是由生成掩码赋予,而是通过如下计算获得:
初始权限 = 最大默认权限 – umask权限
由此衍生出最大默认权限
Linux’文件最大默认权限为:666 rw-rw-rw-
而目录最大权限为:777 rwxrwxrwx
所以,文件最后默认权限应该为
666 (rw-rw-rw-)-022 (—-w–w-)= 644(rw–r–r–)
目录的最后默认权限为
777(rwxrwxrwx)-022(—-w–w-)=755(rwxr-xr-x)
2.2.5 永久设置umask值
我们用umask设置的umask值只在当此登入有效,下次登陆失效,所以我们要设置umask为永久生效的话,需要到: /etc/bashrc配置文件进行设置。
[root@localhost ~]# vim /etc/profile
………
if [ $UID -gt 499]&&[ “‘id -gn'” = “‘id -un'” ];
then
umask 002
// 如果UID大于499(普通用户),则使用此umask值
else
umask 022
// 如果UID小于499(系统/root用户),使用此umask值……….
3 系统高级权限
3.1 SET位权限
// SET位权限又叫作特殊权限,也就是除了rwx以外的权限,既:s权限…
s权限是什么?
s权限,特殊权限,有了s权限的文件,在使用者使用文件的过程中会临时获得该文件属主的身份及部分权限。s权限所在位置在属主的x位置上,并将其覆盖。但此权限仅可用于可执行文件。
s权限如何赋予?
可以同rwx一样, 用字符方式增加,例:
chmod u+s 可执行文件名
例: 给test文件增加s权限
[root@localhost ~]# chmod u+s test
[root@localhost ~]# ll test
-rwsrw-rwx. 1 root root 0 4月 30 09:58 test
// 可以看到x变成了s ,当使用者访问文件时,会以root身份访问,但root身份仅存在这一次,当访问结束,身份也就随之结束。
3.2 粘滞位权限
何为粘滞位权限?
简单地说,此权限用于保护文件数据,怎么保护呢,一般情况下,用户只要有写入w权限,就可以删除目录中的任何文件,但我们知道,Linux是多用户操作,别人的数据存放在公告目录下,别人可以随意删除,这当然不合理。所以有了粘滞位权限:t ,设置了此权限后,只有root用户和文件所有者可以随意删除,其他则不可以。既保证了数据的安全。
t权限如何赋予?
例:给test文件赋予t权限
[root@localhost ~]# chmod o+t test
[root@localhost ~]# ll test
-rwsrw-rwt. 1 root root 0 4月 30 09:58 test
//注意看其他用户的x变成了t。
3.3 ACL权限
(Access Control List 访问控制列表)
3.3.1 ACL权限存在的意义
在传统的权限赋予中,有属主,属组,其他用户的权限赋予,但这样的权限赋予有一定的局限性,当我们想要给某个用户单独指定特定的权限时,传统的权限赋予方式就无法满足了。但ACL权限可以满足此缺陷。
3.3.2 设置ACL权限命令” setfacl “
setfacl 【选项】【文件名】
常用选项如下:
-m | 设定 ACL 权限。如果是给予用户 ACL 权限,参数则使用 “u:用户名:权限” 的格式,例如 setfacl -m u:st:rx /project 表示设定 st 用户对 project 目录具有 rx 权限;如果是给予组 ACL 权限,参数则使用 “g:组名:权限” 格式,例如 setfacl -m g:tgroup:rx /project 表示设定群组 tgroup 对 project 目录具有 rx 权限。 |
-x | 删除指定用户(参数使用 u:用户名)或群组(参数使用 g:群组名)的 ACL 权限,例如 setfacl -x u:st /project 表示删除 st 用户对 project 目录的 ACL 权限。 |
-b | 删除所有的 ACL 权限,例如 setfacl -b /project 表示删除有关 project 目录的所有 ACL 权限。 |
-d | 设定默认 ACL 权限,命令格式为 “setfacl -m d:u:用户名:权限 文件名”(如果是群组,则使用 d:g:群组名:权限),只对目录生效,指目录中新建立的文件拥有此默认权限,例如 setfacl -m d:u:st:rx /project 表示 st 用户对 project 目录中新建立的文件拥有 rx 权限。 |
-R | 递归设定 ACL 权限,指设定的 ACL 权限会对目录下的所有子文件生效,命令格式为 “setfacl -m u:用户名:权限 -R 文件名”(群组使用 g:群组名:权限),例如 setfacl -m u:st:rx -R /project 表示 st 用户对已存在于 project 目录中的子文件和子目录拥有 rx 权限。 |
-k | 删除默认 ACL 权限。 |
例:给用户Tom用户单独在test文件增加rwx权限
[root@localhost ~]# setfacl -m u:Tom:rwx test
[root@localhost ~]# ll test
-rwsrwxrwt+ 1 root root 0 4月 30 09:58 test
// 如果要设置组ACL,则把u换成g后加组名和权限即可,当前不在演示
3.3.3 删除ACL权限
[root@localhost ~]# setfacl -x u:Tom test
3.3.4 管理ACL权限命令” getfacl ”
利用此命令可以查看所有ACL权限设置
getfacl 【文件或目录名】
例:查看ACL设置
[root@localhost ~]# getfacl test
# file: test
# owner: root
# group: root
# flags: s-t
user::rwx
user:Tom:rwx
……………
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154605.html