2023-03-20管理本地用户和组

用户

用户账户用于可以运行命令的不同用户和程序之间提供安全界限。在系统内部通过分配的唯一标识号(用户ID或UID)来区分不同的用户账号。
系统中的每一个进程都作为一个特定的用户运行。每个文件都有一个特定的用户作为其所有者。文件所有权有助于系统对文件用户实施访问控制。与运行的进程相关联的用户可确定该进程可访问的文件和目录。

  • Linux中用户类型可分为三种:
    -- 超级用户账户用于管理系统。称为root,UID为0.超级用户对系统拥有完全访问权限
    -- 系统的系统用户账户提供支持服务进程使用。这些进程通常不需要以超级用户身份进行运行。系统会分配非特权账户,允许他们确保其文件和其它资源不受彼此以及系统上普通用户的影响。用户无法使用系统用户账户以交互方式登录。
    --大多数用户都有用于处理日常工作的普通用户账户。与系统用户一样,普通用户对系统具有有限的访问权限。
#可以使用id命令查看用户的信息
[user@serverb 20:07:33 ~]$id            #查看当前登录用户的信息
uid=1001(user) gid=1001(user) groups=1001(user) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@serverb ~]# id user01              #查看指定用户信息
uid=1002(user01) gid=1002(user01) groups=1002(user01)
  • /etc/passwd文件存储本地用户信息
[root@serverb ~]# cat /etc/passwd
(1)root:(2)x:(3)0:(4)0:(5)root:(6)/root:(7)/bin/bash

分析:
-- (1):用户的用户名(root)
-- (2):用户的密码占位符,曾以密码加密的格式存储在这,后移至/etc/shadow中
-- (3):该用户的UID(root用户为0)
-- (4):该用户的GID(root用户为0)
-- (5):该用户的真实姓名
-- (6):该用户的家目录,用户启动shell时的初始目录
-- (7):该用户默认的shell程序,一般普通用户使用/bin/bash;如果系统用户不允许进行交互式登录,可能会使用/sbin/nologin

用户组

组是需要共享文件和其它系统资源访问权限的用户的集合。组可以用于向一组用户,授予文件访问权限,而非仅仅向一个用户授予访问权限。

  • /etc/group文件存储有关本地组的信息
[root@serverb ~]# cat /etc/group
... ...
(1)user01:(2)x:(3)1002:(4)

分析:
-- (1):该组的组名称
-- (2):过时的组密码,该字段始终为x
-- (3):该组GID
-- (4):可有可无,属于作为补充组的该组成员的用户列表

  • 补充组和主要组
    -- 主要组:/etc/passwd文件中用户信息显示的GID表示主要组的GID;在创建用户时,系统会默认创建一个与用户名同名的组
    -- 补充组:对用户额外操作加入指定组中

获取超级用户的访问权限

一般情况下,普通用户就能够完成权限授予的工作。但是很多涉及到系统级别的工作还是需要用root用户完成。此时就要向root用户提权。

  • 切换用户su
    su命令可以让用户切换至另一个用户,如果从普通用户运行su命令,系统会提示输入要切换的账号的密码。当以root用户身份运行su时,则无需输入用户密码。
[user@serverb 20:57:32 ~]$su - user01
Password:
#如果运行su - 默认时切换到root用户
[user@serverb 20:58:34 ~]$su -
Password:
Last login: Wed Mar 22 20:06:43 CST 2023 from desktop-up0o41n.lan on pts/0
[root@serverb ~]#
[root@serverb ~]# su - user
Last login: Wed Mar 22 20:57:32 CST 2023 on pts/0
[user@serverb 20:58:56 ~]$
  • sudo命令运行
    有时安全起见,root用户的账号可能根本没有有效的密码。用户无法使用密码登录root账号,也不能用su命令切换root获取shell。这时候可以使用sudo命令。
    与su命令不同的是,sudo通常要求用户输入其自身的密码以进行身份验证,而不是输入正尝试访问用户账户的密码。
    sudo可以配置为允许特定用户向某一个用户一样运行任何命令,或仅允许该用户执行部分命令,后面会有介绍如何配置sudo
    sudo的好处,执行的所有命令都默认为将日志记录到/var/log/secure中
[user@serverb 21:09:27 ~]$sudo -i      #使用该命令可切换root用户,并运行root的默认shell
[sudo] password for user:当前用户的密码
  • sudo配置
    sudo的主配置文件在/etc/sudoers。如果有多个管理员试图同时编辑该文件,为了避免出现问题,只应使用特殊的visudo命令进行编辑
    默认情况下/etc/sudoers还包含/etc/sudoers.d目录中所有文件内容,作为配置文件的一部分。这样管理员只需将相应的文件放入该目录即可为用户添加sudo访问权限。
    总的来讲:可以直接编辑visudo或是在/etc/sudoers.d目录下放入内容。
[user@serverb 21:24:52 ~]$sudo -i
user is not in the sudoers file.  This incident will be reported.    #在没有visudo增加用户权限时,是无法提权
#使用直接visudo编辑的方法
[root@serverb ~]# visudo
user(指定的用户)    ALL=(ALL)(可能包含此文件的任何主机上)       ALL(可以像系统上用户一样运行所有命令,也可以指定某些命令)
%wheel(%表示规则适用的组)  ALL=(ALL)       ALL
#或是在/etc/sudoer.d目录下放入文件
[root@serverb sudoers.d]# pwd
/etc/sudoers.d
[root@serverb sudoers.d]# vim user
user    ALL=(ALL)       ALL
#两种效果一样,配置之后
[user@serverb ~]$ sudo -i
[root@serverb ~]#        #切换为root用户

管理本地用户

  • 使用useradd创建本地用户
    常用选项:
    -- -c:指定用户的真实姓名(/etc/passwd中每行的第5个字段)
    -- -d:指定用户的家目录(/etc/passwd中每行的第6个字段)
    -- -s:指定用户的默认shell(/etc/passwd中的第7个字段)
    -- -g:指定新建账户主要组的ID,若要指定必须先新建用户组(不加选项默认是同时新建一个与用户名同名的组)
    -- -G:指定新建用户的补充组
[root@myhost ~]# useradd user -s /bin/bash -c "new user" -g practice -G wheel
useradd:“practice”组不存在
[root@myhost ~]# groupadd practice
[root@myhost ~]# useradd user -s /bin/bash -c "new user" -g practice -G wheel
[root@myhost ~]# tail -1 /etc/passwd
user:x:1002:1002:new user:/home/user:/bin/bash
[root@myhost ~]# cat /etc/group | grep 'wheel'
wheel:x:10:kaier,user
[root@myhost ~]# cat /etc/group | grep practice
practice:x:1002:
  • 使用usermod修改本地用户属性
    常用选项:
    -- -c:为用户修改真实名字
    -- -d:修改用户的新主目录
    -- -g:修改用户的新主要组
    -- -G:添加新的附加组
    -- -a:利用-G增加补充组,而不是替换
    -- -L:锁定用户
    -- -U:解锁用户
[root@myhost ~]# useradd -s /bin/bash -G wheel user1
[root@myhost ~]# getent passwd user1
user1:x:1003:1003::/home/user1:/bin/bash
[root@myhost ~]# getent group user1
user1:x:1003:
[root@myhost ~]# cat /etc/group | grep 'wheel'
wheel:x:10:kaier,user,user1
#修改
[root@myhost ~]# usermod -c "new user1" -aG practice user1
[root@myhost ~]# getent passwd user1
user1:x:1003:1003:new user1:/home/user1:/bin/bash
[root@myhost ~]# getent group practice
practice:x:1002:user1
  • 查看/etc/login.defs文件中用户有效的UID
[root@myhost ~]# cat /etc/login.defs | grep -E -v '^#|^$'
MAIL_DIR        /var/spool/mail
... ...
UID_MIN                  1000  #普通用户的最小UID
UID_MAX                 60000  #普通用户的最大UID
SYS_UID_MIN               201  #系统用户的最小UID
SYS_UID_MAX               999  #系统用户的最大UID
... ...
  • 使用userdel删除用户
    常用选项:
    -- -r:删除用户时,一并删除用户家目录以及数据(不加该选项只是删除用户信息,家目录和邮件还是保留的)
[root@myhost ~]# ls /home/user1
[root@myhost ~]# ls -ld /home/user1
drwx------ 5 user1 user1 107 3月  23 11:20 /home/user1
[root@myhost ~]# userdel -r user1
[root@myhost ~]# ls -ld /home/user1
ls: 无法访问/home/user1: 没有那个文件或目录
  • 使用passwd命令设置或修改用户密码
[root@myhost ~]# passwd  #后面不跟用户就是修改当前用户密码
更改用户 root 的密码 。
新的 密码:
[root@serverb ~]# passwd user  #root用户修改密码时,不需要用户原密码,普通用户需要
Changing password for user user.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

管理本地用户组

  • 使用groupadd名创建组
    常用选项:
    -- -g:指定用户组GID
  • 使用groupmod更改用户组属性
  • 使用groupdel删除用户组

管理用户密码

  • 用户密码存放在/etc/shadow文件下
cat /etc/shadow
user(1):$6$2smsbb..$j/BSFn1WNh71gMcoMUbpNm2bbr6aeA5nT9R61SGSPg6QvcvvP3gMKC2mG4FUqsECQ3ah8uYZFmZg.D8gv.O76.(2):19439(3):0(4):99999(5):7(6):(7):(8):(9)

分析:
(1):用户名
(2):用户密码加密后的格式
(3):用户最近一次修改密码的时间,算法是修改当天与1970-01-01之间相差的天数
(4):用户最少还有多少天才能更改密码的天数(默认是0,就是随时可以修改)
(5):用户最多多少天后一定要修改密码的天数,系统会强制用户修改密码(默认99999)
(6):过期前多少天会被告警(-1为永不提示)
(7):过期后多少天账号为inactive状态
(8):多少天后账号过期,无法登录
(9):保留参数

  • 密码的加密格式
$6(1)$2smsbb..(2)$j/BSFn1WNh71gMcoMUbpNm2bbr6aeA5nT9R61SGSPg6QvcvvP3gMKC2mG4FUqsECQ3ah8uYZFmZg.D8gv.O76.

分析:
(1):表示密码的加密算法,6表示哈希-526算法
(2):表示密码的加密盐值salt
(3):用户密码的加密哈希值,salt值和未加密的密码组合并加密,生成加密的密码哈希值

  • 密码的期限


    图片.png
vim /etc/login.defs
... ...
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   3
PASS_MIN_LEN    5
PASS_WARN_AGE   3
... ...
[root@serverb ~]# useradd akang  #只有修改配置文件之后新加的用户才会生效
[root@serverb ~]# getent shadow akang
akang:$6$qjvo6jRD$exO81rZgutJvHdkwiltjbaI3Gv0JvT/zrw4KGl0234hfdNESC0FJrowtBZGWl010J/iIL6/PzHPnwvwEvge5u0:19439:3:99999:3:::
[root@serverb ~]# chage -l akang
Last password change                                    : Mar 23, 2023
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 3
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 3
  • 使用chage命令设置用户信息
[root@serverb ~]# chage -d 0 akang  #
[root@serverb ~]# chage -l akang
Last password change                                    : password must be changed
Password expires                                        : password must be changed
Password inactive                                       : password must be changed
Account expires                                         : never
Minimum number of days between password change          : 3
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 3
#修改密码最大修改时间和密码最小修改时间
[root@serverb ~]# chage -m 1 akang
[root@serverb ~]# chage -M 30 akang
#验证
[root@serverb ~]# chage -l akang
Last password change                                    : Mar 23, 2023
Password expires                                        : Apr 22, 2023
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 1
Maximum number of days between password change          : 30
Number of days of warning before password expires       : 3
[root@serverb ~]# date 04212023
Fri Apr 21 20:23:00 CST 2023
[root@serverb ~]# su - user
Last login: Sun Apr 23 20:23:06 CST 2023 on pts/0
[user@serverb ~]$ su - akang
Password:
Warning: your password will expire in 1 day  #告警密码还有1天到期了
Last failed login: Sun Apr 23 20:23:39 CST 2023 on pts/0
There was 1 failed login attempt since the last successful login.
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,576评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,515评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,017评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,626评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,625评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,255评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,825评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,729评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,271评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,363评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,498评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,183评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,867评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,338评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,458评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,906评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,507评论 2 359

推荐阅读更多精彩内容