linux用户、组、文件
多用户操作系统
多用户操作系统,就是允许多个用户同时登陆操作系统,并可以执行各自的操作,互不影响。
例如:linux、windowServer
如图所示:可以同时登录多个用户
单用户操作系统,只允许一个用户登录操作系统,例如:window7、10等,
如图所示:如果登录第二个用户时,第一个用户会被断开
本图描述的是用户、组、权限、文件之间的关系,
*创建文件,给文件分配组权限
*创建用户、组
*用户登录过程:
用户输入账号、密码,会在用户文件和密码文件中比对,正确则允许登录,登录进来的用户也就拥有了一个身份(令牌),令牌是该用户身份的象征,令牌携带了用户的组权限 信息,表示可以对哪些文件进行操作。
用户及权限详解
组 /etc/gshadow 存放组的密码
系统有数据库存放用户的UID和GID
在计算机输入id
使用组来简化授权
优先使用基本组,用户只能属于一个基本组 用户的默认组
基本组不能满足授权要求了,创建附加组,用户可以属于多个附加组
私有组 创建用户时,如果没有指定基本组,系统会创建一个和用户同名得组
用户类别
管理员 管理员的ID 就是0
普通用户 1-65535给普通用户
系统用户 1-499 专门用来运行程序的身份 不需要登陆系统
普通用户 500-60000 可以登陆系统
Login.defs定义了文件的
[root@WebServer ~]# cat /etc/login.defs | grep -v '^#'
组 管理员组
普通组
系统组
一般组
用户组类别:
私有组:创建用户是如果没有指定所属的组 系统会自动为其创建一个同名的组
基本组:用户的默认组
附加组:额外组 默认组意外的其他组
查看passwd命令的帮助 有几章?
查看帮助第5章
Passwd文件 存放的是用户信息
用户信息用冒号分隔开。
第1个字段:account 登陆名
第2个字段:password 密码
第3个字段:UID 用户ID
第4个字段:GID 基本组的ID
第5个字段:comment 注释
第6个字段:HOME 主目录
第7个字段:Shell 分配给用户的shell
查看Linux可用的shell 目录下合法的shells
nologin 不允许用户登陆
shadow文件 存放的是用户的密码
whatis shadow 查看shadow命令帮助有几章
man 5 shadow 查看第五章
/etc/shadow
第1字段:用户名
第2字段:加密的密码
第3字段:从1970年至上次改密码时间的天数
第4字段:还有几天密码才能更改
第5字段:还有多少天密码必须更改
:还有多少天用户就要受到密码过期的提示
:在用户过期后密码禁用之间的天数
:从1970年开始过多少天账户禁用
:保留字段
注:在用户密码前面加 !! , 就是锁定用户,锁定后的用户无法登录系统!
锁定用户:
解锁用户:
查看useradd和adduser命令位置 其实adduser指向了useradd
添加用户 可以看到用户的用户ID号 组ID号
设置密码
用户的默认环境
在/etc/default/useradd文件为设置添加的用户规则文件。
1 # useradd defaults file
2 GROUP=100 # 用户组ID
3 HOME=/home #把用户的家目录创建在/home中。
4 INACTIVE=-1 #是否启用帐号过期停权,-1表示不启用。
5 EXPIRE= #帐号终止日期,不设置表示不启用。
6 SHELL=/bin/bash #所用SHELL的类型
7 SKEL=/etc/skel #默认添加用户的目录默认文件存放位置。也就是说,当用户用useradd添加用户时,用户主目录下的文件都是从这个目录中复制的。
8 CREATE_MAIL_SPOOL=yes #是否创建用户邮件缓冲,yes表示创建
可以更改默认shell
组管理
groupadd
添加组
Groupadd Manager
查看组和组成员
添加组
Groupdel
用户管理相关命令
Useradd
userdel
Usermod
Passwd
Chsh
Chfn
Finger
Id
Chage
组管理
Groupadd
Groupdel
Groupmod
Gpasswd
权限管理
Chown
Chgrp
Chmod
Umask
用户管理
Useradd
Useradd
Adduser—>useradd
Useradd [options] username
-u指定用户的UID 大于500并且不能重
-g 指定用户基本组
-G可以为用户指定多个附加组 用逗号隔开
-c “comment” 注释信息
-d 为用户指定家目录
-s 指定shell的路径 最好是/etc下shells可用的安全shell
创建一个不允许登陆的用户 没有合法的shell不允许登陆
可以测试 没有合法shell的用户不能登陆和切换 cheng可以 szhang不可以
创建用户指定用户的shell为tcshell
环境变量
$PATH
$HISTZISE
$SHELL
-m 如果家目录不存在 强制创建 –k 将/etc/skel目录下的文件复制过去 存放用户的配置文件
-M 不给用户创建家目录
查看默认用户定义
创建没有家目录的用户 登陆后是这个样子的
-r 创建系统账户 没有家目录 id号1-499
Userdel
默认不删除用户家目录
Userdel –r 删除用户的同时删除用户家目录
Id
查看当前登录用户信息
-g 显示属主
-G 所属组
Usermod
-u UID
-g GID
-a -G 给用户添加新的附加组 不适用-a选项 会覆盖此前的附加组
-c 注释信息
-d –m 更改家目录 将文件移动到新位置
-s 更改用户的shell
-l 更改登陆名
-L 锁定用户 禁用
-U 解锁用户
下面将用户添加到附加组Manger
移动用户主目录
锁定用户
登陆失败
解锁用户
更改用户shell
chsh
还有个命令直接更改用户shell
Finger
Finger命令用来查看用户信息
我的系统默认没有安装finger命令
安装finger命令
显示用户信息
查看finger命令位置 类型
查看用户信息
登陆过之后再次查看
chfn
修改finger显示的信息
passwd
更改用户密码
默认更改自己的密码
管理员可以更改任何用户的密码
passwd tao
更改用户密码为redhat 使用脚本可以方便创建用户并指定密码
–l可以锁定用户账户
-u 解锁用户
man passwd 查看帮助
-d 清除密码
pwck
检查用户账户完整性
chage
和用户密码相关的设置
-d 最近一次的修改密码时间
-E 过期时间
-I 非活动时间
-m 最短使用期限
-M 最长使用期限
-W 警告时间
更改系统时间
用户更改密码 看看用户上一次更改 密码时间到1970年的多少天
密码过去警告
Whoami
显示当前用户名
[root@localhost ~]# whoami
root
Who
显示系统中有哪些用户登录系统及其修改信息
显示登录的用户有root和wsl
[root@localhost ~]# who
root pts/0 2022-03-08 11:13 (192.168.101.116)
wsl pts/1 2022-03-08 11:21 (192.168.101.116)
wsl pts/2 2022-03-08 11:22 (192.168.101.116)
组管理
Groupadd
-g 指定GID
-r 添加系统组
groupmod
修改组
-g 修改GID
-n 修改组名称
groupdel
删除组
gpasswd
将用户从组中删除
[root@WebServer ~]# gpasswd -d zhang teachers
给组设置密码,用户可以输入密码临时将属组切换到该组
newgrp
将用户的基本组临时切换到其他组 登陆到某个组,退出使用exit
可以看到用户所属的基本组
输入exit 退出所属组
手动创建用户
tom UID 580 描述javaStudent
附加组 teachers GID 550
拷贝用户配置文件 更改权限
可以切换到tom,但空密码不允许登陆
openssl
使用openssl计算密码
查看passwd 有一个计算密码哈希值的命令
man sslpasswd 查看帮助
复制
$1$12345678$gvrtc6PloAB.SZlQ21kb0/
编辑/etc/shadow
使用tom连接
登陆成功
Shell的类型
交互式shell 等待用户的输入 执行提交的命令 exit退出
非交互式shell 执行shell脚本 脚本执行结束shell退出
登录式shell
正常通过某终端登录
su – username 或 su –l username
非登录式shell
su username
图形界面下打开的终端
自动执行的shell脚本
Bash的配置文件
默认用户home目录的文件从skel复制过去
[root@WebServer ~]# ls -a /etc/skel/
全局配置 更改后对所有用户生效
/etc/profile /etc/profile.d/*.sh /etc/bashrc
个人配置
~/.bash_profile ~/.bashrc
Profile类的文件
设定环境变量 如果用户配置和全局配置设置冲突 作用范围小的越最终生效
登陆前运行命令或脚本
Bashrc类文件
设定本地变量
定义命令别名
登录式shell如何读取配置文件
先读取/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile—>~/.bashrc—>/etc/bashrc
非登录式shell如何读取配置文件
读取顺序 ~/.bashrc-->/etc/bashrc—>/etc/profile.d/*.sh
设置别名永久生效
Logout注销
再次登陆就生效
登陆执行脚本
登陆后
更改用户用户的权限遮罩码
注销后重新登陆 可以看到权限掩码
全局权限遮罩码
Udi大于199 并且用户的GID和UID相同 umask 002
文件权限
计算机资源
权限
用户
组 可以给用户授权
文件的所有者 属组 其他
用户:标识符
用户组:标识符
文件:每个用户发起一个进程 决定了该进程的权限 进程的安全上下文
文件
r:可读 可以使用cat查看文件内容
w:可写 可以编辑或删除此文件
x:可执行 exacutable 可以在命令提示符下提交给内核运行
目录
r:可以对此目录执行ls 列出内部的所有文件
w:可以在此目录中创建文件
x:可以使用cd切换进此目录 也可以使用ls –l查看内部文件的详细信息
不建议文件默认有执行权限 建议目录有x权限
r-x 读和执行
用三位二进制或者十进制标识:
000--- 无权限 0
001 --x 执行 1
010 -w- 写 2
011 -wx 写和执行 3
100 r-- 只读 4
101 r-x 读和执行 5
110 rw- 读和写 6
111 rwx 读写执行 7
三类用户的权限 可以使用三位8进制组成
752
660
740
用户信息库 还包括用户的shell
用户的ID UID 在/etc/passwd 存放用户的ID
组ID GID 在/etc/group 存放组的ID
更改文件属主属组
文件的三类用户
u 属主
g 属组
l 其他用户
chown
指定哪个文件属主是谁 只有管理员能够改变文件属主
更改目录所有者,并不会更改目录中文件的所有者
math.txt文件所有者没变
-R 修改目录以及内部文件和子目录的属主
[root@localhost ~]# chown wsl:students -R /hw
--reference =/path/to/somefile file 参考一个文件的所有者更改其他文件所有者
只修改属主:
[root@localhost ~]# chown wsl /hw/test6.txt
只修改属组:
[root@localhost ~]# chown :students /hw/test6.txt
chgrp
-R 递归修改
--reference=/path/to/somefile file
同时更改属主和属组
chown username:groupname /tmp/english.txt
只更改属组
使用.也可以更改属主和属组
chown –reference 更改的不只是属主 同时也更改属主
修改文件权限
chmod
三类用户
u
g
o
三类权限
r
w
x
修改三类用户权限
修改某类权限
修改某类用户的某位权限
语法:
chmod 用户+/=/-权限 文件/文件夹
如果用户+,是对原有权限相加,如果是=号,是等于赋予的权限,如果是-号,则是对权限相减
更改三类用户
参照权限
更改属主的权限
更改属组的权限
同时更改多个组的权限 属组和其他组改成只读
将属组和其他组 更改为执行和读取
如果两类用户不一样的权限 才分开
全部用户读取
给用户增加某个权限
给属主属组增加写权限
给所有人增加执行权限
去所有人执行权限
a可以省掉
可以同时去掉多个权限
新建一个用户可以看到主目录只有自己是读写执行
Umask 遮罩码
用户创建文件默认权限
666-umask
用户创建目录 默认权限
777-umask
普通用户创建文件默认没有执行权限
普通用户umask是002 创建文件 默认权限是666-002=664 创建文件夹 默认权限
目录的默认权限
管理员的是022
‘
可以看到管理员和普通用户的区别 管理员创建的文件和文件夹 属组 都不允许写入
用户创建文件默认权限
设定用户umask
文件默认不允许有执行权限,如果算的结果有执行权,怎将其权限加1
如果创建文件和文件夹默认权限设置为其他人 没有任何权限
将权限掩码设置为027
666-027
777-027