用户和权限
root用户
在Linux系统中,拥有最大权限的账户名称为root(超级管理员),普通用户的权限一般在其home目录内不受限制,但仅限于在自己的目录下如: /home/chen,一旦出了home目录,大多数地方普通用户仅有只读和执行权限,无修改权限
su命令
su命令(Switch User)用于切换账户
语法:
su [-] [用户名]
-符号是可选的,表示是否在切换用户后加载环境变量
参数,用户名,表示要切换的用户,也可省略,表切换到root
切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl+d
使用普通用户,切换到其他用户需要使用密码
使用root用户切换到其他用户,不需要密码
sudo命令
我们可以通过su命令进入到root用户,获取最大权限,但是长期使用容易对系统造成损坏,我们就可以使用sudo命令,为普通用户的命令授权,临时以root身份执行
语法:
sudo 其他命令
在其他命令之前,带上sudo即可为这条命令临时赋予root权限
但并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
用户,用户组管理
Linux中可以配置多个用户,配置多个用户组,用户可以加入用户组中,如下图
Linux中关于权限的管控级别有两个:
针对用户的权限控制
针对用户组的权限控制
用户配置文件
文件名 | 功能说明 | 字段数 |
/etc/passwd | 用户信息文件,含有用户名、用户ID、组ID、密码时间参数 | 7 |
/etc/shadow | 用户密码文件,含有用户的加密密码; | 9 |
/etc/group | 用户组信息文件,含有用户组名、密码、用户组成员等; | 4 |
/etc/gshadow | 用户组密码文件,含有用户组的加密密码; | 4 |
用户组管理
命令需要root权限用户执行
用户组文件——/etc/group
linux中用户组的类型:
私有组:建立用户时没有指定所属组,则自动创建与用户名同名的私有组;
系统组:系统为系统用户自动创建的组;
标准组:普通用户所属的组;
/etc/group文件中的每一行都表示一个用户组的属性信息,由:分割的4字段构成
字段 | 说明 |
wheel | 用户组名 |
x | 组密码,x表示无密码 |
0 | 组ID,0表示超级管理员组,1-999表示系统组,>1000表示普通组 |
test | 组成员用户名,用“,”分隔 |
用户组密码文件——/etc/gshadow
/etc/gshadow每一行表示一个组的信息,被:号分割为4个字段
组名:加密密码:组管理员:组附加用户列表
创建用户组
语法:
groupadd [-g] 用户组名称
选项:-g,指定用户组GID
修改用户组属性
语法:
groupmod [-g -n]
选项 :-g 指定用户组GID
选项:-n 改变组名
删除用户组
语法:
groupdel 用户组名称
注意:只有当指定需要删除的组不是任何用户的主组情况时,该组才会被删除,否则需要删除相关用户或修改相关用户的主组后,再进行指定组的删除。
组成员管理
语法:
gpasswd [-a -d] 用户名 组名
-a :向组中添加组员用户
-d:从组中删除组员用户
如果不添加任何选项,直接加用户组的名称,就是为指定用户组设定密码
将u2用户添加到u3用户组中
将u2用户从u3用户组中删除
设置u2用户组密码
用户管理
命令需要root权限用户执行
用户帐号文件——/etc/passwd
在linux中有三种用户类型:
超级用户:root,具有一切权限
系统用户:为保证Linux系统正常运行所自动建立的用户,不能直接登录
普通用户:大多数用户所具备的帐号类型
/etc/passwd文件存放系统中所有用户的属性信息,普通用户可以查看,root可以修改
Passwd文件中的每一行都表示一个用户的属性信息,由:号分割的7个字段构成
字段 | 说明 |
用户名 | 也称为登录名,在系统内用户名应该具有惟一性。在本例中,root就是用户名 |
密码 | 存放加密用户的密码,看到的是一个x,其实密码已被加密存储到/etc/shadow文件中 |
用户标识号(UID) | 在系统内用一个整数标识用户ID号,每个用户的UID都是惟一的,root用户的UID是0,系统用户UID<1000,普通用户的UID默认从1000开始,本例中的用户root的UID是0 |
组群标识号(GID) | 在系统内用一个整数标识用户所属的主要组群ID号,每个组群的GID都是惟一的 |
用户名全称 | 用户名描述,可以不设置。在本例中,root用户的用户名全称是root |
主目录 | 用户登录系统后首先进入的目录,root用户的主目录是/root |
登录Shell | 用户使用的Shell类型,Linux系统默认使用的Shell是/bin/bash |
用户密码文件——/etc/shadow
系统用户的密码都采用MD5算法加密存储在/etc/shadow文件,只有root用户才能查看;
每一行表示一个用户的密码信息,用:分割为9个字段
字段 | 说明 |
用户名 | 这里的用户名和/etc/passwd中的用户名是相同的 |
密码 | 加密后的密码,如果有些用户在这里显示的是“!!”,则表示这个用户还没有设置密码,不能登录到系统 |
用户最后一次更改密码的日期 | 从1970年1月1日算起到最后一次修改密码的时间间隔天数 |
密码允许更换前的天数 | 如果设置为0,则禁用此功能。该字段是指用户最少要间隔多少天才能修改密码,即更改密码的最小期限 |
密码需要更换的天数 | 如果设置为0,则禁用此功能。该字段是指用户最多多少天以后必须修改密码,即更改密码的最大期限 |
密码更换前警告的天数 | 用户登录系统后,系统登录程序在密码过期提前多少天向用户发出警告,即更改密码前提前多少天给出警告信息 |
账户被禁用前的天数 | 用户密码过期多少天后,系统会禁用此用户,也就是说系统会不让此用户登录,也不会提示用户过期,是完全禁用的 |
用户账户禁用多久 | 指定用户账户禁用的天数(从1970年的1月1日开始到账户被禁用的天数),如果这个字段的值为空,账户永久可用 |
保留字段 | 目前为空,以备将来Linux系统发展时使用 |
创建用户
语法:
useradd [-g -d -u] .用户名
选项,-u指定用户UID,用户ID与账号必须是唯一的
选项,-g指定用户的组,不指定-g,会创建同名用户组并自动加入,指定-g需要用户组已存在,如果已存在同名用户组,必须使用-g,参数可以是组名称或组ID(GID)
选项,-d指定用户HOME路径,如果不指定,HOME目录默认在:/home/用户名
单独使用
单独使用会默认为新建用户创建一个同名用户组,和默认分配的用户信息
选项指定
-g指定分组,可以理解为将test5用户的用户组预设为 u3,但用户组还需要进行设置,相当于是test5向u3用户组投了一个简历。
可以看到我们虽然在创建用户的时候设定了用户组,但是在u3用户组文件中的组成员区域并没有记录
删除用户
语法:
userdel [-r] 用户名
选项-r,删除用户HOME目录,不使用-r,删除用户时,HOME目录保留
删除HIOME路径
不删除HOME路径
查看用户所属组
语法:
id [用户名]
参数,用户名,表示被查看的用户,如果省略默认查看当前用户
修改用户所属组
语法:
usermod [选项] 用户名
选项
-d 改变用户的主目录
-g 修改用户的GID
-G 指定用户所属的附加组
-l name 更改账户的名称(必须在该用户未登录情况下才可以修改,小写L)
-u 修改用户的UID
getent命令
语法:
getent passwd
查看当前系统中有那些用户
getent group
查看当前系统中有哪些用户组
查看用户
会出现很多,(现只取一部分)上面都是系统创建的,底下才是我们自己创建的用户
共有七份信息:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
查看用户组
现取一部分,底下四个是自创的用户组
包含3部分信息:
组名称:组认证(显示为x):组ID
查看权限控制信息
详细信息解释
以红框标记为例,第一行的total 28是指当前目录下所有文件所占有的空间总和,默认以字节为单位(bytes),因为使用了-h选项所以使用的是kb显示
dr-xr-xr-x: 一共十个字符,第一个字符表示文件类型
- :表示普通文件
d:表示目录(directory)
l:表示链接文件
b:表示块设备(block)文件
c:表示字符设备(char)文件
p:表示管道(pipe)文件
s:套接字(socket)文件
剩余的字符可以分为三组,即r-xr-xr-x中间没有分隔符号,分别表示所属用户,所属用户组和其他用户对该文件的使用权限
r 表明该文件具有可读权限,若该位置为 "-" ,表示不可读;
w 表明该文件具有可写权限,若该位置为 "-" ,表示不可写;
x 表明该文件具有可执行权限,若该位置为 "-" ,表示不具有可执行权限;
第二列的数字:表示目录文件里包含的子目录文件数量(包括隐藏文件)如果是普通文件则表示的是链接数量
所属用户
所属用户组
文件大小(默认以字节为单位)
文件的最后修改时间
文件名
针对文件、文件夹的不同,rwx的含义有细微差别
r针对文件可以查看文件内容
针对文件夹,可以查看文件夹内容,如ls命令
w针对文件表示可以修改此文件
针对文件夹,可以在文件夹内进行创建、删除、改名等操作
x针对文件表示可以将文件作为程序执行
针对文件夹,表示可以更改工作目录到此文件夹,即cd进入
修改权限控制
chmod命令
我们可使用chmod命令,修改文件、文件夹的权限细节
注意,只有文件、文件夹的所属用户或root用户可以修改
语法:
chmod [-R] 权限 文件或文件夹
选项-R,对文件夹内的全部内容应用同样的操作
给hello文件设置权限,给所属用户在原先可读,可写的情况下,增添x可执行权限,查看后文件由白色变成绿色
其中:u表示user所属用户权限,g表示group组权限,o表示其他用户权限
取消所属用户对文件夹和文件夹内全部内容的阅读权限,并增加所属用户组和其他用户的阅读权限
本想使用其他用户继续验证一下,但是在那之前好像还需要增加其他用户访问chen用户的权限
修改权限快捷写法
权限可以用3位数字来代替
第一位数字表示用户权限,第二位表示用户组权限,第三位表示其他用户权限
数字细节如下:r记为4,w记为2,x记为1
0:无任何权限 即 ---
1:仅有x权限 即 --x
2:仅有w权限 即 -w-
3:仅有w和x权限 即 -wx
4:仅有r权限 即 r--
5:仅有r和x权限 即 r-x
6:仅有r和w权限 即 rw-
7:有全部权限 即rwx
所以chmod 751hello表示:修改hello文件的权限为rwx(4+2+1)r-x(4+1)--x(1)
chown命令
可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其他的用户或用户组,所以此命令值适用于root用户执行
语法:
chown [-R] [用户] [:] [用户组] 文件或文件夹
选项-R,同chmod一样,对文件夹内所有内容应用相同规则
选项,用户,修改所属用户
选项,用户组,修改所属用户组, 如果要修改用户组,其前必须加 “:” 来表示修改的是用户组
:用于分隔用户和用户组
将chen用户下hello3文件的所属用户改为root
将chen用户下hello的所属用户组修改为test
将chen用户下hello2文件的所属用户修改为test,所属用户组修改为root