Centos 7.3 用户和组管理

来源:互联网 发布:apache ab url参数 编辑:程序博客网 时间:2024/06/03 16:38

[3] Centos 7.3 用户和组管理

3.1 用户和密码配置文件

  • passwd配置文件详解
/etc/passwd说明root:x:0:0:root:/root:/bin/bash/etc/passwd由―:分割成7个字段,每个字段的具体含义是:(1) 用户名(如第一行中的root就是用户名),代表用户账号的字符串。(2) 第二个字段存放的是该账号的口令。(3) 这个数字代表用户标识号,也叫做uid。(4) 表示组标识号,也叫做gid。(5) 注释说明,该字段没有实际意义。(6) 用户的家目录。(7) 用户的shell。除了/bin/bash外还有/sbin/nologin比较多,它表示不允许该账号登录,建立账号时添加-s选项指定第七段的值。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • shadow配置文件详解
/etc/shadow说明bin:*:15980:0:99999:7: : :(1) 用户名。(2) 用户密码,这个密码已经加密,该文件属性设置为000,但是root账户是可以访问或更改的。(3) 上次更改密码的日期,这个数字是这样计算得来的,距离197011日到上次更改密码的日期,例如上次更改密码的日期为201211日,则这个值就是365*(2012-1970)+(2012-1970)/4+1=15341。因为如果是闰年,则有366天。(4) 要过多少天才可以更改密码,默认是0,即不限制。(5) 密码多少天后到期。默认是99999,可以理解为永远不需要改。(6) 密码到期前的警告期限。(7) 账号失效期限。密码已经到期后多少天失效。(8) 账号的生命周期。跟第三段一样。(9) 作为保留用的,没有什么意义。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.2 用户组管理

/etc/group、/etc/gshadow配置文件

  • 系统自动备份的配置文件,源文件删除后可将备份文件恢复。
[root@centos7-1 ~]# ls /etc/passwdpasswd   passwd-  [root@centos7-1 ~]# ls /etc/groupgroup   group-  [root@centos7-1 ~]# ls /etc/shadowshadow   shadow-  [root@centos7-1 ~]# ls /etc/gshadowgshadow   gshadow- 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • groupadd 创建组
指定gid创建组:[root@centos7-1 ~]# groupadd -g 1005 temence[root@centos7-1 ~]# tail -n1 /etc/grouptemence:x:1005:
  • 1
  • 2
  • 3
  • 4
  • groupdel 删除组
删除空组:[root@centos7-1 ~]# groupdel temence[root@centos7-1 ~]# tail -n1 /etc/groupggg:x:1001:删除非空组:[root@centos7-1 ~]# groupdel ggggroupdel:不能移除用户“ggg”的主组删除非空组时,需要将组里用户删掉才可删除该组
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • groupmems 组成员管理
用于查看扩展组下的所有用户用法:groupmems [选项] [动作]选项:  -g, --group groupname         更改组 groupname,而不是用户的组(只 root)  -R, --root CHROOT_DIR         chroot 到的目录动作:  -a, --add username            将用户 username 添加到组成员中  -d, --delete username         从组的成员中删除用户 username  -h, --help                    显示此帮助信息并推出  -p, --purge                   从组中移除所有成员  -l, --list                    列出组中的所有成员
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3.3 用户管理


  • useradd、adduser 新建用户 

centos7,默认新建的uid和gid都是从1000开始,1000之前为系统保留用户。centos6,默认新建的uid和gid都是从500开始,500之前为系统保留用户。

-u          指定uid或者属主名字-g          指定gid或者属组名字-d          指定用户家目录-s          指定shell-M          不创建家目录-G          添加扩展组,可以一次性添加多个组,使用“,”分开
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
指定uid、gid创建用户:[root@centos7-1 ~]# tail -n2 /etc/passwdgbj:x:1000:1000::/home/gbj:/bin/bashggg:x:1001:1001::/home/ggg:/bin/bash[root@centos7-1 ~]# tail -n2 /etc/groupgbj:x:1000:ggg:x:1001:[root@centos7-1 ~]# useradd -u 1003 -g 1000 temence[root@centos7-1 ~]# tail -n2 /etc/groupgbj:x:1000:ggg:x:1001:[root@centos7-1 ~]# tail -n2 /etc/passwdggg:x:1001:1001::/home/ggg:/bin/bashtemence:x:1003:1000::/home/temence:/bin/bash指定家目录、shell[root@centos7-1 ~]# useradd -d /home/qwer -s /sbin/nologin qwer[root@centos7-1 ~]# tail -n2 /etc/passwdtemence:x:1003:1000::/home/temence:/bin/bashqwer:x:1004:1004::/home/qwer:/sbin/nologin创建用户同时不创建用户家目录[root@centos7-1 ~]# useradd -M ghj[root@centos7-1 ~]# tailtail   tailf  [root@centos7-1 ~]# tail -n2 /etc/passwdqwer:x:1004:1004::/home/qwer:/sbin/nologinghj:x:1005:1005::/home/ghj:/bin/bash[root@centos7-1 ~]# ls /home/gbj  ggg  qwer  temence
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • userdel 删除用户
userdel -r [用户]         删除用户的同时删除用户家目录
  • 1

3.4 usermod更改用户属性

用法:usermod [选项] 用户

-u          指定uid或属主名字-g          指定gid或属组名字-G          添加扩展组,可以一次性添加多个组,使用“,”分开-s          指定shell-d          指定用户家目录,如果创建用户时未创建目录,此时使用该参数并不会新增家目录,只是会在/etc/paswd目录中修改。如果床架哦那个湖时创建了家目录,那么使用该参数也不会修改/home目录中的家目录也只会修改/etc/passwd值
  • 1
  • 2
  • 3
  • 4
  • 5
  • 查看用户属性
[root@centos7-1 ~]# id rootuid=0(root) gid=0(root) 组=0(root) 
  • 1
  • 2

3.5 用户密码管理

[root@centos7-1 ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 610 2014 /usr/bin/passwdpasswd拥有set_uid权限,可以让其他用户也拥有root权限使用该密码
  • 1
  • 2
  • 3
  • 4


  • passwd [用户]更改密码
  • cat /etc/shadow配置文件 

配置文件第二列为用户密码 
如果为 *,则表示该用户密码被锁定 
如果为!,则表示该用户密码为空。

[root@centos7-1 ~]# cat /etc/shadowroot:$6$964uE1k0sQeev/EK$fHR5bvMDuvoQ/CaHprM4r5U48hCtZ8yty8aPSQe.z8NlvrZESJrKcbbTixvetRiJbz4.8Z24t4Fy9UzP1zSds.::0:99999:7:::bin:*:17110:0:99999:7:::daemon:*:17110:0:99999:7:::adm:*:17110:0:99999:7:::lp:*:17110:0:99999:7:::sync:*:17110:0:99999:7:::shutdown:*:17110:0:99999:7:::halt:*:17110:0:99999:7:::mail:*:17110:0:99999:7:::operator:*:17110:0:99999:7:::games:*:17110:0:99999:7:::ftp:*:17110:0:99999:7:::nobody:*:17110:0:99999:7:::systemd-bus-proxy:!!:17315::::::systemd-network:!!:17315::::::dbus:!!:17315::::::polkitd:!!:17315::::::colord:!!:17315::::::abrt:!!:17315::::::libstoragemgmt:!!:17315::::::rpc:!!:17315:0:99999:7:::setroubleshoot:!!:17315::::::rtkit:!!:17315::::::rpcuser:!!:17315::::::nfsnobody:!!:17315::::::usbmuxd:!!:17315::::::tss:!!:17315::::::geoclue:!!:17315::::::ntp:!!:17315::::::chrony:!!:17315::::::mysql:!!:17315::::::sssd:!!:17315::::::pulse:!!:17315::::::gdm:!!:17315::::::postfix:!!:17315::::::sshd:!!:17315::::::tcpdump:!!:17315::::::gbj:!!:17324:0:99999:7:::ggg:!!:17325:0:99999:7:::temence:!!:17328:0:99999:7:::ghj:!!:17328:0:99999:7:::
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 锁定用户
1. passwd -l [用户]锁定用户:[root@centos7-1 ~]# passwd -l temence锁定用户 temence 的密码 。passwd: 操作成功[root@centos7-1 ~]# tail -5 /etc/shadowtcpdump:!!:17315::::::gbj:!!:17324:0:99999:7:::ggg:!!:17325:0:99999:7:::temence:!!$6$4ppsCRXr$eFNutGrc9zF64UrO3cE2uOL2mDOUpjKmzPfZ7kQorNiU2YUeBvzipNDpVR8uv/0qsL8eroCW8yzGtirGU.dj50:17328:0:99999:7:::
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
2. usermod -L [用户]锁定用户:[root@centos7-1 ~]# usermod -L temence[root@centos7-1 ~]# tail -5 /etc/shadowtcpdump:!!:17315::::::gbj:!!:17324:0:99999:7:::ggg:!!:17325:0:99999:7:::temence:!$6$4ppsCRXr$eFNutGrc9zF64UrO3cE2uOL2mDOUpjKmzPfZ7kQorNiU2YUeBvzipNDpVR8uv/0qsL8eroCW8yzGtirGU.dj50:17328:0:99999:7:::
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 解锁用户
1. passwd -u [用户]解锁用户:[root@centos7-1 ~]# passwd -u temence解锁用户 temence 的密码。passwd: 操作成功
  • 1
  • 2
  • 3
  • 4
2. usermod -U [用户]解锁用户:[root@centos7-1 ~]# tail -5 /etc/shadowtcpdump:!!:17315::::::gbj:!!:17324:0:99999:7:::ggg:!!:17325:0:99999:7:::temence:$6$4ppsCRXr$eFNutGrc9zF64UrO3cE2uOL2mDOUpjKmzPfZ7kQorNiU2YUeBvzipNDpVR8uv/0qsL8eroCW8yzGtirGU.dj50:17328:0:99999:7:::
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6


  • 脚本更改密码 

此方法可以用作shell脚本更改用户密码。

1. passwd --stdin更改密码:[root@centos7-1 ~]# echo "12345" |passwd --stdin ggg更改用户 ggg 的密码 。passwd:所有的身份验证令牌已经成功更新。
  • 1
  • 2
  • 3
  • 4
2. echo -e更改密码:\n自动换行[root@centos7-1 ~]# echo -e "12345\n12345" |passwd temence更改用户 temence 的密码 。新的 密码:无效的密码: 密码少于 8 个字符重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
  • 1
  • 2
  • 3
  • 4
  • 5

3.6 mkpasswd命令

用户生成密码的工具 
[root@Temence ~]# yum install -y expect

-l          指定密码长度,默认位9-s          指定特殊符号个数-d          指定数字个数-c          指定最少小写字母个数-C          指定最少大写字母个数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 随机生成一个15位密码
@Ssa^p=/35Xob!d
  • 1

3.7 su命令

su - [用户],切换用户

  • -参数

“-”这个字符的作用是,加上后会初始化当前用户的各种环境变量


  • -c 参数 

在不切换用户的情况下执行某一条命令

[root@centos7-1 ~]# su - -c "touch /home/ggg/2017" ggg[root@centos7-1 ~]# ll /home/ggg/2017 -rw-rw-r-- 1 ggg ggg 0 612 22:35 /home/ggg/2017
  • 1
  • 2
  • 3
  • 4
  • 切换无家目录的用户解决办法:
[root@centos7-1 ~]# useradd -M 2017[root@centos7-1 ~]# su - 2017su: 警告:无法更改到 /home/2017 目录: 没有那个文件或目录-bash-4.2$ 创建2017用户家目录并更改属主、属组:[root@centos7-1 ~]# id 2017uid=1006(2017) gid=1006(2017) 组=1006(2017)[root@centos7-1 ~]# mkdir /home/2017[root@centos7-1 ~]# chown 2017:2017 /home/2017/[root@centos7-1 ~]# su 2017bash-4.2$ 此时还是无法正常切换用户,原因在于用户家目录中缺少配置文件,拷贝一份系统模板文件即可:[root@centos7-1 ~]# cp /etc/skel/.bash* /home/2017/[root@centos7-1 ~]# ls /home/2017/[root@centos7-1 ~]# su - 2017上一次登录:一 612 22:59:04 CST 2017pts/1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

3.8 sudo 命令

sudo 是允许让普通用户临时执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。

-s              以目标用户身份运行 shell,完全等于sudo /bin/bash,约等于sudo su ;-i              以目标用户身份运行一个登录 shell,切换至root同时切换环境变量PATH,约等于sudo su -;-l              列出目前用户可执行与无法执行的指令;-u              指定用户作为新的身份,默认为root;-b              在后台执行命令
  • 1
  • 2
  • 3
  • 4
  • 5
  • visudo命令

使用visudo命令去编辑相关的配置文件/etc/sudoers。

  • 添加授权用户
## Allow root to run any commands anywhereroot    ALL=(ALL)       ALLggg     ALL=(root)       NOPASSWD:/usr/bin/ls,/user/bin/mv,/usr/bin/cp第一部分是用户名,指定哪个用户将拥有sudo的权利第二部分右边的ALL其实是一个用户名,即,test用户可以切换到哪个用户的身份,如果是ALL就表示所有用户。第三部分ALL,用来指定test用户可以使用的命令都有哪些,如果是多个命令,用英文逗号隔开。可以在前面添加NOPASSWD 不使用密码。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 添加授权用户组
%wheel ALL=(ALL) ALL 以组的形式添加。## Allows people in group wheel to run all commands%wheel  ALL=(ALL)       ALL%ggg    ALL=(root)      NOPASSWD: ALL
  • 1
  • 2
  • 3
  • 4
  • 5
  • 使用别名添加授权
User_Alias USER_SU = test, test1, test2Cmnd_Alias SU = /bin/suUSER_SU ALL=(ALL) NOPASSWD: SU
  • 1
  • 2
  • 3
  • 总结:
sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。其实,还有几个类似的用法:sudo /bin/bash   : 这个命令也会切换到root的bash下,但不能完全拥有root的所有环境变量,比如PATH,可以拥有root用户的权限。这个命令和 sudo -s 是等同的。sudo -s : 如上sudo su  : 这个命令,也是登录到了root,但是并没有切换root的环境变量,比如PATH。sudo su - :  这个命令,纯粹的切换到root环境下,可以这样理解,先是切换到了root身份,然后又以root身份执行了 su - ,这个时候跟使用root登录没有什么区别。这个结果貌似跟sudo -i 的效果是一样的,但是也有不同,sudo 只是临时拥有了root的权限,而su则是使用root账号登录了linux系统。所以,我们再来总结一下:sudo su -  约等于  sudo -i sudo -s  完全等于  sudo  /bin/bash  约等于 sudo su sudo 终究被一个"临时权限的帽子"扣住,不能等价于纯粹的登录到系统里。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • sudo 扩展 
    sudo与su比较 
    http://www.apelearn.com/bbs/thread-7467-1-1.html 
    sudo配置文件样例 www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers 
    sudo -i 也可以登录到root吗? http://www.apelearn.com/bbs/thread-6899-1-1.html

3.9 限制Root远程登陆

vim /etc/ssh/sshd_config修改ssh配置文件,禁用root远程登陆

  • 更改ssh配置文件 
    修改配置文件/etc/sshd/sshd_config,在文件中查找PermitRootLogin yes这句话, 修改为PermitRootLogin no

  • 重启sshd服务

[root@centos7-1 ~]# systemctl restart sshd.service
原创粉丝点击