概述
系统概述(用户)
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除与修改。
- 用户口令的管理。
- 用户组的管理。
摘自菜鸟教程
文件所有者
默认下创建文件的用户即为所有者;也可以创建时同时指定其他用户为文件的所有者;或文件创建后通过高级用户变更所有者
为保护数据的安全,用户可对文件进行相关的读写执行等权限的设置
用户组
大致分为三组:
- 管理员root (id/uid 为0)
- 普通用户
- 系统用户(id为1~499)
对于普通用户,根据需要可进行自行分组,处于同一组可以拥有类似的功能。
用户组的信息存放在etc目录下的group文件中
文件所属组
与用户组相呼应
当某个文件若设置其文件所属组为2
并对文件所属组的权限设为可读可修改
,那么这个2组
中的所有用户
都可以对该文件进行读写操作
其他用户
相对关系,某个组以外的其他用户都可以称为其他用户
root
属于root
用户组,是超级用户,拥有全部权限
可以创建
、删除
普通用户和用户组,设置用户权限
用户和用户组管理
用户
添加
ueseradd
命令
useradd 选项 用户名
- -c comment 指定一段注释性描述。(备注信息)
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
- -f 缓冲天数,密码过期时在指定天数后关闭账号
- -e 账号的有效期限
- -m 自动建立用户的登陆目录
- -r 创建系统账号
注意此时创建的用户是不能使用的,因为未对该账户设置密码,账号处于锁定状态
设置密码
passwd
passwd 选项 用户名
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
- -s 列出密码的相关信息
现在对刚才的账户进行密码设置:
提醒:需要有一定的安全性,否则将可能不会通过检查,最好使用8位长的口令,口令中包含有大写、小写字母和数字
使用命令查看shadow文件尾的三行数据
分别对应创建的账户所对应的密码信息,每一项以:
分隔,第二项为加密后的密码
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
删除用户
userdel
userdel 选项 用户名
- -f 强制删除,即使是当前用户
- -r 删除用户的同时删除与用户相关的所有文件
检查发现不存在了
修改用户
在创建用户的时候,我们没有对该用户的一些信息进行详细的设置,这给了我们在后期可能如果错误操作的改正机会
usermod
usermod 选项 参数
在使用前要确定改用户没有在计算机上执行任何程序
下面的绝大多数选项与创建时的选项是相同的(加粗为不同的)
- -c comment 指定一段注释性描述。(备注信息)
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
- -l 修改用户账户名称
- -L 锁定用户,使密码失效
- -U 解除密码锁定
对操作进行检查
用户组
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
添加用户组
groupadd
group 选项 参数
- -g GID 指定新用户组的组标识号(GID)。
- -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
- -r 创建系统用户组,范围为1~499
这里创建一个编号为1800名字为group1的用户组
检查发现:
输出的结果被:
分隔成三项,分别为组名
、密码位
、组id
删除用户组
groupdel
groupdel 用户组名
该命令无参
修改用户组属性
groupmod 选项 用户组
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。(即允许组id不唯一)
- -n 新用户组 将用户组的名字改为新名字
这里把group1
修改为了shanghai
这里指定了一个新的用户在该组之下,并设置了一个缓冲时间;用了一个在线转换时间戳的网站转换了一下,不知道是不是支持时间格式化输入,如果支持的话望大佬给予指正,感谢!
用户组切换
将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。
每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
在成为附件组成员后,用户就可以获得了相对应的组别权限。
用户可以从附加组中移除,但不能从基本组中移除
newgrp
newgrp 用户组名
用户切换
su
su -(空格)username
- 不加任何参数将默认切换到root用户;但没有转到root用户根目录下
su -
表示切换到root用户,并且转到根目录下- 一些参数
- -c 执行完指定的指令后,切换会原来用户 (su -c ls root)
- -l 切换用户时同时切换到相对应的用户的工作目录,环境变量随之改变
- -m,-p 切换时不改变环境变量
- -s 指定要执行的shell
sudo
su命令切换为root用户获取部分权限时需要知道root的密码,有一定的不安全性
sudo
sudo 选项 -u 用户 命令
sudo可以看做受限的su命令。
如果其他用户想要使用root的部分权限就可以使用该命令;但是若要使用,需要讲用户名添加到/etc/sudoers
中,该操作由root用户完成。这时候存在在该文件的用户只需要知道自己的密码就可以使用root身份,在密码匹配正确后,5分钟之内有效
- -V 显示版本编号
- -h 会显示版本编号及指令的使用方式说明
- -l 显示出自己(执行 sudo 的使用者)的权限
- -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
- -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
- -b 将要执行的指令放在背景执行
- -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
- -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
- -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
- -H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
- command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
sudoers文件
有一定的语法规范,尽量不要使用vim对其进行编辑,通常使用visudo
命令打开(其本质还是vi);在保存退出时系统也会对该文件进行语法检查
找到下面的界面
框起来的这句话的解释是:使root用户能够在任何情况下执行任何命令
对其进行编辑的时候:需要符合下列格式:
账户名 主机名称=(可切换的身份)可执行的命令
参数解释:
- 账户名:要设置权限的名
- 主机名称:账户名对应的用户可以从哪些网络主机连接当前Linux主机,root默认都可以
- 可切换的身份:决定该用户可以在哪些用户身份之间进行切换,执行哪些命令
- 可执行的命令:改用户可以执行哪些命令,命令的路径应为绝对路径
ALL
代表任何主机、身份、命令
使用sudo -l
查看当前用户能够使用哪些命令和不能使用哪些命令
通过!
可使某些用户禁止某些命令
zhangsan ALL=(root)!/bin/more
式:
账户名 主机名称=(可切换的身份)可执行的命令
参数解释:
- 账户名:要设置权限的名
- 主机名称:账户名对应的用户可以从哪些网络主机连接当前Linux主机,root默认都可以
- 可切换的身份:决定该用户可以在哪些用户身份之间进行切换,执行哪些命令
- 可执行的命令:改用户可以执行哪些命令,命令的路径应为绝对路径
ALL
代表任何主机、身份、命令
使用sudo -l
查看当前用户能够使用哪些命令和不能使用哪些命令
通过!
可使某些用户禁止某些命令
zhangsan ALL=(root)!/bin/more