目录
一、用户账号和的概述
(一)用户类别
(二)组账号
(三)UID号
(四)GID号
(五)配置文件
二、用户账号管理
(一)创建用户
1.不加选项
2.-u
3.-d
4.-e
5.-g
6.-G
7.-M
8.-s
(二)修改用户账号属性
1.-l
2.-L
3.-U
4.-u
(三)密码管理
(四)删除用户
(五)用户账号的初始配置文件
三、组账号管理
(一)创建组
(二)添加、设置、删除组成员
(三)删除组
(四)查看命令
1.命令之----w
2.命令之-----who
3.命令之-----user
4.命令之-----finger
四、文件/目录的权限
(一)权限的分类
1.对文件的权限
2.对目录的权限
3.访问用户的分类
(二)修改权限
1.模式法
2.八进制数字法
3.修改属主、组
4.特殊权限
5.umask
6.acl访问控制列表
用户一般来说是指使用计算机的人,计算机对使用其每一个用户给了一个特定的名称,用户就可以使用这些名称来登录使用计算机,除了人之外,一些系统服务也需要含有部分特权的用户账户运行;因此,出于安全考虑,用户管理应运而生,它加以明确限制各个用户账户的权限,root在计算机中拥有至高权限,所以一般只做管理用,非特权用户可以通过SU或SUDO程序来临时获得特权
Linux中通过用户和用户组实现访问-----包括对文件访问、设备使用的控制
个人可以拥有很多账户,只是名称不同,比如root已经占用就不能再次使用,此外,任意用户可能从属某个用户组,此用户可以加入某些已经存在的组来获取改组的特权
Linux系统中,每一个文件都有属一个用户(属主)和一个用户组(属组)。另外还有三种类型的访问权限:读(read)、写(write)、运行(execute)。我们可以针对文件的属主、属组而设置相应的访问权限。
我们可以使用ls或者stat命令查看该文件的权限
在Linux中,用户的类别一般分为一下三种
用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建
用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组
附加组:除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定
一对一:一个用户可以存在一个组中
一对多:一个用户可以存在多个组中
多对一:多个用户可以存在一个组中
多对多:多个用户可以存在多个组中
UID(User IDentity ):用户标识号,Linux中每个用户都有一个以数字为表达方式的身份标记,类似于每个人的身份证号
GID(Group IDentify):组标识号。与UID号相似,每一个组也有自己的标识
名称 | 帐号信息 | 说明 |
用户配置文件 | /etc/passwd | 记录了每个用户的基本属性,并且对所有用户 可读每一行记录对应一个用户,每行记录使用 冒号进行分割 |
用户组文件 | /etc/group | 用户组的所有信息存放地,并且组名不能重复 |
用户对应的密码信息 | /etc/shadow | 因为passwd是对所有用户可读的,为了安全起见把密码从passwd里分离出来放入单独的文件,该文件只有root用户 有读权限,从而保证密码的安全性 |
1.用户配置文件
打开/etc/passwd
各字段代表的含义
打开/etc/group
打开/etc/shadow
kysw:$6$2YaZfC2f$RJctv3I765WZvyMXDUDEy.1cYBadOqLuIAp7ZALl3m.0TLjKhgSYwaYvhd8jHkYgPfRwT1GW.SsLG0aquobfb0:19717:0:99999:7:::
知识扩展:第三段字符从1970-01-01日开始算起,这个日子是UNIX诞生的日子,实际上在1969年Unix就已经诞生,正式公布为1970年1月1日,当时有个“千年虫”事件。Unix的作者也没有想到它会存在这么长的时间,所以当时出现了一个BUG,当时间到2000年时系统无法识别,就会从1900年重新开始计算
命令-------useradd
语法:useradd 【选项】... 用户名
作用:添加新用户,并对新用户进行个性化设置
选项:
-u | 指定用户的 UID 号,要求该 UID 号码未被其他用户使用。 |
-d | 指定用户的宿主目录位置(当与-M 一起使用时,不生效)。 |
-e | 指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。 |
-g | 指定用户的基本组名(或使用 GID 号)。 |
-G | 指定用户的附加组名(或使用 GID 号)。 |
-M | 不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录。 |
-s | 指定用户的登录 Shell /sbin/nologin |
无特殊情况,按顺序依次生成UID号与组ID号
useradd lida
指定UID号
指定用户的宿主目录位置(当与-M 一起使用时,不生效)
两台不同的机器创建的用户,为了给大家演示方便,不用太纠结
指定用户失效时间
指定用户的基本组名(或使用 GID 号)
指定用户的附加组名(或使用 GID 号)
不建立宿主目录不建立宿主目录
指定用户的登录 Shell
命令之----------usermod
语法:usermod 【选项】... 用户名
作用:对已经创建的用户属性进行修改
选项:
-l:更改用户账号的登录名称(Login Name)
-L:锁定用户账户
-u: 修改用户的 UID 号
-U:解锁锁用户账户
-d:修改用户的宿主目录位置。
-e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g:修改用户的基本组名(或使用 GID 号)
-G:修改用户的附加组名(或使用 GID 号)
-s:指定用户的登录 Shell
更改用户账号的登录名称
锁定用户账户,锁定后账户就无法登录了
解锁锁用户账户
修改用户的 UID 号
命令之------passwd
语法:passwd [选项]... 用户名 不加用户名默认为当前用户修改密码
作用:为用户账号设置密码
选项:
不加选项:passwd 用户名
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户。
-S:查看用户账户的状态(是否被锁定)。
-u:解锁用户账户。
免交互修改密码
其它选项与useradd基本一致,在此不再过多演示
命令之--------userdel
userdel 【选项】 用户
不加条件的话,用户删除后,该用户的家目录还会存在
-r 将用户家目录一起删除
用户宿主目录下的初始配置文件只对当前用户有效
~/ .bash_profile
#此文件中的命令将在该用户每次登录时被执行,他会设置一些环境变量,并且会调用该用户的~/.bashrc文件
~/.bashrc
#此文件中的命令将在该用户每次打开新的bash shell时(包括登录系统)被执行(登录 切换 新的bash环境)
~/.bash_logout
#此文件中的命令将在该用户每次退出时bash shell时使用
/etc/bashrc
命令之------groupadd
语法:groupadd 【选项】 组名
作用:创建新的用户组,并设置个性化属性
groupadd 【-g GID号】 组账号名
[root@localhost ~]#groupadd ky1
[root@localhost ~]#tail -1 /etc/group
ky1:x:2004:
[root@localhost ~]#groupadd -g 2500 ky2
[root@localhost ~]#tail -2 /etc/group
ky1:x:2004:
ky2:x:2500:
#不加 -g 会根据前一个创建用户GID号依次生成
#加上 -g 后可以自定义GID号
命令之------gpasswd
语法:gpasswd 【选项】 用户名 组名
作用:对组成员进行操作
选项:
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
groupdel 组帐号名
查询已登录到主机的用户信息
标题 | 含义 |
---|---|
USER | 登录到系统的用户。 |
TTY | 登录终端。 |
FROM | 表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。 |
LOGIN@ | 用户登陆的日期和时间。 |
IDLE | 表示某个程序上次从终端开始执行到现在所持续的时间。 |
JCPU | 和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。 |
PCPU | 当前进程所占用的 CPU 运算时间。 |
WHAT | 当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。 |
相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令。 who 命令的基本格式如下:
显示当前登录到系统的用户列表
此命令需要手动安装 ,它可以查看到用户的详细信息
在Unix/Linux系统中,文件和目录都有各自的权限设置,这些权限决定了哪些用户或用户组可以
文件或目录进行操作
①读取(r):可使用文件查看类工具,比如:cat,可以获取其内容
②写入(w):可修改其内容
③执行(x):可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)
① r :可以使用ls查看此目录中文件列表
② w :可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
③ x :可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
文件和目录的权限通常通过一组九个字符来表示,格式如下:
这九个字符分为三组,每组三个,分别代表所有者(user)、所属组(group)和其他用户(others)的权限。
命令之----chmod
语法 :chmod 【选项】 文件名
作用:修改文件/目录对特定用户的权限
选项:
+ 是加上,在原有的基础上加上权限
- 是在原有的基础上减去权限
= 赋予 就是原有权限不看 等于号后面的权限
权限使用三位八进制数来表示所有者、所属组和其他用户的权限。每一位数字的范围是0-7,分别对应以下权限组合:
0:无权限
1:执行权限
2:写入权限
3:写入和执行权限
4:读取权限
5:读取和执行权限
6:读取和写入权限
7:读取、写入和执行权限
在Linux显示为 r=4、w=2、x=1
例如:
使用chmod修改权限后
命令之-----chown
语法:chown 用户:组名 文件名
作用:修改文件/目录的所属住和所属组
只修改所属主 :输入 chown 属主名 文件名
只修改所属组:输入 chown .属组名 文件名
同时修改:输入 chown 属主名:属组名 文件名
除了基本的读、写、执行权限外,还有一些特殊的权限位:
s(setuid/setgid)
当设置在可执行文件上时,允许以文件所有者的身份(setuid)或文件所属组的身份(setgid)运行该文件。
此处s表示当使用这个命令程序时,把当前用户当成文件的所属主
修改密码就是修改/etc/shadow文件内容
正常来说,作为普通用户,我们是没有权限去修改的,但是passwd命令加上了suid这个特殊权限,就可以将使用该命令的用户作为修改文件的所属主,无视权限
添加命令为: chown s(g)+s 文件名
t(粘滞位/sticky bit)
当设置在目录上时,仅允许文件所有者删除该目录下的文件,即使其他用户具有写入权限。
输入chmod o+t 文件名
其它用户虽然有权限,但是无法删除
只有该文件的属主可以删除
umask 的值可以用来保留在创建文件权限
新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变 因为为了安全考虑,默认是将x(执行)权限去掉 (x=1)
新建目录的默认权限: 777-umask
非特权用户umask默认是 002
root的umask 默认是 022
可以实现单个用户的权限设置,
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } 文件名....
-m, --modify-acl 更改文件的访问控制列表
-M, --modify-file=file 从文件读取访问控制列表条目更改
-x, --remove=acl 根据文件中访问控制列表移除条目
-X, --remove-file=file 从文件读取访问控制列表条目并删除
-b, --remove-all 删除所有扩展访问控制列表条目
-k, --remove-default 移除默认访问控制列表
--set=acl 设定替换当前的文件访问控制列表
--set-file=file 从文件中读取访问控制列表条目设定
--mask 重新计算有效权限掩码
-n, --no-mask 不重新计算有效权限掩码
-d, --default 应用到默认访问控制列表的操作
-R, --recursive 递归操作子目录
-L, --logical 依照系统逻辑,跟随符号链接
-P, --physical 依照自然逻辑,不跟随符号链接
--restore=file 恢复访问控制列表,和“getfacl -R”作用相反
--test 测试模式,并不真正修改访问控制列表属性
-v, --version 显示版本并退出
-h, --help 显示本帮助信息
举个例子
单个删除
-b :清空控制列表
总结:通过用户和组的管理,可以对不同的用户进行不同的权限设置