3.1 用户管理

一、 用户

为何要有用户?
资源分配、控制。

为何要有用户组?
资源分享,协同合作

Linux 系统如何管理用户和用户组

用户使用 UID (十进制的数字)
组使用 GID(十进制的数字)
系统中的每个资源都会属于具体的用户和组。
资源包括:文件,目录,运行时的程序(进程), 一个服务等。
Linux 系统只认识 UID 和 GID

用户基本信息和密码信息

用户信息保存在 /etc/passwd 文件中

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

/etc/passwd 文件内容

每行是一个用户,每行都是用 冒号分开用户的各个信息

image.png

/etc/shadow 文件内容

每行是一个用户,每行都是用 冒号分开用户的各个信息, 共有 9 个字段。

shark 账户在 shadow 文件中是这样的:

shark:!!:18099:0:99999:7:::

</pre>

这九个字段意义如下:

  1. 用户名

  2. 密码 这个密码是经过加密的, !! 表示,创建了此用户但是还未给其设置密码。

  3. 最近修改密码的日期

这个数字单位是天数, 是 1970 年 1 月 1 日作为 1 而累加的日期。

计算某个日期的累积天数的语法:

  1. echo $(( $(date --date="2019/07/21" +%s) / 86400+1))
命令意思:

2019/07/21 为你想要计算的日期,86400 为每一天的秒数, %s 为 1970/01/01 以来的累积总秒数。 由于 bash 仅支持整数,因此最终需要加上 1 补齐1970/01/01 当天

  1. 密码不可被更动的天数

    这个帐号的密码在最近一次被修改后需要经过几天才可以再被修改!如果是 0 的话, 表示密码随时可以修改的意思。

  2. 密码需要重新修改的天数

    指定在最近一次修改密码后, 在多少天数内需要再次的修改密码,可以强制用户修改密码。

  3. 距离密码要修改时的天数

    假如是 5, 那就是临近修改密码的前 5 天内,都会提示用户更新密码。

  4. 密码过期后的帐号宽限时间

    就是密码过期后,账户依然可以登了,并且打的到 bash, 但是当登录到系统时,系统会提示你立刻进行密码的更新,否则无法继续操作。
    密码有效期 = 密码修改日(因为当天也算一天) + 密码需要修改的天数

  5. 帐号失效日期

    也是从 1970/01/01 以来总天数。通常用在收费系统上。

  6. 保留

关于 UID

id 范围 该 ID 使用者特性
0(系统管理员) 当 UID 是 0 时,代表这个帐号是“系统管理员” root! 所以当你要让其他的帐号名称也具有 root 的权限时,将该帐号的 UID 改为 0 即可。 这也就是说,一部系统上面的系统管理员不见得只有 root 喔! 不过,很不建议有多个帐号的 UID 是 0 啦~容易让系统管理员混乱!
1~999(系统帐号) 保留给系统使用的 ID,其实除了 0 之外,其他的 UID 权限与特性并没有不一样。这个只是一个习惯。由于系统上面启动的服务希望使用较小的权限去运行,因此不希望使用 root 的身份去执行这些服务, 所以我们就得要提供这些运行中程序的拥有者帐号才行。这些系统帐号通常是不可登陆的, 可以看到这些用户都有 /sbin/nologin 这个特殊的 shell 存在。根据系统帐号的由来,通常这类帐号又约略被区分为两种:1~200:由各发行版本厂商自行创建的系统帐号;201~999:使用者这些 UID 去创建一些系统基本的账号。
1000~60000(可登陆帐号) 给一般使用者用的。事实上,目前的 linux 核心 (3.10.x 版)已经可以支持到 4294967295 (2^32-1) 这么大的 UID 号码了!

查看用户基本信息

  1. // 查看当前用户
  2. id

关于用户的编辑修改命令

useradd 添加用户

1.  useradd [-u  UID]  [-g 初始群组]  [-G 次要群组]  [-mM]  [-c 说明栏]  [-d 家目录绝对路径]  [-s shell]  新的用户名

3.  -M :强制!不要创建使用者主文件夹!(系统帐号默认值)
4.  -m :强制!要创建使用者主文件夹!(一般帐号默认值)
5.  `-r :创建一个系统的帐号,这个帐号的 UID 会有限制  (参考  /etc/login.defs)`
6.  -s :后面接一个 shell ,若没有指定则默认是  /bin/bash,指定的 shell 必须存在于系统中
7.  -e :后面接一个日期,格式为“YYYY-MM-DD”此项目可写入 shadow 第八字段,
8.  亦即帐号失效日的设置项;

在新建一个用户时,CentOS 这些默认值主要会帮我们处理几个项目:

  • /etc/passwd 里面创建一行与帐号相关的数据,包括创建 UID/GID/主文件夹等;
  • /etc/shadow 里面将此帐号的密码相关参数填入,但是尚未有密码;
  • /etc/group 里面加入一个与帐号名称一模一样的群组名称;
  • /home 下面创建一个与帐号同名的目录作为使用者主文件夹,且权限为 700

示例:

  1. 新增一个普通用户,自动创建家目录和组
  1. useradd shark
  1. 新增一个系统用户
  1. useradd -r shark1
  1. 新增一个系统用户, 且指定 shell 为 /sbin/nologin
  1. useradd -r -s /sbin/nologin shark2

useradd 的默认值

  1. ➜ ~ useradd -D
  2. GROUP=100
  3. HOME=/home
  4. INACTIVE=-1
  5. EXPIRE=
  6. SHELL=/bin/bash
  7. SKEL=/etc/skel
  8. CREATE_MAIL_SPOOL=yes

设置用户密码

1.  // root 功能:
2.  [root@www ~]# passwd [-l]  [-u]  [--sdtin]  [-S]  [-n 日数]  [-x 日数]  [-w 日数]  [-i 天数]  账号

4.  //所有人均可使用来修改自己的密码
5.  [root@testhost ~]# passwd [--sdtin]
6.  选项:
7.  --stdin  :可以通过来自前一个管道的数据,作为密码的输入,对shell script比较有帮助。
8.  -l    :lock 帐号,是密码暂时性失效
9.  -u    :解锁
10.  -S    :查看帐号密码的相关参数
11.  -n    :密码不可修改的天数
12.  -x    :密码强制修改天数
13.  -w    :密码过期前的警告天数
14.  -i    :修改或指定密码失效天数

  1. 普通用户修改自己的密码
  1. password
  1. root 身份设置/修改 其他用户的密码
  1. password shark

修改用户信息 usermod

root 用户执行
usermod     [-cdegGlsuLU]    username

1.  `选项与参数:`
2.  `-c :后面接帐号的说明,即  /etc/passwd 第五栏的说明栏,可以加入一些帐号的说明。`
3.  `-d :后面接帐号的主文件夹,即修改  /etc/passwd 的第六栏;`
4.  `-e :后面接日期,格式是 YYYY-MM-DD 也就是在  /etc/shadow 内的第八个字段数据啦!`
5.  `-f :后面接天数,为 shadow 的第七字段。`
6.  `-g :后面接初始群组,修改  /etc/passwd 的第四个字段,亦即是 GID 的字段!`
7.  `-G :后面接次要群组,修改这个使用者能够支持的群组,修改的是  /etc/group  啰~`
8.  `-a :与  -G 合用,可“增加次要群组的支持”而非“设置”喔!`
9.  `-l :后面接帐号名称。亦即是修改帐号名称,  /etc/passwd 的第一栏!`
10.  `-s :后面接  Shell  的实际文件,例如  /bin/bash 或  /bin/csh 等等。`
11.  `-u :后面接 UID 数字啦!即  /etc/passwd 第三栏的数据;`
12.  `-L :暂时将使用者的密码冻结,让他无法登陆。其实仅改  /etc/shadow 的密码栏。`
13.  `-U :将  /etc/shadow 密码栏的  `!`  去除,就是解除锁定!`

  1. 把用户 shark 添加到 wheel 组中
  1. usermod -a -G wheel shark
  2. 命令 添加 组 组名 用户名

删除用户 userdel

这个功能就太简单了,目的在删除使用者的相关数据,而使用者的数据有:

使用者帐号/密码相关参数:/etc/passwd, /etc/shadow
使用者群组相关参数:/etc/group, /etc/gshadow
使用者个人文件数据: /home/username, /var/spool/mail/username..
整个指令的语法非常简单:
[root@study ~]# userdel [-r] username

选项与参数: 
-r :连同使用者的主文件夹也一起删除
  1. root 身份删除普通用户

用户的家目录和邮箱等不会被删除

 userdel   shark
  1. root 身份删除普通用户,并且不保留被删除用户的家目录等数据。
1.  `userdel -r    shark1`

二、组

初始组(initial group):

就是在创建用户的时候,默认会创建一个和用户名同名的组。后期也可以修改。
初始组的 GID 会出现在 /etc/passwd 中,用户的存放 GID 的位置,用户已登录到系统中就会拥有此组的权限。

有效组(effective group):

后来加入的组

Linux 系统中的组信息存放在 /tec/group 文件中,可以分为四个部分

  1. 组名

  2. 组密码

  3. 组 ID

  4. 组内成员

组内的多个成员用英文逗号隔开,期间不能有空格。

UID 范围及意义,和 UID 几乎相同。 0 是管理员用户的初始组

关于组的命令

groups 查看用户都加入了哪些组

  1. 查看当前用户的组
  1. [shark@e9818e4ea8b3 ~]$ groups
  2. shark wheel
  1. 查看其他用户的组
  1. [shark@e9818e4ea8b3 ~]$ groups shark1
  2. shark1 : shark1

groupadd 新增组

  1. goupadd [-g gid] [-r] group_name
  2. 选项:
  3. -g :指定gid ,单独添加组,建议指定1000以上的gid,便于管理。
  4. -r :建立系统组

groupdel 删除组

  1. groupdel group_name

注意:当你要删除一个组时,需要确保系统中没有任何一个用户把此组作为初始组 initial group

作业练习

  1. 建立用户:nginx 默认没有家目录,不可本地登录系统
  2. 建立用户:super 默认将其加入到 wheel 组
  3. 建立用户:mysql 用户 指定目录: /opt/mysql/
  4. 创建用户:prod 用户 设置其1天内不可修改密码,密码有效期3天,提前1天通知他,密码失效期6天,用户失效期7天
  5. 建立组:devops 并指定组成员:
    建立组:baoma 指定组成员: x3 x5 x6

用户身份切换

su

切换为其他用户,这需要提供其他用户的密码

  1. su - [-c] [用户名]
  2. 选项与参数:
  3. - :单纯使用 - 如“ su - ”代表使用 login-shell 的变量文件读取方式来登陆系统;
  4. 若用户名没有加上去,则代表切换为 root 的身份。

sudo

sudo 是用于使用普通用户的身份去执行 root 用户身份才有权执行的命令操作。

必要条件

  1. 需要把普通用户设置为 sudo 用户
  2. 使用 sudo 的时候需要提供 root 的用户名。

语法

  1. sudo [-b] [-u 新使用者帐号]
  2. 选项与参数:
  3. -b :将后续的指令放到背景中让系统自行执行,而不与目前的 shell 产生影响
  4. -u :后面可以接欲切换的使用者,若无此项则代表切换身份为 root 。
  1. 使用 sshd 用户,在 /tmp 目录下创建一个普通文件,并观察文件相关属性
  1. sudo -u sshd touch /tmp/sshd.file
    多个命令用分号隔开

sudo 的执行是这样的流程

  1. 当使用者执行 sudo 时,系统于 /etc/sudoers 文件中搜寻该使用者是否有执行 sudo 的权限;
  2. 若使用者具有可执行 sudo 的权限后,便让使用者“输入使用者自己的密码”来确认;
  3. 若密码输入成功,便开始进行 sudo 后续接的指令(但 root 执行 sudo 时,不需要输入密码);
  4. 若欲切换的身份与执行者身份相同,那也不需要输入密码。

visudo 将普通用户设置为 sudo 用户

建议使用 visudo 编辑 /etc/sudoers 文件,比较安全。

设置语法格式:

  1. 设置单一用户
  2. root ALL=(ALL) ALL
  3. 设置一个组
  4. %wheel ALL=(ALL) ALL

各个部分的意思

  1. “使用者帐号”:系统的哪个帐号可以使用 sudo 这个指令的意思;
  2. “登陆者的来源主机名称”:当这个帐号由哪部主机连线到本 Linux 主机,意思是这个帐号可能是由哪一部网络主机连线过来的,信任的来源的意思。默认值 root 可来自任何一部网络主机
  3. “(可切换的身份)”:这个帐号可以切换成什么身份来下达后续的指令,默认 root 可以切换成任何人;
  4. “可下达的指令”:可用该身份下达什么指令?这个指令请务必使用绝对路径撰写。 默认 root 可以切换任何身份且进行任何指令之意。

免密码

之前的设置都需要,输入自己的密码,有时候这在写一些自动化的工具时,并不合适,因为提示用户输入自己的密码,会导致交互的操作。

sudo 时,不输入任何密码

  1. %wheel ALL=(ALL) NOPASSWD: ALL

指定切换身份和使用的命令

  1. shark ALL=(root) /usr/bin/passwd

限制使用某些命令

  1. shark ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

允许 shark 用户以 root 身份修改其他用户的密码,但是不允许修改 root 的密码

用户别名和命令别名

有时候可以让多个用户共同具有某些 sudo 用户的权限,就可以把这些用户设置为一个用户别名

  1. User_Alias ADMPW = shark1, shark2
  2. Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
  3. ADMPW ALL=(root) ADMPWCOM

sudo 和 su

让普通用户切换为 root 身份,并且不需要输入 root 的密码。

  1. User_Alias ADMINS = shark1, shark2
  2. ADMINS ALL=(root) /bin/su -
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,841评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,415评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,904评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,051评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,055评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,255评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,729评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,377评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,517评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,420评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,467评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,144评论 3 317
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,735评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,812评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,029评论 1 256
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,528评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,126评论 2 341

推荐阅读更多精彩内容