一、linux用户基础
用户限制进程可以使用不可以使用哪些资源
每个用户拥有一个userID,操作系统实际使用userID
每个用户属于一个主组,属于一个或者多个附属组
每个组拥有一个GroupID
每个进程以一个用户的身份运行,并接受用户可访问的资源限制
每个可登陆用户拥有一个指定的shell
用户ID为32位,从0开始,但为了兼容老式系统,ID限制在60000以下
用户类型
根用户:ID为0
系统用户:ID从0到499,专门为某些进程专用的服务,不需要shell(/sbin/nologin)
普通用户:ID大于499
查看用户 相关命令
id 查看当前用户
passwd 修改当前用户密码
whoami 显示当前用户
who 显示登录的用户信息
w 显示登陆的用户的详细信息
相关文件
/etc/passwd 保存用户信息
用户名:密码:userID:groupID:用户描述:用户家目录:用户登录shell
/etc/shadow 保存用户密码(加密)
/etc/group 保存组信息
管理用户和组相关命令
命令 | 参数 | 说明 |
useradd 参数 用户名 | -d 指定用户家目录 -s 指定用户登陆shell -u 指定用户uid -g 指定用户所属主组 -G指定用户所属附属组 | 创建用户 |
usermod 参数 用户名 | -l 修改用户名 -u 修改uid -g 修改用户主组 -G 修改用户附属组 -L 锁定用户 -U 解锁用户 | 修改用户 |
userdel 用户名 | -r(同时删除家目录) | 删除用户 |
groupadd 组名 | 创建组 | |
groupmod 参数 组名 | groupmod -n 新组名 旧组名 groupmod -g 新组ID 旧组ID | 修改组 |
groupdel 组名 | 删除组 |
其中创建用户(useradd)所执行的操作包括以下:
- 在/etc/passwd中添加用户信息
- 若使用passwd创建密码则在/etc/shadow中添加密码
- 为用户建立一个新的家目录
- 将/etc/skel中的文件复制到用户的家目录中
- 建立一个与用户名相同的组,新建用户默认属于这个组
-每个组有一个groupId
-组信息保存在/etc/group中
-每个用户拥有一个主组,同时最多拥有31个附属组
二、linux权限基础
权限是操作系统用来限制用户、组、进程对操作系统资源(文件、设备等)的访问的机制
权限分为:读、写、执行,一般表示为 r、w、x
系统中每个文件都拥有特定的权限、所属用户和所属组,通过这种机制限制哪些用户、组对特定文件进行什么样的操作
每个进程都是以某个用户的身份运行,进程的权限与该用户权限一致
权限
|
文件
|
目录
|
r
|
可读取文件内容
|
可列出目录中内容
|
w
|
可以修改文件内容
|
可创建删除目录
|
x
|
可以作为命令执行
|
可以访问目录内容
|
UGO模型
linux权限基于UGO模型User Group Other
权限三个一组(rwx),分别对应UGO设置
每个文件拥有一个所属用户和所属组,对应UG,不属于该文件所属用户或者所属组的使用O权限
文件所属用户、组和权限相关命令
修改文件的所属用户 chown 用户 文件 (-R 递归的修改目录下的所有文件的所属用户)
修改文件的所属组 chgrp组名 文件(-R 递归的修改目录下的所有文件的所属用户)
修改文件的权限 chmod 模式 文件
模式格式如下:
(1)u、g、o代表用户、组、其他
(2)a可以代指ugo
(3)+、-代表加入或删除对应权限
(4)r、w、x代表三种权限
如: chmod u+w linuxcast-file(-R 递归的修改目录)
数字方式表示权限模式
-r =4 -w =2 -x =1
chmod 660 linuxcast ==rw-rw---- (数字形式必须3个都修改)
chmod 775 linuxcast ==rwxrwxr-x
三、linux扩展权限
目录的默认权限是:777-umask
文件的默认权限是:666-umask
一般普通用户默认umask=002,root用户的默认umask=022
umask 查看umask取值或设置umask值
参数
|
文件
|
文件夹
|
suid=4
|
以文件的所属用户身份执行,而非执行文件的用户
-rwsr-xr-x /usr/bin/passwd
(普通用户运行passwd命令以所属用户root运行)
|
无
|
sgid=2
|
以文件的所属组身份执行
|
在该目录中创建的任意新文件的所属组与该目录的
所属组相同
|
sticky=1
|
无
|
对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户
所拥有的文件
|
chmod g+s testfile 设置sgid
chmod o+t testfile 设置sticky
chmod 4777 testfile