目录
一、Linux用户
1.1、用户和用户组
Linux系统是一个多用户多任务的分时操作系统, 任何一个需要使用系统资源的用户,都必须向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户都有一个唯一的用户名和各自的口令(可以理解为密码),还拥有唯一的用户id,缩写为uid。Linux系统分配的uid是32位整数,可以拥有2^32个不同的用户。Linux内核使用uid来识别拥有进程或文件的用户,而不使用用户名进行识别。
配置文件/etc/passwd中存在数据库,存放着用户名与uid的对应关系,系统中绝大多数用户都有该文件的r权限(读权限),但不能修改。
1.2、用户分类
分为三类:普通用户、超级用户、系统用户
普通用户介绍:
使用系统最多的用户,登录路径为/bin/bash,主目录为/home/用户名;特点:权限小,一般只能在自己的主目录和系统范围内的临时目录创建文件;
uid范围500+;
超级用户介绍:
又称为根(root)用户或系统管理员,主目录为/root,在系统上拥有最高权限,可以对任何文件进行rwx(读写可执行)操作,可以运行任何命令、可以取消任何进程、增加和保留其他用户、配置添加系统软硬件。
uid、gid都为0;
系统用户介绍:
系统用户不代表人,代表的是系统的组成部分,例如处理电子邮件的进程经常以用户名mail来运行;运行Apache网络服务器的进程经常作为用户apache来处理;因为不是真正的用户,故系统用户没有登录shell,主目录也很少在/home中,而是在属于相关的应用的系统目录中,例如apache的目录在/var/www;
1.3、用户相关文件
1.3.1、/etc/passwd文件
保存用户信息,格式为r(读)文本,管理员可以用文本编辑器修改,大多数用户只能r(读)权限,而不能修改;
用户字段:username:passwd:uid:gid:userinfo(普通用户通常省略):home:shell
各个字段含义:
username:给一个用户可读的用户名称
passwd:加密的用户密码
uid:用户ID,Linux内核用这个整数来识别用户
gid:用户组ID,Linux内核用这个整数来识别用户组
home:用户登录时,分配给用户的主目录
shell:登录shell是用户登录时的默认shell,通常是/bin/bash
userinfo:用来保存帮助识别用户的简单文本
1.3.2、/etc/shadow文件
用户的加密密码被保存在/etc/passwd文件的第二个字段中,由于passwd文件包含的信息不仅仅有用户密码,并且每个用户都需要读取,因此passwd第二个字段都是X。记录了一个合法用户账号的数据,每一行使用冒号分隔,格式如下username:passwd:lastchg:min:max:warn:inactive:expire:flag
username:用户的登录名
passwd:加密的用户密码
lastchg:自1970.1.1起到上次修改口令(密码)所经过的天数
min:两次修改口令(密码)间至少经过的天数
max:口令还会有效的最大天数
warn:口令失效前多少天内向用户发出警告
inactive:禁止登录前用户还会有效的天数
expire:用户被禁止登录的时间
flag:保留
二、Linux用户组
2.1、用户组概念
很多用户都属于一个用户组,用户组就是具有相同特征的用户的集合体。一个用户组可以包含很多用户,拥有一个专属的用户组id,缩写为gid。Linux系统分配的gid是32位整数,可以拥有2^32个不同的用户组。
同属于一个用户组内的用户具有相同的地位,并可以共享一定的资源;一个用户只能有一个gid,但是必须归属于其他的附加组群。
基本组:默认组成为新建文件的组所有者,被称为用户的主要组,又称为基本组;如果没有指定用户组,创建用户的时候系统会默认同时创建一个和这个用户名相同的组,这个组就是基本组。
附加组:除了主要组之外,用户也可以在属于其他组,这些组被称为附加组或次要组,用户可以从附加组中删除,不能从基本组删除;一个用户可以有多个附加组,但只能有一个基本组。
2.2、用户组相关文件
2.2.1、/etc/group文件
保存用户配置信息,格式为r(读)文本,管理员可以用文本编辑器修改;格式如下:
group_name:group_passwd:group_id:group_members
group_name:用户组名
group_passwd:加密后的用户组密码
group_id:用户组ID
group_members:逗号分隔开的组成员
2.2.2、/etc/gshadow文件
存储着各个用户组的加密密码,和用户账号文件/etc/passwd文件一样,为了保护用户组的加密密码,防止暴力破解,用户组文件也采用将组口令与组的其他信息分离开的安全机制;格式如下:
group_name:group_passwd:group_id:group_members
group_name:用户组名
group_passwd:加密后的用户组密码
group_id:用户组ID(可以为空)
group_members:逗号分隔开的组成员(可以为空)
三、Linux用户和用户组常用命令
3.1、用户命令->useradd命令
作用:创建一个新用户
用法:useradd [选项] 用户名
选项可选参数:
-d,作用:指定用户组目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g,作用:指定gid
-u,作用:指定uid
-G,作用:指定用户所属的附加值
-l,作用:不用吧用户添加到lastlog和failog中,这个用户的登录记录不需要记载
-m,作用:自动创建用户主目录
-p,作用:指定新用户的密码
-r,作用:指定一个系统账号
-s,作用:指定shell
-M,作用:不创建用户主目录
示例:暂无
3.2、用户命令->adduser命令
作用:创建新用户
用法:adduser 用户名
3.3、用户命令->passwd命令
作用:为用户设定口令(密码),修改用户口令,管理员还可以使用passwd锁定用户账号(root权限)
用法:passwd [选项] 用户名
选项可选参数:
-l,作用:管理员通过锁定口令来锁定已经命名的账号,即禁用该用户
-u,作用:管理员解开账户锁定状态
-x,作用:管理员设置最大使用时间(天)
-n,作用:管理员设置最小使用时间(天)
-d,作用:管理员删除用户的密码
-f,作用:强迫用户下次登录时修改口令
示例:暂无
3.4、用户命令->usermod命令
作用:修改用户账户的信息
用法:usermod [选项] 用户名
选项可选参数:
-d,作用:修改用户主目录
-e,作用:修改账号的有效期限
-f,作用:修改在密码过期后多少天即关闭该账号
-g,作用:修改用户所属的组
-G,作用:修改用户所属的附加组
-l,作用:修改用户账号名称
-L,作用:修改用户密码,使密码无效
-s,作用:修改用户登入后所使用的shell
-u,作用:修改用户ID
-U,作用:解除密码锁定
示例:暂无
3.5、用户命令->userdel命令
作用:删除用户,并删除/etc/passwd等该用户的文件
用法:userdel [选项] 用户名
选项可选参数:
-r,作用:将用户的主目录一起删除
3.6、用户组命令->gourpadd命令
作用:用指定的组名称来建立新的组账号
用法:gourpadd [选项] 组名
选项可选参数:
-g,作用:指定ID(gid)号,除非使用-o选项,否则该值必须唯一
-o,作用:允许设置相同组id的群组,id可不唯一
-r,作用:建立相同账号,即ID(gid)低于499
-f,作用:强制执行,创建相同的id组
示例:暂无
3.7、用户组命令->gourpmod命令
作用:更改群组属性
用法:gourpmod [选项] 组名
选项可选参数:
-g,作用:指定组ID(gid)
-o,作用:与groupadd相同,重复使用群组识别码
-n,作用:修改用户组名
示例:暂无
3.8、用户组命令->gourpdel命令
作用:从系统上删除组,如果该组中仍包含某些用户,则必须在删除这些用户后才能删除组
用法:gourpdel [选项] 组名
3.9、用户组命令->gpasswd命令
作用:用来管理组
用法:gpasswd [选项] 组名
选项可选参数:
-a,作用:添加用户到群组
-d,作用:从群组中删除用户
-A,作用:指定管理员
-M,作用:指定群组成员
-r,作用:删除密码
-R,作用:限制用户加入组,只有组中的成员才能使用newgrp命令登录该组
示例:暂无
四、su和sudo命令
4.1、su命令
作用:切换用户
用法:su [选项] 用户名
选项可选参数:
-l,作用:如重新登录一样,大部分环境变量都是以切换后的用户为主。如果没有指定用户名,默认为root
-p,作用:切换当前用户时,不切换用户工作环境,此为默认值
-c,作用:以指定用户身份执行命令,执行命令后再变回原用户
-,作用:切换当前用户时,切换用户工作环境
示例:暂无
4.2、sudo命令
作用:是super user do 的缩写,运行系统管理员分配给普通用户一些合理的权限,让他们执行一些只有超级用户或者特许用户才能完成的任务
用法:sudo [选项] 命令
选项可选参数:
-h,作用:列出帮助信息
-V,作用:列出版本信息
-l,作用:列出当前用户可以执行的命令
-u,作用:以指定用户的身份执行命令
-k,作用:清除timestamp文件,下次使用sudo需要在输入密码
-b,作用:在后台执行指定的命令
-p,作用:更改询问密码的提示语
-e,作用:不是执行命令,而是修改文件,相当于命令Sudoedit
示例:暂无