引言

本来对用户和组这块儿不是很熟悉,每次都有意避之,但是在虚拟机安装软件的时候意识到,这块儿很重要,特此回来补上自己的短板。

这样,以后在linux方面不会再有弱项了。

实际开发环境下:

同一个部门下会有不同多个组

比如web组和dev组,需要访问远程服务器上的资源,web用户、dev用户,他们可以访问到的资源不一样。

为什么不一样呢?

因为管理员给每个组的权限都不一样,dev只能访问系统开发资源,而web组只能访问web资源。

为什么非要这样非得分成不同的组,还要被分配不同的权限呢?

其中一个原因:为了维护秩序。比如我是个dev组的菜鸟,如果我不属于web这个组,却来这个组偷偷改了文件,最后追究责任,也不好缩小范围、查找凶手不是吗?

所以,需要将dev组全部成员,都分配相同的权限——不允许看web组成员所能获得的web资源。

除非...

除非有人是个全栈的高手,同时占有系统dev组和web组,这样他就都能进行访问。

那么这个用户,相对于组来说,就形成了一对多的关系。

当然,纵观全局,除了"一对一""一对多"这两种关系以外,还可能有"多对一""多对多"几种情况。

那么管理员是谁呢?

谁有root用户的密码,或者sudo权限,谁就是管理员。

一、用户管理

实际演练:

在我的centos7机器上,我有root密码,所以我具有管理员权限。

首先建个‘group_dev组’,然后向组中添加用户‘user_dev_dashewan’、设置密码‘123’。

命令:

[root@localhost /]# groupadd group_dev   #新建一个组——'group_dev'
[root@localhost /]# useradd -g group_dev user_dev_dashewan  #添加用户'user_dev_dashewan'到'group_dev'中
[root@localhost /]# passwd user_dev_dashewan   #给用户'user_dev_dashewan'添加密码

 执行过程如下: 

当然还可以继续向group_dev中添加用户,然后设置密码,不过这些都是重复的工作。

删除命令

如果想要删除刚才的用户和组:(注:在删除组之前,需要先删除用户)

命令:

userdel -r +用户名   #删除用户和相关文件

groupdel +组名    #删除组

这里我就不执行以上命令了。

值得一提的是:linux系统中每一个用户都至少属于一个组。

如果将“组”细分的话,还可以分为主组、附属组。

对于每一个用户来说,仅仅只能拥有一个主组(用-g指定),但是可以有多个附属组(用-G指定)。

useradd添加命令

在linux系统中,每个用户的信息都被保存在/etc/passwd配置文件,每个用户在/etc/passwd文件中都有对应的一行记录。

每一行都有7个参数,并且用分号分隔:

在使用useradd命令时,如果不指定用户的主目录,则自动在/home下建一个与用户同名的主目录。(注:只有主目录才会被添加到配置文件中,附属目录不会)

执行命令tail -4 /etc/passwd之后,可以看到用户‘zilaiye’的主目录被默认定义为‘/home/zilaiye’:

执行过程如下:

用户密码的信息则保存在/etc/shadow文件中:

每个用户的信息在这里会对应9个参数,每个参数用引号分隔:

执行tail -7 /etc/shadow之后,可以看到用户‘user_dev_dashewan’拥有已经加密的密码,而用户‘zilaiye’没有被设置密码。

执行过程如下:

接下里创建一个名为‘gangshou’的用户,设置主目录为/var/gangshou,作为root用户组的成员,并加注释‘huoying’,指定用户shell为:/bin/sh

执行命令:

useradd -d /var/gangshou -g root -c huoying -s /bin/sh gangshou

执行过程如下:

其中的-1——是仅显示一条文本中的信息。

useradd参数:

-d +目录,指定用户主目录

-c +comment 指定一段注释性描述。

-g +用户组 指定用户所属的用户组。

-G +用户组,用户组 指定用户所属的附加组。

-s +Shell文件 指定用户的登录Shell。

-u +用户号 手工指定用户id,但必须唯一,而且要大于999。

usermod修改命令

任务描述:

1.修改用用户user_dev_dashewan用户名为dashewan;

  2.修改用户dashewan的主目录为/var/dashewan;

    3.修改用户dashewan的注释为scientist。

执行命令:

[root@localhost /]# usermod -l dashewan user_dev_dashewan      #1
[root@localhost /]# tail -1 /etc/passwd
dashewan:x:1001:1001::/home/user_dev_dashewan:/bin/bash
[root@localhost /]# usermod -d /var/dashewan dashewan       #2
[root@localhost /]# tail -1 /etc/passwd
dashewan:x:1001:1001::/var/dashewan:/bin/bash
[root@localhost /]# usermod -c scientist dashewan       #3
[root@localhost /]# tail -1 /etc/passwd
dashewan:x:1001:1001:scientist:/var/dashewan:/bin/bash

执行过程如下:

usermod参数:

-l 修改用户名

-c 修改参用户述信息

-d 修改用户主目录

-L 锁定账号,临时禁止用户登陆

-U 对账号解锁

-g 修改用户所属的组

-G 修改用户所属的附加组

-s 修改用户登陆后的shell类型

-u 修改用户id

-e 修改用户有效期

-f 修改用户密码在多少天失效

二、组管理

组管理相关命令:

groupadd +组名         #添加组

groupmod +【参数】 新组名  旧组名        #【-n】修改组名   【-g】修改组标识号

groupdel +组名         #删除组

gpasswd +【参数】 用户名  组名           #【a】:添加到用户组   【-d】:将用户从组中删除   【-A】将某用户修改成该组管理员

id  +用户名            #显示用户当前的UID

groups +用户名         #显示该用户所在的组

whoami         #显示当前登陆者名称

w             #查看当前用户及各种状态信息

who         #查看各用户历史登陆途径及时间,如果是本地——显示:0   如果是远程连接——显示ip号

last      #查看当前用户全部的登陆记录历史

chage命令修改用户口令有效期限

命令:

chage 【参数】 用户名

-m 密码可更改的最小天数。为零时表示任何时候都可以更改密码

-W 用户密码到期前,提前收到警告信息的天数

-M 密码保持有效的最大天数

-E 账号到期的日期。过了这一天,账号将不可使用

-d 上一次更改的日期

-i 停滞时期。如果密码过期时长超过这个数,那么这个账号将不可用

-l 列出当前的设置。可以帮助用户来确定他们的账号或密码什么时候过期

chfn 修改用户注释信息

命令:

chfn  【参数】  用户名

-f 设置真实姓名

-h 设置电话号

-o 设置办公室地址

-p 设置办公室的电话号码

chsh -l      #查看系统安装的shell

执行结果如下:

三、文件属性读取和修改

新建一个文件夹,使别的组可以对本组中的file1进行写操作。

命令如下:

ls -l 时显示的文件属性:

可以看见开头rwx rwx rwx三组属性:

第一组rwx——文件所有者对该文件拥有的权限

第二组rwx——同组用户对该文件拥有的权限

第三组rwx——其他组用户对该文件的权限

其中:

r 代表读权限,
w 代表写权限,
x 代表这是个可执行文件

其中最开头的符号具有以下几种情况:

- #普通文件

d #目录文件

l #软链接,类似windows中的快捷方式

s #套接字文件

b #块设备文件,二进制文件

c #字符设备文件

p #管道文件

chmod定义用户对文件的权限

命令:

chmod  修改范围   运算符   文件/目录

修改范围:

u   #文件所有者

g   #同组用户

o   #其他组用户

a   #全体用户

运算符:

+   #给予

-   #收回

=   #赋值

具体操作:

chown修改文件/目录的所有者(注:谁创造的这个文件,设就是所有者)

命令:

chown   新所有者【选项】新组      #选项里可以使.或者:   这两个符号具有相同的作用

例如:

chown   小李.dev  file1或者chown   小李:dev  file1    #将当前目录下的file1的所有者改为小李,所属组改为dev
chown .dev file1或者chown :dev file1 #仅仅将当前目录下的file1的所属组改为dev

用户权限的控制

su   #切换用户

sudo  #给用户权限

任务描述:

利用root系统管理员新建一个用户,然后使新建的用户具有管理员的权限。

实际操作:

 /etc/sudoers部分内容如下:

这样,在fire-shadow用户登陆后就可以用如下命令添加用户:(注:普通用户不能没有添加新用户的权利,除非是管理员,或者sudo管理员,其实sudo就是个代理)

sudo useradd bofengshuimen

具体操作如下:

再给这个用户补充个注释,这样一眼就知道他是管理员:

这里需要注意一下,已经登陆的用户无法被修改所在的主目录:

比如当前的用户是root,那么root无法修改自己的主目录,同时,如果别的用户处于登陆状态,root同样无法修改它的主目录,除非那个用户下线,root才能去改。

但是即使用户处于登陆状态,也可以修改他所属的组,这是组和主目录的一点不同。

两个不同的用户允许有相同的主目录。

root的主目录默认是/root,但是在/etc/passwd中无法看到root的信息。

 

 

 

学到最后,竟然不记得查看用户的命令?

突然想起来其实就是:

tail  /etc/passwd

 

posted on 2020-05-04 03:43  追他十万八千里  阅读(857)  评论(0编辑  收藏  举报