第6章 CentOS用户管理
第7章 CentOS 7 文件权限管理
第8章 CentOS 7 程序包的管理与安装
第9章 文件的归档和压缩
第10章 CentOS 7 系统进程管理
Linux运维实战:CentOS7.6操作系统从入门到精通6-10
第6章 CentOS用户管理
6.1 用户和用户组的关系
(1)Linux用户有3种角色:超级用户、普通用户、虚拟用户。
① 超级用户:即root用户,拥有对系统的最高管理权,UID为0。
② 普通用户(包含系统用户和本地用户):在不同的系统版本中,系统用户和本地用户的UID取值范围不相同。
CentOS 7版本:系统用户UID为1~999,本地用户UID为1000及以上。
CentOS 6版本:系统用户UID为1~499,本地用户UID为500及以上。
③ 虚拟用户:伪用户,一般不会用来登录系统,它主要用来维持某个服务的正常运行,如ftp、apache。
6.2 创建用户相关命令
6.2.1 创建用户
1.useradd
命令
useradd
命令用于创建用户,在Linux中,adduser命令也用于创建用户。实际上,adduser是软链接指向useradd的命令程序,所以两者的效果是一样的。
在默认创建用户时,会自动指定UID和GID,默认的UID和GID都是1000以上的。一般情况下,新创建用户的UID和GID是相同的,用户家目录(也叫宿主目录)是/home/
目录下与用户名相同的目录,Shell类型为/bin/bash
。如果在特殊情况下造成不相同,在权限分配时可能会出错。
创建用户完成时默认该用户密码为空,/etc/shadow
文件中的密码位是两个“!!”,没有密码不能直接登录系统,只能用超级用户登录系统以后再切换到该用户。创建用户时如果不指定其附加组,默认会创建一个与用户名同名的组。
这些默认属性是根据/etc/default/useradd
文件中所定义的创建用户默认值来设定的。
命令使用格式如下:useradd [选项 参数] 用户名
。
常用选项如下。
参数 | 作用 |
---|---|
-d | 指定新创建用户的家目录路径。 eg.useradd -d /data/wwx wwx #创建wwx用户并指定其家目录为/data/wwx |
-M | 不创建用户的家目录。 |
-g | 指定用户初始组的名字或GID,前提是该组必须是存在的,如果没有设置该选项,useradd会根据/etc/login.defs 文件中的USERGROUPS_ENAB 环境变量进行设置。USERGROUPS_ENAB 默认为yes,会用和用户名相同的名字创建用户组,并且GID等于UID。eg. useradd -g wwx wwx1 . #创建wwx1用户指定主组为wwx |
-G | 指定用户要加入的附加组列表,使用逗号分隔多个组,不要添加空格,如果不设置,用户仅加入初始组(一个用户只允许有一个初始组,可以有多个附加组)。eg. useradd -G wwx,xuegod,root wwx1 . |
-s | 指定用户登录系统后默认使用的Shell,请确保指定的Shell已经安装,默认的是bash。有时需要禁止某些用户执行登录动作,如用来执行系统服务的用户,将该用户登录系统后默认使用的Shell指定为/sbin/nologin 就可以禁止该用户登录。 |
-u | 指定用户UID。eg. useradd -u 1100 wwx #创建wwx用户,并指定其UID为1100 |
注意:用户初始组是指在创建用户的同时创建的与用户名同名的组,也称为主组。附加组则是指用户创建后或在创建的同时指定的一个额外的组,此组不属于用户初始组,因此称为附加组。
2. passwd文件
passwd用户信息文件每段的含义
3.查看系统中支持哪些Shell
/etc/shells
文件中记录。
[root@jira01 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
4.使用id命令查看用户信息
[root@jira01 ~]# id wuwenxuan
uid=387801146(wuwenxuan) gid=387801146(wuwenxuan) 组=387801146(wuwenxuan)
5.删除用户
命令使用格式:userdel [选项] 用户名
。
选项如下所示:
-r
:删除时,会同时删除用户的家目录和/var/mail目录下该用户的相关目录。
6.创建用户规则
文件文件/etc/default/useradd
和/etc/login.defs
是创建用户时的规则文件。
使用egrep命令过滤login.defs
文件中的空白行和注释行(以“#”开头的行:egrep -v "^$|^#" /etc/login.defs
),该文件定义了创建用户时,用户属性相关的默认值,在创建用户时,如果明确指定其值时,则不需要从此文件中获取默认值。
[root@utahstu2 ~]# egrep -v "^$|^#" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000 #UID开始的数字,该值可以设置为大于1000,如果小于该值,用户会被识别为系统用户
UID_MAX 60000 #UID结束的数字
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000 #GID开始的数字
GID_MAX 60000 #GID结束的数字
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes #是否为用户建立家目录
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 #shadow文件的加密算法
/etc/default/useradd
文件中的内容如下
[root@utahstu2 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100 #表示可以创建普通组,GID为100.如果不指定此项,或者把这个组删除了,在创建用户时,会提示:useradd:group‘100’does not exist.
HOME=/home #指定家目录的存放目录
INACTIVE=-1 #是否启用账号过期,shadow文件中的第7个字段。即密码过期后时否会失效的设定值。-1表示启动
EXPIRE= #账号终止日期,shadow文件中的第8个字段。可以直接设定账号在某个日期之后就直接失效,而不用理会密码的问题。通常不设置,但如果是付费的会员制系统,或许会设定该字段。
SHELL=/bin/bash #用户登录系统后的默认shell
SKEL=/etc/skel #模版目录
CREATE_MAIL_SPOOL=yes #是否创建邮箱文件。
6.2.2 修改用户属性
usermod命令用于修改用户账号属性信息。
命令使用格式:usermod [选项 参数] 用户名
。
常用选项如下。
参数 | 作用 |
---|---|
-u | 修改用户的UID。 |
-d | 修改用户的家目录。(usermod -m -d /mnt/market market # -m:选项会自动创建新目录并将内容移动到新目录中) |
-g | 修改用户初始组,只能有一个。 |
-G | 修改用户附加组,可以有多个。 |
-c | 修改用户描述(说明)信息。eg.usermod -c "hello world" wwx |
-s | 修改用户登录Shell。 |
-L | 锁定用户,锁定用户后,该用户不得登录系统。 |
总结:如果记不住命令,那么直接改vim /etc/passwd文件也是一样的,使用:wq! 强制保存并退出。
6.2.3 用户密码管理
1.passwd命令
普通用户只能使用passwd
命令更改用户自身的密码。对于管理员用户的密码管理权限,可以使用passwd
USERNAME更改所有其他用户的密码。
命令使用格式:passwd [选项] [选项参数] [用户名]
。
/etc/shadow
是用户密码信息文件,用户保存用户密码相关信息,具体含义如图:
更改用户密码:
[root@utahstu2 ~]# passwd wwx # 交互形式更改用户密码
更改用户 wwx 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@utahstu2 ~]#
[root@utahstu2 ~]# echo 123456 | passwd --stdin wwx #以非交互方式更改用户密码
更改用户 wwx 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@utahstu2 ~]#
2.chage命令
chage
命令用于修改用户密码属性。
命令使用格式:chage [选项] [选项参数] 用户名
。
常用选项如下。
参数 | 作用 |
---|---|
-m | 密码可更改的最小天数,参数为0时,表示任何时候都可以更改密码。 |
-M | 密码保持有效的最大天数。 |
-W | 用户密码到期前,提前收到警告信息的天数。 |
-E | 账号到期的日期,过了这一天,此账号将不可用。 |
-d | 上一次更改的日期,参数为0时,表示强制用户在下次登录时更改密码. |
例6.7:修改mk用户密码属性,使mk用户下次登录系统时必须更改其密码。
例6.8:两个用户使用同一个UID。
注意:当某个用户的UID与其他用户的UID相同时,系统会将UID相同的用户识别为同一个用户,因为系统识别用户时,是识别用户的UID。
以上实验结果,系统把mk用户识别为root用户了。
6.2.4 查看用户相关命令
1.id命令
作用:查看用户和组的信息。
命令使用格式:id [选项] [用户名]
。
选项有以下几种。
参数 | 作用 |
---|---|
-n | 和-u/-g/-G组合使用,在查看信息时以名称显示输出;如不加-n选项,则以ID号显示输出。 |
-u | 只显示指定用户的UID。 |
-g | 只显示指定用户的GID。 |
-G | 只显示指定用户的所有组的GID列表 |
2.whoami命令
作用:查看当前登录系统的用户名。
命令使用格式:whoami [选项]
。
3.who命令
作用:显示当前登录系统的用户信息。
命令使用格式:who [选项]
。
4.w命令
作用:显示已经登录系统的用户列表。
命令使用格式:w [用户名]
。
5.users命令
作用:显示当前登录系统的所有用户的用户名列表。
命令使用格式:users [选项]
。
第7章 CentOS 7文件权限管理
7.1 文件的基本权限
7.1.1 文件权限的作用
在用户登录系统时,会以该用户和该用户组的身份启动一个Shell进程,用户在Shell中运行某个命令时,其实是通过Shell进程启动该命令的进程的。整个过程看似是用户在执行,其实都是由进程来完成的。
当不同的用户登录计算机系统时,同时发起ls进程,他们的权限是不一样的。
Shell进程就是代理某个用户操作。这个操作能不能访问到某个资源,取决于该进程的属主和资源的属主和属组。
内核的安全属性来进行判断:
进程的属主 ——》 是否属于资源的属主 ——> 是否属于资源的属组
1.设定权限
通过对文件设定权限可以达到以下3种访问权限。
(1)只允许文件的拥有者访问。
(2)允许一个预先指定的用户组中的用户访问。
(3)允许系统中的任何用户访问。
使用
ll
命令来查看文件的权限。
2. 文件权限
[wwx@utahstu2 ~]$ ll /etc/passwd
-rw-r--r--. 1 root root 2296 10月 20 19:09 /etc/passwd
文件类型可以为p、d、l、–、s、c和b。
(1)p表示命名管道文件。
(2)d表示目录文件。
(3)l表示符号连接文件。
(4)-表示普通文件。
(5)s表示socket套接口文件,如启用MySQL时会产生一个mysql.sock文件。
(6)c表示字符设备文件。例如,虚拟控制台或tty0。
(7)b表示块设备文件。例如,sda和cdrom。
eg. 查看/dev/sda /dev/cdrom /etc/passwd /dev/tty0三个设备文件的类型。
[wwx@utahstu2 ~]$ ll /dev/sda /dev/cdrom /etc/passwd /dev/tty0
lrwxrwxrwx. 1 root root 3 10月 21 11:06 /dev/cdrom -> sr0
brw-rw----. 1 root disk 8, 0 10月 21 11:06 /dev/sda
crw--w----. 1 root tty 4, 0 10月 21 11:06 /dev/tty0
-rw-r--r--. 1 root root 2296 10月 20 19:09 /etc/passwd
7.1.2 更改文件的属主和属组
1.改变文件的所属关系用到chown
命令和chgrp
命令(只有管理员可以使用该命令)
chown
命令:用于改变文件或目录的属主。
[root@utahstu2 utah]# chown utah:utah .
执行改命令的时候也需要文件夹的执行权限。
仅改变文件或目录的属主:
chown 用户名 文件名
仅改变文件或目录的属组:
chown :组名 文件名
自动继承该用户的所有的组(不指定属组):
chown 用户名: 文件名
选项
-R
:递归,目录下的所有内容都更改,不使用该选项则只修改目录。
chgrp
命令:仅用于改变文件或目录的默认属组。
选项
-R
:递归,目录下的所有内容都更改,不使用该选项则只修改目录。
注意⚠️:文件所有者一定可以写文件,即使所有者对于文件也仅仅有只读权限。就像root用户可以对shadow文件强制写,因为shadow文件的拥有者是root用户。
7.1.3 文件权限管理
修改权限用的命令:chmod
。
命令使用格式:chmod [操作对象] [操作符] [某种权限] 文件名
。
作用:修改文件、目录的权限。
1.操作对象
u:用户(user),表示文件或目录的所有者。
g:用户组(group),表示文件或目录所属的用户组。
o:其他用户(others)。
a:所有用户(all)。
2.操作符
+:添加权限。
-:取消权限。
=:直接给定一个权限。
3.权限:r w x
Eg.
chmod a=rwx b.txt. 等价于。 chmod 777 b.txt # a 表示所有用户(属主,属组,其他用户)
使用八进制值(0~7)表示权限:
7.1.4 文件权限补码
创建文件的默认权限是644,这个默认权限是怎么来的?
文件默认权限=666 ,目录默认权限=777。
一般在**/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile**中设置umask值。
1.永久生效,编辑用户的配置文件vim .bash_profile
[utah@utahstu2 utah]$ vim /etc/profile
注:UID大于199且用户的组名和用户名一样,那么umask值为002,否则为022。
-gt在Shell中表示大于;id -g显示用户组ID,id -gn显示组名。
2.临时生效:umask权限补码
权限的算法:一般情况是目录默认权限-umask值。
例7.8:验证,将umask掩码设置为033,再创建文件。
结果为644。
在Linux中创建的文件,默认是不能带有执行权限的,如果指定的umask是033,创建的文件权限会为644。是因为默认计算后等于rw–wx-wx,此时系统检测到带有执行权限创建的文件都会采取加1机制,即为rw-r–r-。用下面的科学计算方法可以验证该问题。
3.权限科学的计算方法
(1)将默认权限(目录777,文件666)和umask值都转换为二进制值。
(2)对umask取反。
(3)将默认权限和umask取反后的值做与运算。
(4)将得到的二进制值再转换为八进制值,即为权限。
例7.9:umask值为022。
例7.10:umask值为033,结果为644。