Centos中用户相关操作(用户管理、用户组管理、超级用户、伪用户)

1、用户管理

        Linux是一个多用户、多任务的操作系统。

        Linux系统的管理员之所以是root,是因为该用户的身份号码即UID的数值为0,UID-就相当于我们的身份证号码一样具有唯一性,因此可通过用户的UID值来判断用户身份。

  • 管理员UID为0:系统的管理员用户。
  • 系统用户UID为1~999: Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
  • 普通用户UID 从1000开始:是由管理员创建的用于日常工作的用户。需要注意的是,UID是不能冲突的,而且管理员创建的普通用户的UID默认是从1000开始的(即使前面有闲置的号码)。

1.1 创建新用户

在root用户权限下新建用户:

语法:
useradd (选项) (参数)
示例:
useradd -m xxx
选项说明
-d指定用户的家目录 (默认:/home/username)
-m自动创建用户主目录,主目录的名字就是用户名
-g

指定用户所属的用户组,默认不指定会自动创建一个同名的用户组

如果指定一个初始的用户基本组,该组必须存在

-G指定一个或多个扩展组
-N不创建与用户同名的基本用户组
-e账户的到期时间,格式为:YYYY-MM-DD
-u指定该用户的默认UID
-s指定该用户的默认Shell解释器

示例一: 

查看所有用户信息的文件:

cat /etc/passwd

 查看用户组:

cat /etc/group

说明:

  • useradd 命令的使用需要使用管理员权限,前面需要加上 sudo
  • 创建用户如果不指定用户组,默认会自动创建一个同名的用户组
  • 查看用户是否创建成功,可以查看/etc/passwd这个文件
  • 查看用户组是否创建成功,可以查看/etc/group这个文件

passwd文件中的每项信息说明,以dgw:x:0:0:root:/root:/bin/bash为例:

  • 第一个:用户名
  • 第二个:密码占位符
  • 第三个:uid, 用户id
  • 第四个:gid, 用户所在组id
  • 第五个:用户描述, 可选,
  • 第六个:用户的主目录所在位置
  • 第七个:用户所用 shell 的类型,一般由bash或者sh,默认不设置是sh类型

group文件中的每项信息说明, 以laowang:x:1001:为例:

  • 第一个:用户组名
  • 第二个:用户组密码占位符,一般Linux系统的用户组都没有密码的
  • 第三个:组id

id命令查看用户信息:

命令说明
id查看用户信息

每项信息说明:

uid=1001(dgw) gid=1001(dgw) 组=1001(dgw)

  • 第一个: uid 表示用户id
  • 第二个: gid 表示用户组id
  • 第三个: 组 表示用户所在的用户组(附加组)

示例二:

1.2 修改用户信息

        有些时候不小心在useradd的时候加入了错误的设定数据,此时我们当然可以直接到/etc/passwd或/etc/shadow中去修改相对应字段的数据。

命令说明
usermod修改用户信息

语法:

usermod (选项) (参数)

usermod选项:

命令说明
-G设置一个附加组    【可以理解为干爸】
-g修改用户组
-c修改用户账号的备注文字
-d修改用户登入时的目录
-e修改账号的有效期限
-f修改在密码过期多少天即关闭该账号
-l修改用户账户名称
-L锁定用户密码,使密码无效
-s修改用户登入后所使用的shell
-u修改用户ID
-U解除密码锁定

示例一: 

usermod -G root dgw

 usermod -g keepmoving xxx

注意:增加附加组要在已有sudo权限的用户中添加。

示例二:

1.3 设置密码 

passwd命令用于修改用户密码、过期时间、认证信息等。

语法:

passwd (选项) (参数)

选项:

  • -d:删除密码,仅有系统管理者才能使用;
  • -f:强制执行;
  • -k:设置只有在密码过期失效后,方能更新;
  • -I:锁住密码;
  • -S:列出密码的相关信息,仅有系统管理者才能使用;
  • -u:解开已上锁的帐号。

示例一:

在root用户下,对某个用户设置密码:

passwd xxx

注意:这儿是直接修改,不需要输入以前的密码进行验证。

示例二:

注意:新建的用户,为设置密码时,查看密码状态时为Locked状态。

示例三:

        假设您有位同事正在度假,而且假期很长,那么可以使用passwd 命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该命令允许用户登录系统,而不是将其删除。这样既保证了这段时间内系统的安全;也避免承频繁添加、删除用户带来的麻烦。

1.4 查看密码

cat /etc/shadow

1.5 删除用户

命令说明
userdel删除用户

选项:

userdel [选项] 用户名

userdel命令选项:

选项说明
-r 用户名删除用户主目录,必须要设置,否则用户主目录不会删除,即同时删除用户及用户家目录
-f强制删除用户

-r命令同时删除用户相关的文件:

  • /etc/passwd
  • /etc/shadow
  • /home/username 

示例一: 

userdel -r dgw

注意:不能在当前用户删除本身的

注意:删除用户时,此时使用id已经查询不到当前删除的用户信息,同时默认同名的用户组也会被删除。

1.6 附加组

命令说明
gpasswd添加和删除附加组信息

gpasswd命令选项:  【-a  -d  的使用方法是一样的】

选项说明
-a 用户名给用户添加附加组
-d 用户名给用户删除附加组
gpasswd -a dgw keepmoving

gpasswd -d dgw keepmoving

2、用户组管理

2.1 用户组

        用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的.

2.2 Linux用户和用户组的关系

用户和用户组的对应关系有以下4种:

  • 一对一:一个用户可以存在一个组中,是组中的唯一成员;
  • 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
  • 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
  • 多对多:多个用户可以存在多个组中,也就是以上3种关系的扩展。

2.3 添加用户组groupadd

语法

groupadd (选项) (参数)

参数

注意

-r:创建系统工作组,系统工作组的组ID小于500;

示例一

建立一个新组,并设置组ID加入系统:

groupadd -g 345 bigdata

2.4 修改用户组 groupmod

语法:

groupmod (选项) (参数)

选项

示例一

把建立bigdata组改为bigdata2并设置GID改为506:

groupmod -g 506 -n bigdata2 bigdata

2.5 删除用户组groupdel

语法

groupdel (选项) (参数)

选项

示例一

groupdel dgw

示例二

groupdel -f dgw

3、超级用户和伪用户

Linux下用户分为三类:超级用户、普通用户、伪用户:

  • 超级用户:用户名为root,具有一切管理权限,UID为0,可以创建多个管理员。
  • 普通用户:在默认情况下,普通用户UID是介于500~6000;
  • 伪用户:这些用户的存在是为了方便系统管理,满足相应的系统进程对文件属主的要求。伪用户不能够登录,他的ID值介于1~499。

3.1 用户身份切换

        由于超级权限在系统管理中的不可缺少的重要作用,为了完成系统管理任务,必须用到超级权限。

3.1.1 su

su命令就是切换用户的工具。

命令说明
su切换用户

语法格式:

su xxx
或者
su - xxx

示例一: 

注意

su命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。强烈建议在切换用户身份时添加这个减号(-)。

3.1.2 sudo

        sudo的全称为: super user dq。顾名思义:干超级用户才能干的事!所以Sudo最常用的功能就是提升一个命名的执行权限。

语法:

sudo [参数] 命令名称

参数:

[root@192 ~]# sudo --help
sudo - 以其他用户身份执行一条命令

usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...

选项:
  -A, --askpass                 使用助手程序进行密码提示
  -b, --background              在后台运行命令
  -C, --close-from=num          关闭所有 >= num 的文件描述符
  -E, --preserve-env            在执行命令时保留用户环境
      --preserve-env=list       保留特定的环境变量
  -e, --edit                    编辑文件而非执行命令
  -g, --group=group             以指定的用户组或 ID 执行命令
  -H, --set-home                将 HOME 变量设为目标用户的主目录。
  -h, --help                    显示帮助消息并退出
  -h, --host=host               在主机上运行命令(如果插件支持)
  -i, --login                   以目标用户身份运行一个登录 shell;可同时指定一条命令
  -K, --remove-timestamp        完全移除时间戳文件
  -k, --reset-timestamp         无效的时间戳文件
  -l, --list                    列出用户权限或检查某个特定命令;对于长格式,使用两次
  -n, --non-interactive         非交互模式,不提示
  -P, --preserve-groups         保留组向量,而非设置为目标的组向量
  -p, --prompt=prompt           使用指定的密码提示
  -r, --role=role               以指定的角色创建 SELinux 安全环境
  -S, --stdin                   从标准输入读取密码
  -s, --shell                   以目标用户运行 shell;可同时指定一条命令
  -t, --type=type               以指定的类型创建 SELinux 安全环境
  -T, --command-timeout=timeout 在达到指定时间限制后终止命令
  -U, --other-user=user         在列表模式中显示用户的权限
  -u, --user=user               以指定用户或 ID 运行命令(或编辑文件)
  -V, --version                 显示版本信息并退出
  -v, --validate                更新用户的时间戳而不执行命令
  --                            停止处理命令行参数

示例一:sudo -V

[root@192 ~]# sudo -V
Sudo 版本 1.8.23
当前选项:--build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --prefix=/usr --sbindir=/usr/sbin --libdir=/usr/lib64 --docdir=/usr/share/doc/sudo-1.8.23 --with-logging=syslog --with-logfac=authpriv --with-pam --with-pam-login --with-editor=/usr/bin/vi --with-env-editor --enable-gcrypt --with-ignore-dot --with-tty-tickets --with-ldap --with-ldap-conf-file=/etc/sudo-ldap.conf --with-selinux --with-passprompt=[sudo] password for %p:  --with-linux-audit --with-sssd
Sudoers 策略插件版本 1.8.23
Sudoers 文件语法版本 46

Sudoers 路径:/etc/sudoers
nsswitch 路径:/etc/nsswitch.conf
ldap.conf 路径:/etc/sudo-ldap.conf
ldap.secret 路径:/etc/ldap.secret
认证方法: 'pam'
若使用了 syslog,用于记录日志的 syslog 设施:authpriv
用户认证成功时使用的 syslog 优先级:notice
用户认证不成功时使用的 syslog 优先级:alert
忽略 $PATH 中的“.”
在用户不在 sudoers 列表中时发送邮件
在用户第一次运行 sudo 时向他致辞
默认要求用户认证
root 可以运行 sudo
总是将 $HOME 设为目标用户的主目录
允许收集一些信息,以提供有用的错误消息
Visudo 将优先考虑 EDITOR 环境变量
设置 LOGNAME 和 USER 环境变量
日志文件折行的长度(0 则不折行):80
认证时间戳延时:18000.0 分钟
密码提示延时:18000.0 分钟
输入密码的尝试次数:3
要使用的 umask,或 0777 使用用户的:022
邮件程序路径:/usr/sbin/sendmail
邮件程序标志:-t
发送邮件的地址:root
邮件消息的主题行:*** SECURITY information for %h ***
密码错误消息:对不起,请重试。
致辞(lecture)状态文件夹的路径:/var/db/sudo/lectured
认证时间戳文件夹的路径:/run/sudo/ts
默认密码提示:[sudo] %p 的密码:
运行命令的默认用户:root
覆盖用户的 $PATH 变量的值:/sbin:/bin:/usr/sbin:/usr/bin
visudo 所使用的编辑器的路径:/usr/bin/vi
何时为“list”伪命令请求密码:any
何时为“verify”伪命令请求密码:all
>= 3 的文件描述符将会在执行命令前关闭
将环境重设为默认的变量集
要检查完整性的环境变量:
        TZ
        TERM
        LINGUAS
        LC_*
        LANGUAGE
        LANG
        COLORTERM
要移除的环境变量:
        *=()*
        RUBYOPT
        RUBYLIB
        PYTHONUSERBASE
        PYTHONINSPECT
        PYTHONPATH
        PYTHONHOME
        TMPPREFIX
        ZDOTDIR
        READNULLCMD
        NULLCMD
        FPATH
        PERL5DB
        PERL5OPT
        PERL5LIB
        PERLLIB
        PERLIO_DEBUG 
        JAVA_TOOL_OPTIONS
        SHELLOPTS
        BASHOPTS
        GLOBIGNORE
        PS4
        BASH_ENV
        ENV
        TERMCAP
        TERMPATH
        TERMINFO_DIRS
        TERMINFO
        _RLD*
        LD_*
        PATH_LOCALE
        NLSPATH
        HOSTALIASES
        RES_OPTIONS
        LOCALDOMAIN
        CDPATH
        IFS
要保留的环境变量:
        XAUTHORITY
        _XKB_CHARSET
        LINGUAS
        LANGUAGE
        LC_ALL
        LC_TIME
        LC_TELEPHONE
        LC_PAPER
        LC_NUMERIC
        LC_NAME
        LC_MONETARY
        LC_MESSAGES
        LC_MEASUREMENT
        LC_IDENTIFICATION
        LC_COLLATE
        LC_CTYPE
        LC_ADDRESS
        LANG
        USERNAME
        QTDIR
        PS2
        PS1
        MAIL
        LS_COLORS
        KDEDIR
        HISTSIZE
        HOSTNAME
        DISPLAY
        COLORS
解析 sudoers 时使用的区域设置:C
使用 zlib 压缩 I/O 日志
用于保存输入/输出日志的目录:/var/log/sudo-io
用于保存输入/输出日志的文件:%{seq}
在分配伪终端时向 utmp/utmpx 文件中添加一条记录
要使用的 PAM 服务名称:sudo
用于登录 shell 的 PAM 服务名称:sudo-i
尝试为目标用户建立 PAM 凭据
创建一个新的 PAM 会话来运行该命令
最大 I/O 日志序列号:0
启用 support netgroup 支持
在使用 sudoedit 编辑文件时检查上级目录是否可写
通过 组 插件查询未知的系统组
即使 sudo 无法写入审核日志也允许命令运行
即使 sudo 无法写入日志文件也允许命令允许
解析 sudoers 中的组并与 组 ID (而不是名字) 匹配
大于此数值的日志条目会分为多条 syslog 消息:960
I/O 日志文件要使用的文件模式:0600
根据文件描述符执行命令,而非根据路径:digest_only
认证时间戳记录的类型:tty
在匹配 用户 名时忽略大小写
在匹配 组 名时忽略大小写
Don't pre-resolve all group names
Perform PAM account validation management

本地 IP 地址和网络掩码对:
        192.168.1.13/255.255.255.0
        2409:8a00:254d:90a0:41bc:de4:af6e:9479/ffff:ffff:ffff:ffff::
        fe80::c890:8da3:b20c:a830/ffff:ffff:ffff:ffff::

Sudoers I/O plugin version 1.8.23
3.1.3 visudo

visudo来配置用户权限。

注意

        编辑sudo的配置文件/etc/sudoers是一般不要直接使用vi (vi /etc/sudoers)去编辑,因为sudoers配置有一定的语法,直接用vi编辑保存系统不会检查语法,如有错也保存了可能导致无法使用sudo工具,最好使用visudo命令去配置。虽然visudo也是调用vi去编辑,但是保存时会进行语法检查,有错会有提示。

示例二

4、操作系统用户分类

 

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值