用户和组管理

用户和组管理

用户文件

用户文件: 存放着用户的基本信息的一个文件、该文件由若干行组成、每行代表一个用户、每一行用冒号(:)分割,每一段代表着不同的信息。

路径: /etc/passwd

passwd文件信息:

[root@test1 ~]# tail /etc/passwd
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
xxh:x:1000:1000::/home/xxh:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash

用户密码文件

用户密码文件: 用来存放用户的密码信息的文件、该文件由若干行组成、每行代表一个用户、每一行用冒号(:)分割,每一段代表着不同的信息。

路径: /etc/shadow

shadow文件信息:

[root@test1 ~]# tail /etc/shadow
systemd-bus-proxy:!!:17452::::::
systemd-network:!!:17452::::::
dbus:!!:17452::::::
polkitd:!!:17452::::::
tss:!!:17452::::::
postfix:!!:17452::::::
sshd:!!:17452::::::
xxh:!!:17456:0:99999:7:::
user1:$6$UO4VvBt8$4P7ulIfuASCvre1g1E17BN.bTiDQKQgji36pAopCpWRfP6ttocb.0whIc5rYB7EUDh7m8mKNIAK/J41gjnHAG0:17465:0:99999:7:::
user2:$6$kXUKpmbE$KFyxtZIHcXNnHT0Bm6eMZb29H9NjMJmCdnYN.oV1h4H3Wb5DH/0omc3Qo9SUQVX7q3PZOYbK8/JOJYblw5gmF1:17465:0:99999:7:::

passwd、shadow文件每一段所代表的信息: 此处输入图片的描述

用户组管理

用户组文件

用户组文件: 存放着用户组的基本信息的一个文件、该文件由若干行组成、每行代表一个用户、每一行用冒号(:)分割,每一段代表着不同的信息。

路径: /etc/group

group文件信息:

[root@test1 ~]# tail /etc/group
polkitd:x:996:
tss:x:59:
dip:x:40:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
xxh:x:1000:
user1:x:1001:
user2:x:1002:
slocate:x:21:
   |    |  |
   |    |  |_GID
   |    |_密码占位符
   |_组名

用户组密码文件

用户组密码文件: 存放着用户组的基本信息的一个文件、该文件由若干行组成、每行代表一个用户、每一行用冒号(:)分割,每一段代表着不同的信息。

路径: /etc/gshadow

gshadow文件信息:

[root@test1 ~]# tail -3 /etc/gshadow
user1:!::
user2:!::
slocate:!::

groupadd命令

groupadd命令: 用于创建一个新的组

用法: groupadd...[选项]...组名

常用参数:

-g:创建新组时指定GID{centos7以上系统系统预留id为1-1000}

例子: 1、创建一个新的组并指定其GID

[root@test1 ~]# groupadd -g 1003 newgroup
[root@test1 ~]# tail /etc/group
tss:x:59:
dip:x:40:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
xxh:x:1000:
user1:x:1001:
user2:x:1002:
slocate:x:21:
newgroup:x:1003:

groupdel命令

groupdel命令: 删除一个组

用法: groupdel...[选项]...组名

例子: 1、删除一个组

[root@test1 ~]# groupdel newgroup
[root@test1 ~]# tail /etc/group
polkitd:x:996:
tss:x:59:
dip:x:40:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
xxh:x:1000:
user1:x:1001:
user2:x:1002:
slocate:x:21:

用户管理

useradd命令

useradd命令: 增加一个用户

用法: useradd...[选项]...[用户名]

常用参数:

-u:指定新建用户的uid
-g:指定新建用户的所属组
-d:指定新建用户的家目录
-s:指定新建用户的shell
-M:创建新用户时不创建家目录{不创建家目录不代表该用户没有家目录、只是所该用户的家目录不存在}

例子: 1、新建一个用户user3并指定其uid为1010

[root@test1 ~]# useradd -u 1010 user3 
[root@test1 ~]# tail -3 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1010:1010::/home/user3:/bin/bash

2、新建一个用户user4指定其uid为1020、所属组为user3、家目录为/home/jia、shell为/sbin/nologin

[root@test1 ~]# useradd -u 1020 -g user3 -d /home/jia/ -s /sbin/nologin user4
[root@test1 ~]# tail -3 /etc/passwd
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1010:1010::/home/user3:/bin/bash
user4:x:1020:1010::/home/jia/:/sbin/nologin
[root@test1 ~]# tail -3 /etc/group
user2:x:1002:
slocate:x:21:
user3:x:1010:

3、新建一个用户user5不创建其家目录

[root@test1 ~]# useradd -M user5 
[root@test1 ~]# ls /home
jia  user1  user2  user3  xxh
[root@test1 ~]# tail -1 /etc/passwd
user5:x:1021:1021::/home/user5:/bin/bash            /*ls home目录虽然没有user5目录、但是不能代表user5用户没有家目录

userdel命令

userdel命令: 删除一个用户

用法: userdel...[选项]...[用户]

常用参数:

-f:删除用户时就算用户处于登录状态也强制删除
-r:删除用户时连同其家目录一起删掉

例子: 1、删除用户user3、但是保留其家目录

[root@test1 ~]# userdel user3
[root@test1 ~]# tail -5 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
xxh:x:1000:1000::/home/xxh:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user5:x:1021:1021::/home/user5:/bin/bash
[root@test1 ~]# ls /home/
jia  user1  user2  user3  xxh

2、删除用户user2、并删除其家目录

[root@test1 ~]# userdel -r user2
[root@test1 ~]# ls /home/
jia  user1  user3  xxh
[root@test1 ~]# tail -5 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
xxh:x:1000:1000::/home/xxh:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user5:x:1021:1021::/home/user5:/bin/bash

usermod命令

usermod命令: 修改用户属性

用法: usermod...[选项]...[用户]

常用参数:

-d:修改用户的家目录
-s:修改用户登录的shell
-g:修改用户的所属组
-G:修改用户的附属组{一个用户可以同时存在于多个组、使用id可以查询、gid为用户的主组、剩下的为附属组}
-L:锁定一个用户的密码
-U:解锁一个用户的密码

例子: 1、修改用户user1的家目录为/home/jia

[root@test1 ~]# cat /etc/passwd|grep "user1"
user1:x:1001:1001::/home/user1:/bin/bash            /*这个是修改前的user1家目录信息
[root@test1 ~]# usermod -d /home/jia user1
[root@test1 ~]# cat /etc/passwd|grep "user1"        
user1:x:1001:1001::/home/jia:/bin/bash              /*这个是修改后的user1家目录信息

2、修改user1的所属组为xxh、附属组为user5

[root@test1 ~]# id  user1
uid=1001(user1) gid=1001(user1) 组=1001(user1)      /*修改前user1的所属组为user1
[root@test1 ~]# usermod -g xxh -G user5 user1   
[root@test1 ~]# id user1
uid=1001(user1) gid=1000(xxh) 组=1000(xxh),1021(user5)  /*修改后user1的所属组有2个

3、修改user1的shell为/sbin/nologin

[root@test1 ~]# usermod -s /sbin/nologin user1
[root@test1 ~]# cat /etc/passwd | grep "user1"
user1:x:1001:1000::/home/jia:/sbin/nologin

4、锁定用户user5


passwd命令

passwd命令: 用于设置用户的认证信息,包括用户密码、密码过期时间等。

用法: passwd...[用户名]{不加用户名默认更改当前用户的密码}

常用参数:

-l:锁定一个用户的密码
-u:解锁一个用户的密码
--stdin:使用交互形式修改用户密码

例子: 1、使用root用户修改user1用户的密码。

[root@test1 ~]# whoami              /*该命令可以查看当前登录的用户
root
[root@test1 ~]# passwd user1 
更改用户 user1 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

2、一般用户使用passwd命令修改自己的密码。

[root@test1 ~]# su - user1 
上一次登录:四 11月  2 08:22:19 CST 2017pts/0 上
[user1@test1 ~]$ passwd     /*passwd命令不加任何参数默认是修改当前用户自己的密码
更改用户 user1 的密码 。
为 user1 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:

3、使用echo命令与--stdin参数实现交互式修改user1密码为123456789。

[root@test1 ~]# echo "123456789" |passwd --stdin user1
更改用户 user1 的密码 。
passwd:所有的身份验证令牌已经成功更新。

4、使用echo -e命令实现交互式修改user1的密码为123456789。

[root@test1 ~]# echo -e "123456789\n123456789"      /*使用echo -e命令可以使用换行符\n
123456789
123456789                                           /*这两行就是测试-e的效果并不是修改密码用到的
[root@test1 ~]# echo -e "123456789\n123456789" | passwd user1 
更改用户 user1 的密码 。
新的 密码:无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。

mkpasswd命令

mkpasswd命令: 用于随机创建一个密码。

用法: mkpasswd...[选项]

命令安装: yum -y install expect

常用参数:

-l:创建密码时指定其长度
-s:指定特殊符号的字符个数

例子: 1、创建一个长度为8位的密码

[root@test1 ~]# mkpasswd -l 8
WIptf-06

2、创建一个长度为15位、特殊字符有2个的密码

[root@test1 ~]# mkpasswd -l 15 -s 2
f(nq#ulVzdW4op6

su命令

su命令: 切换用户或者使用指定用户执行某条命令。

用法: su -...[选项]...[用户]

常用参数:

-:完全切换一个用户{不仅切换用户、连同环境变量一同切换}
-c:以指定用户的身份执行一条命令

例子: 1、使用su命令从root用户切换到user5用户,并修复user5用户环境变量。

[root@test1 ~]# su - user5                      /*使用su - 命令切换到用户user5
上一次登录:四 11月  2 08:22:12 CST 2017pts/0 上
su: 警告:无法更改到 /home/user5 目录: 没有那个文件或目录
-bash-4.2$ su  -     /*由于user5用户没有家目录且家目录没有配置文件、所以无法正常读取环境变量
密码:
上一次登录:五 11月  3 06:17:06 CST 2017从 192.168.1.160pts/0 上
[root@test1 ~]# mkdir /home/user5           /*创建user5用户的家目录
[root@test1 ~]# id user5
uid=1021(user5) gid=1021(user5) 组=1021(user5)      /*查看user5用户的所属组
[root@test1 ~]# chown user5:user5 /home/user5/      /*修改user5目录的所属组
[root@test1 ~]# cp /etc/skel/.ba* /home/user5/      /*复制环境变量文件模板到user5的家目录下
[root@test1 ~]# chown -R user5:user5 /home/user5/   /*修改环境变量文件的所属组与所属主
[root@test1 ~]# ls -la !$
ls -la /home/user5/
总用量 12
drwxr-xr-x  2 user5 user5  62 11月  3 06:58 .
drwxr-xr-x. 7 root  root   67 11月  3 06:57 ..
-rw-r--r--  1 user5 user5  18 11月  3 06:58 .bash_logout
-rw-r--r--  1 user5 user5 193 11月  3 06:58 .bash_profile
-rw-r--r--  1 user5 user5 231 11月  3 06:58 .bashrc
[root@test1 ~]# su - user5 
上一次登录:五 11月  3 06:57:05 CST 2017pts/0 上
[user5@test1 ~]$                                    /*由于环境变量修复好了、正常显示

sudo命令与visudo

visudo: 配置sudo命令授予普通用户权限的命令。

配置详解:

[root@test1 ~]# visudo 
## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
# Host_Alias     FILESERVERS = fs1, fs2                 /*使用Host_Alias可以设置host别名
# Host_Alias     MAILSERVERS = smtp, smtp2

## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem                     /*使用User_Alias可以设置用户别名


## Command Aliases
## These are groups of related commands...

## Networking

## Installation and management of software
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

## Services

## Updating the locate database
# Cmnd_Alias LOCATE = /usr/bin/updatedb

## Storage
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount                                             /*使用Cmnd_Alias可以是指命令别名

## Delegating permissions
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp

## Processes
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

## Drivers
# Cmnd_Alias DRIVERS = /sbin/modprobe

# Defaults specification

#
# Refuse to run if unable to disable echo on the tty.
#
Defaults   !visiblepw

#
# Preserving HOME has security implications since many programs
# use it when searching for configuration files. Note that HOME
# is already set when the the env_reset option is enabled, so
# this option is only effective for configurations where either
# env_reset is disabled or HOME is present in the env_keep list.
#
Defaults    always_set_home

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults   env_keep += "HOME"

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere          /*允许root用户在任何地方运行任何命令
root    ALL=(ALL)       ALL
|       |      |         |
|       |      |         |_ root用户能够执行的命令,ALL代表所有
|       |      |_ root用户能从哪个ip登录,ALL代表所有ip
|       |_ 用户root能切换到哪个用户的身份,ALL代表所有用户
|_ 设定哪一个用户拥有sudo权限
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands     /*设置用户组权限设置
%wheel  ALL=(ALL)       ALL

## Same thing without a password    /*如果最后一个参数带有NOPASSWD则用户使用sudo命令时不需要输入密码
# %wheel        ALL=(ALL)       NOPASSWD: ALL

## Allows members of the users group to mount and unmount the
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

sudo命令: 允许系统管理员让普通用户执行一些或者全部的root命令。

例子: 1、使用普通用户查看root用户的家目录文件信息。

1、使用visudo将配置文件修改为如下内容
root    ALL=(ALL)       ALL
user5   ALL=(ALL)       /bin/ls,/bin/cat
2、切换到用户user5并执行相关命令
[root@test1 ~]# su - user5
上一次登录:五 11月  3 06:59:08 CST 2017pts/0 上
[user5@test1 ~]$ sudo ls -l /root

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for user5: 
总用量 4
-rwxrwxrwx. 3 root root 1428 10月 28 08:24 anaconda-ks.cfg
drwxr-xr-x  2 root root   69 10月 21 07:16 teamlink_linux_3.3.1

2、创建命令别名、使用user5 ls、cat root用户家目录不需要输入密码。

1、使用visudo将配置文件修改为如下内容
Cmnd_Alias TEST = /bin/ls,/bin/cat
root    ALL=(ALL)       ALL
user5   ALL=(ALL)       TEST
2、不需要输入密码即可查看root用户的家目录文件
[root@test1 ~]# su - user5
上一次登录:五 11月  3 07:50:08 CST 2017pts/0 上
[user5@test1 ~]$ sudo ls /root/
anaconda-ks.cfg  teamlink_linux_3.3.1

限制root用户远程连接

作用: 当我们需要把root用户限制远程登录、但是又要使用普通用户能使用sudo命令切换到root用户下来操作时就可以实现限制root用户远程登录、又能使用root用户管理系统。 1、使用root用户visudo修改其配置内容如下

root    ALL=(ALL)       ALL
user5   ALL=(ALL)       NOPASSWD:/usr/bin/su

2、限制root用户远程登录

[root@test1 ~]# vim /etc/ssh/sshd_config   /* 编辑sshd_config文件
PermitRootLogin no                         /* 将#PermitRootLogin yes改为#PermitRootLogin no
[root@test1 ~]# systemctl restart sshd.service  /* 重新启动sshd服务

3、登录普通用户通过sudo命令切换到root用户

[root@test1 ~]# su - user5
上一次登录:五 11月  3 08:07:01 CST 2017pts/0 上
[user5@test1 ~]$ sudo su -
上一次登录:五 11月  3 08:07:07 CST 2017pts/0 上
[root@test1 ~]# whoami 
root

转载于:https://my.oschina.net/u/3626689/blog/1559574

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值