linux是多用户多进程的系统;

每个文件和进程都需要应对一个用户和用户组;

linux系统通过uid和gid来识别用户和组的;

一个用户必须要有唯一的uid和一个主组来识别身份,不同的用户可以使用同一个组作为主组,用户可以加

入不同的组,用户和组的关系是一对一、一对多,多对一。

linux管理员:root;

超级用户:uid 0 root 、普通用户:uid 500-65535、虚拟用户:uid1-499 满足是文件或服务启动的需要;

13.1、和用户有关的四个文件:

/etc/passwd(用户账号文件) /etc/shadow(用户密码文件) /etc/group(组账号文件) /etc/gshadow(组密码文件);

以上文件内容是有冒号分割,/etc/passwd内容需要比较熟悉,其它文件只需要了解;

13.2、/etc/skel目录:

用户的初始化目录,新建用户后都会copy这个目录中的内容;

可以把 通知的内容放到该目录下,可以让新用户可以看到;

统一初始化新用户的初始环境变量;

13.3、出现-bash-4.1$ 问题原因及解决方法:

-bash-4.1$ cp -av /etc/skel/.bash* /home/lc1/

`/etc/skel/.bash_logout' -> `./.bash_logout'

`/etc/skel/.bash_profile' -> `./.bash_profile'

`/etc/skel/.bashrc' -> `./.bashrc'

chown -R lc1:lc1 /home/lc1

chomod 700 /home/lc1

[root@centos6 ~]# su - lc1

[lc1@centos6 ~]$ su root

Password:

[root@centos6 lc1]#

13.4、更改用户的密码和账号策略:

系统默认策略(可以对以后建立的用户生效);

/etc/login.defs:密码策略;

PASS_MAX_DAYS 99999:密码的最大有效期, 99999:永久有期 ;

PASS_MIN_DAYS 0:是否可修改密码,0表示可修改,非0表示多少天后可修改;

PASS_MIN_LEN 5:密码最小长度,但是使用pam_cracklib.so模块后,该参数不再有效(这个参考下 面密码复杂度规则设定);

PASS_用WARN_AGE 7:密码失效前多少天在户登录时通知用户修改密码;

/etc/default/useradd:账号策略;

(默认情况下useradd+用户名创建的普通用户密码永久有效,账号没有过期停权的内容(在默认的文件中存放,不动))

13.5、用户和组操作:

1. passwd文件:

(1)/etc/passwd文件的功能:

存储所有用户的相关信息,该文件也被称为用户信息数据库(Database)。

(2)/etc/passwd文件每个字段的具体含义:

root:x:0:0:root:/root:/bin/bash

1)第1个字段:记录的是这个用户的名字(在创建用户时root用户起的)。

2)第2个字段:如果是x,表示该用户登录Linux系统时必须使用密码;如果为空,则该用户在登录时无须提供密码。

3)第3个字段:记录的是这个用户的uid。

4)第4个字段:记录的是这个用户所属群组的gid。

5)第5个字段:记录的是有关这个用户的注释信息(如全名或通信地址)。

6)第6个字段:记录的是这个用户的家目录的路径。

7)第7个字段:记录的是这个用户登录后,第一个要执行的进程。

2、shadow文件:

(1)/etc/shadow文件的功能:

存储所有用户的密码,每一个用户占用一行记录,该文件实际上就是存放用户密码的数据库(Database)。

(2)/etc/shadow文件每个字段的具体含义:

root:$6$MSHWWdIaEm43lNq1$d9UAZy5tiZtN1O/vDme3gXhRTt5cH9lcyVU7BxD4hkRb6TO/kj2Zxp7VeWE9l/DQ0VuklGoJYM1p/aWGEUgTl.::0:99999:7:::

1)第1个字段:记录的是用户名。

2)第2个字段:记录的是密码,这个密码是经过MD5加密算法加密过的密码。

3、group文件:

(1)/etc/group文件的功能:

存放了Linux系统中所有群组的信息,它实际上就是一个存放群组信息的数据库(Database)。

(2)/etc/group文件每个字段的具体含义:

root:x:0:

1)第1个字段是这个群组的名字。

2)第2个字段中的x表示这个群组在登录Linux系统时必须使用密码。

3)第3个字段记录的是这个群组的gid。

4)第4个字段记录的是这个群组里还有哪些群组成员。

4、gshadow文件:

(1)/etc/gshadow文件的功能:

存放了Linux系统中所有群组的密码信息,它实际上就是一个存放群组密码信息的数据库(Database)。

(2)/etc/gshadow文件每个字段的具体含义:

root:::

组名:加密密码:组管理员:组附加用户列表

组密码说明:对于大多数用户来说,通常不设置组密码,因此该字段常为空,但有时为 "!",指的是该群组

没有组密码,也不设有群组管理员。

5、useradd命令(增加新用户):

会修改/etc/passwd和/etc/shadow文件。

(1)参数解析:

–u:指定用户的UID

–g:指定用户属于的主组

–d:指定用户的家目录,新账号登录后所使用的home_dir

–c:指定用户的备注信息,新账号/etc/passwd栏的说明栏,注释

–s:指定用户所用的shell,登录shell(/sbin/nologin)l(重要)

-e:指定用户账号终止日期,日期格式是MM/DD/YY

-G:指定用户可以属于多个组,用id +用户名命令查看

-M:指定创建用户时不建立家目录

(2)例子:

1)在系统中新增一个用户user01,主组为police以及uid为600的命令:

useradd –u 600 –g police user01

6、usermod命令(修改用户信息,修改登录名,用户的家目录等等):

会修改/etc/passwd和/etc/shadow文件。

(1)参数解析:

–u:修改用户的UID

–g:修改用户的GID

–G:将一个用户加入到指定的群组中

–d:修改用户的家目录

–c:修改用户的备注信息

–s:修改用户所用的shell

-L:锁定用户的密码

-U:解锁用户的密码

-e:修改账号终止日期,日期格式是MM/DD/YY

-M:删除用户的家目录

-a:将用户追加至上边 -G 中提到的附加组中。

(2)例子:

1)将/home/babies目录作为babydog4用户家目录的命令:

usermod -d /home/babies babydog4

2)将babydog6组作为babydog4用户的附属组的命令:

usermod -a -G babydog6 babydog4

3)将dog组变更为babydog4用户主组的命令:

usermod -g dog babydog4

4)将用户babydog4从babydog6组中删除的命令:

gpasswd -d babydog4 babydog6

5)将用户babydog4加入到babydog6组中的命令(和2)的效果一致):

gpasswd -a babydog4 babydog6

7、groupadd命令(增加新组):

会修改/etc/group和/etc/gshadow文件。

(1)参数解析:

1)–g:指定群组的GID。

(2)例子:

1)在系统中新增加一个名为boydogs的群组的命令:

groupadd boydogs

8、groupmod命令(修改一个群组账号的信息):

(1)参数解析:

1)–g:修改群组的GID

2)–n:修改群组的名称

(2)例子:

1)修改police群组的gid为521的命令:

groupmod –g 521 police

2)将群组boydogs改名为daddogs的命令:

groupmod –n daddogs boydogs

3)删除daddogs群组的命令:

groupdel daddogs

9、补充:

passwd(/etc/passwd):设置用户的密码

groupdel:删除用户组

13.6、userdel :删除用户:

-r:删除用户和用户的家目录

13.6.1、企业场景处理方法:

vi /etc/passwd:

注释掉该用户,观察一个月,这样出了问题可以还原,相当于操作的备份

把登录shell改成/sbin/nologin

提示:只要修改和删除都要小心

修改已建用户的密码和账号策略

13.7、change(1/etc/passwd),设置或修改用户密码的有效期( 该命令改变是 /etc/shadow 中的属性):

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

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

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

-E:帐号到期的日期。过了这天,此帐号将不可用。

-d:上一次更改的日期。

-I(大写的i):停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。

-l(小写的L):例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

13.8、change修改的文件是/etc/shadow文件:

root: $6$.4IJ3hJY$iwBpHiKVYENQp.19ir8n21ivFt2TRIp0TwI5YVSHkLLk79QWhTAzXbNMZRvYWl0FXrWzp.KLSaC7pHmBDjB7i1:17787:0:99999:7:::

1、我的服务器root帐户密码策略信息如下:

[root@linux ~]# chage -l root

最近一次密码修改时间 :3月 12, 2013

密码过期时间 :从不

密码失效时间 :从不

帐户过期时间 :从不

两次改变密码之间相距的最小天数 :0

两次改变密码之间相距的最大天数 :99999

在密码过期之前警告的天数 :7

2、我可以通过如下命令修改我的密码过期时间:

[root@linux ~]# chage -M 60 root

[root@linux ~]# chage -l root

最近一次密码修改时间 : 3月 12, 2013

密码过期时间 : 5月 11, 2013

密码失效时间 :从不

帐户过期时间 :从不

两次改变密码之间相距的最小天数 :0

两次改变密码之间相距的最大天数 :60

在密码过期之前警告的天数 :7

3、然后通过如下命令设置密码失效时间:

[root@linuxde ~]# chage -I 5 root

[root@linuxde ~]# chage -l root

最近一次密码修改时间 :3月 12, 2013

密码过期时间 :5月 11, 2013

密码失效时间 :5月 16, 2013

帐户过期时间 :从不

两次改变密码之间相距的最小天数 :0

两次改变密码之间相距的最大天数 :60

在密码过期之前警告的天数 :7

从上述命令可以看到,在密码过期后5天,密码自动失效,这个用户将无法登陆系统了。

13.9、显示用户的的时间:

[root@centos6 lc1]# echo "$PS1"

[\u@\h \W]\$

[root@centos6 lc1]02:37:46$

13.10、查看linux中各用用户和组的情况:

who:计算机用户的登录情况

lastlog:最近登录的情况

groups:当前用户在 哪些组里

id:查看用户的uid、gid(主组)及所加入的全部组;

[root@centos6 ~]# id lc1

uid=999(lc1) gid=1000(dddd) groups=1000(dddd),999(lc1)

users:显示用户中所有的用户

su:角色切换

root用户切换到其它用户不需要密码

su - lc1(中间的“-”表示的是切换用户身份加载环境变量,是env中的环境变量)

由普通用户切换到root用户需要密码

-c:执行其它用户的命令,且不退出当前的用户

[root@centos6 ~]# su - lc1 -c pwd

/home/lc1

[root@centos6 ~]#

企业应用场景:

以指定用户身份开机自启动服务

13.11、sudo:普通用户可以拥有root或其他用户的权限:

普通用户必须要知道root密码才能切换到root,这样root密码就泄露了,不安全,而使用su命令

切换身份后的身份无法精细控制,拿到超级权限的人可以为所欲为,而且还泄露了密码;

通过sudo命令,我们可以把某些超级用户权限分类有针对性授权给普通的用户,并且普通用户不需要

知道root密码就可以使用得到的授权,创建的文件(管理员真正允许的root权限);

13.11.1、sudo的流程:

13.11.2、命令详解:

主机别名(一个sudo文件多台主机进行使用):

13 # Host_Alias FILESERVERS = fs1, fs2

14 # Host_Alias MAILSERVERS = smtp, smtp2

注意书写的规范,“=”号两边有空格

注意定义规范,每个成员用逗号分隔,逗号后面有空格

用户别名:

20 # User_Alias ADMINS = jsmith, mikem, %groupname

给普通用户所有的权限,相当于root 可以直接 sudo - root,特别的不安全

13.11.3、visudo:

root(用户名),ALL(机器名,ALL,代表当前的机器) =(ALL)(代表用户的角色,ALL默认代表root用户和所有的用户,如果什么都不给代表的是root用户角色),NOPASSWD(代表无密码登录):ALL(代表所有的命令)

根据需求进行分析;

检查配置(如果不进行检查会导致/etc/sudoers 文件内语法错误,导致sudo无法使用)

[root@centos6 ~]# visudo -c

/etc/sudoers: parsed OK

[root@centos6 ~]# grep lc1 /etc/sudoers

lc1 ALL=(ALL) NOPASSWD:ALL

[lc1@centos6~]sudo useradd lc2

Sorry, user lc1 is not allowed to execute '/bin/su - root' as root on centos6.7.

13.11.4、查看用户的sudo权限:

su - lc1 :登录用户

sudo -l :显示用户当前的权限

给用户适当的授权,只给用户创建文件的权限(用户原本是普通用户时的命令依然可用,只是用来确定用户可以使用root的角色可以干哪些事情)

visudo:

[lc1@centos6 /]$ sudo touch sudo.txt

[lc1@centos6 /]$ ls -l sudo.txt

-rw-r--r-- 1 root root 0 Sep 14 05:03 sudo.txt

[lc1@centos6 /]$ sudo echo "123" >sudo.txt

-bash: sudo.txt: Permission denied

13.11.5、配置sudo命令用户行为审计:

并不记录普通用户的普通操作,而是记录那些执行sudo命令的用户的操作

生产环境企业日志审计解决方案

sudo配合rsyslog服务,进行日志审计

visudo编辑 /etc/sudoers 文件,在最后面追加一行 Defaults logfile=/var/log/sudo.log

visudo -c :检查语法;

用普通用户操作sudo命令,在/var/log/sudo.log中都有日志记录;

[root@centos6 ~]# cat /var/log/sudo.log

Sep 14 20:35:43 : lc1 : command not allowed ; TTY=pts/1 ; PWD=/home/lc1 ;

USER=root ; COMMAND=/bin/ls -l /

13.12、linux 用户补充知识:

封建社会:

root:皇帝

普通用户:老百姓

虚拟用户:系统里的傀儡,不能使用,固定存在,满足linux里面服务进程及程序属主的要求而存在,进程及程序都属于用户

添加用户:

useradd lc

psswd lc(赋予用户密码)

非交互式更改密码

su - lc :角色切换 家目录为/home/lc/ (只能查看,不能更改服务,修改文件)

$普通用户 、 #root用户(家目录/root) ; 从普通用户切到root用户要密码,从root用户切到 ,普通用户不需要密码;

whoaim:查看当前用户是谁

查看主机名:uname -n hostname

修改主机名:hostname lc (临时生效,重启无效)

修改主机名永久生效的方法

vi /etc/sysconfig/network(需要重启) 此时再 使用命令hostname +主机名实现永久修改

[root@centos6 ~]# vi /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 centos6.7

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 centos6.7

13、linux中用户和用户组的更多相关文章

  1. linux中用户和用户组

    一.用户和组原理 一个用户可以属于多个组,一个组有多个用户 在Linux中操作系统必须依赖组和用户进行管理 二.与用户和组相关的配置文件 1.组相关配置文件 1)/etc/group :管理用户组信息 ...

  2. Linux中用户及用户组

    Linux用户只有两个等级:root及非root.Linux中还有一部分用户,如:apache.mysql.nobody.ftp等,这些也都是非root用户,即普通用户.Linux的权限实际是上不同用 ...

  3. Linux中用户与用户组管理

    1.基础知识 Linux作为一种多用户的操作系统(服务器系统),允许多个用户同时登陆到系统上,并响应每个用户的请求. 任何需要使用操作系统的用户,都需要一个系统账号,账号分为:管理员账号与普通用户账号 ...

  4. linux中用户和用户组的概念以及查看命令

    Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响. 例如,某台 Linux 服务器上有 4 个用户,分别是 root ...

  5. linux创建用户和用户组

    Linux创建用户.用户组 及 删除 在创建用户时,需要为新建用户指定一用户组,如果不指定其用户所属的工作组,自动会生成一个与用户名同名的工作组.创建用户user1的时候指定其所属工作组users,例 ...

  6. linux系统--用户和用户组

    一.用户和用户组的概念 用户:使用操作系统的人 用户组:具有相同系统权限的一组用户.在linux系统中可以存在多个用户组 1.1 /etc/group 这里存储当前系统中所有用户组的信息 每一行对应一 ...

  7. Linux命令——用户和用户组管理

    Linux命令--用户和用户组管理 命令groupadd 作用:新增组 格式:groupadd [-g GID] groupname 参数:-g,指定GID,一般从500开始 说明:一般不必加-g参数 ...

  8. 2.Linux的用户、用户组、权限、文件系统管理及其网络配置

    2.1 Linux的用户及用户组 2.1.1 Linux的用户管理 用户账号管理包含以下三个方面: 用户账号的添加.删除.与修改 用户口令(密码)的管理 用户组的添加.删除管理 Linux系统中用户信 ...

  9. Linux基础——用户和用户组

    Linux基础--用户和用户组 一.用户和用户组 用户在/etc/passwd中 用户组在/etc/group/中注意:在创建用户时,系统默认生成一个用户组(组名和用户名一致) 1.用户 1.1查看用 ...

随机推荐

  1. 用 set follow-fork-mode child即可。这是一个 gdb 命令,其目的是告诉 gdb 在目标应用调用fork之后接着调试子进程而不是父进程,因为在 Linux 中fork系统调用成功会返回两次,一次在父进程,一次在子进程

    GDB的那些奇淫技巧 evilpan 收录于 Security  2020-09-13  约 5433 字   预计阅读 11 分钟  709 次阅读  gdb也用了好几年了,虽然称不上骨灰级玩家,但 ...

  2. QTableWidget - 基础讲解(2) 样式、右键菜单、表头塌陷、多选等

    转载:https://www.cnblogs.com/zhoug2020/p/3789076.html 在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是 ...

  3. 第3期:Too many open files以及ulimit的探讨

    第3期:Too many open files以及ulimit的探讨 毛帅 Java.AI.互联网.金融 10 人赞同了该文章 Too many open files是Java常见的异常,通常是由于系 ...

  4. 配置trunk和access

    配置trunk和access 拓扑图 PC地址设置 PC1 :192.168.1.1 vlan10 PC2 :192.168.1.2 vlan10 交换机配置 LSW3配置 <Huawei> ...

  5. ltp 测试流程及测试脚本分析

    LTP介绍 (2011-03-25 18:03:53) 转载▼ 标签: ltp linux 压力测试 杂谈 分类: linux测试 LTP介绍 一.LTP介绍1.简介LTP(Linux Test Pr ...

  6. Java EnumMap 实现类

    EnumMap 实现类 因为 HashMap 是一种通过对 key 计算 hashCode(),通过空间换时间的方式,直接定位到 value 所在的内部数组的索引,因此,查找效率非常高. 如果作为 k ...

  7. linux 修改IP, DNS -(转自fighter)

    linux下修改IP.DNS.路由命令行设置 ubuntu 版本命令行设置IP cat /etc/network/interfaces # This file describes the networ ...

  8. GPIO模式用法

    浮空,顾名思义就是浮在半空,输入直接与寄存器挂钩: 开漏,输出0的时候 PMOS管导通IO输出Vdd,输出1的时候 NMOS管导通IO输出Vss(Cmos场效应管): 推挽,输出时候电平确定,同样使用 ...

  9. Nginx下配置Https证书详细过程

    一.Http与Https的区别HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高 ...

  10. 统信UOS - 扩展系统盘

    一.开root权限,开终端 二.执行lsblk指令,查看磁盘情况 可以发现 / 路径 对应的是loop0,查阅可知loop设备就是一个文件,挂载为一个路径操作的,这就尴尬了,好好的分区不用,你干嘛这么 ...