用户管理

--


用户管理


以后学习到的任何服务都需要一个用户身份来跑daemon(守护进程)

操作系统的分类:
单用户单任务操作系统: DOS
单用户多任务操作系统: windows 95 windows 98 windows 2000
多用户多任务操作系统: windows 2003 server windows 2008 server
linux unix

基于多用户的基础上,引出的用户的分类:
管理员 root uid=0 (uid为0的就是管理员,不能说用户名叫root就是管理员)
系统帐号 uid 1-499 65534
普通用户帐号 uid 500到2^32-1

# echo $[2**32-1]
4294967295

id 命令 查看当前使用用户的用户信息和组信息

# id
uid=0(root) gid=0(root) groups=0(root))

# id bin
uid=1(bin) gid=1(bin) groups=1(bin),2(daemon),3(sys)

用户管理相关的文件

/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow


--vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
第一列: 用户名
第二列:密码 老版本这里放的就是密码,为了安全性考虑,密码放到了/etc/shadow的第二列
x代表/etc/shadow的第二列生效,去掉x就表示此用户登录的时候没有密码
第三列:uid 用户识别ID值,系统是通过这个值来确认是哪个用户
第四列:gid 组识别ID值
第五列:描述项 comment description
第六列:家目录
第七个:bash 当前用户使用的bash

/bin/bash 表示此用户使用bash,用户可以登录系统,可以收邮件,可以登录FTP
/sbin/nologin 表示用户不能登录系统,可以收邮件,可以登录FTP
/bin/false 表示用户不能登录系统,可以收邮件,不能登录FTP


--vim /etc/shadow
root:$1$.1RfCu/n$ModWntxLJRC6SpgAXSDO81:14694:0:99999:7:::
与/etc/passwd相对应 (但这里有九列)
第一列: 用户名
第二列:密码 (这里以*号开头或!开头默认是不能登陆的)
第三列:上一次修改密码的时间 linux以1970年1月1日到现在的天数来算的
第四列:修改密码后几天内不允许再修改 如果这里为5,那改过密码后5天内不能再修改 0代表不限制(只对普通用户有效)
第五列:多少天内必须要求你改 99999代表不限制
第六列:过期前几天给你一个告警信息
第七列:密码过期后还给的一个宽限天数
第8列: 这里可以写一个过期天数 这里也是以1970年1月1日到现在的天数来计算的,多用于收费系统
第九列: 保留,留着以后功能扩展

# date
# date +%F
2017-07-22
# date +%T
10:23:51
# date +'%F %T'
2017-07-22 10:24:02

# echo $[`date +%s`/86400] --计算今天离1970-01-01有多少天;``为执行符号,里面必须是一个可执行的命令;$[]是运算符;date +%s是得到离1970-01-01有多少秒

例子:
我的/etc/shadow下的bin用户的行为以下显示,它的第三列为15937,它应该为redhat工程师在做rhel6.5此文件时的一个时间,请问如何计算出这个时间为哪一天?
bin:*:15937:0:99999:7:::

# date -d "@$[15937*86400]" +'%F'
2013-08-20


用户相关的命令
useradd
usermod
userdel
passwd

useradd 增加一个普通用户
-c comment
-u uid
-g gid
-e 过期时间
.......... 找man

# useradd -u 4294967295 user2 --不成功,报错
# useradd -u 4294967294 user2 --成功,这个数就是linux目前版本支持的最大uid数
# id user2
uid=4294967294(user2) gid=502(user2) groups=502(user2)

usermod 修改一个用户信息
参数基本与useradd相同

# usermod -u 502 user2
# id user2
uid=502(user2) gid=502(user2) groups=502(user2)


userdel 删除一个用户
-r 参数 连同家目录与邮件目录全删除

# userdel -r user2

passwd 修改密码

# passwd user1
Changing password for user user1.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

几个小实验:
1,去掉/etc/passwd里root用户第二列的x,确认登录系统不需要密码,加回x,密码不变


2,普通用户只能自己改自己的密码,还需要原密码才能改,改的密码还要一定的密码复杂度(最少8位,字母,数字,符号最好都有就没问题;这是默认的密码策略,学习了pam后可以使用pam来自定义密码策略)

# useradd user1
# echo 123 | passwd --stdin user1
# su - user1
$ passwd

3,用一个普通用户来测试/etc/shadow里的第四列
步骤一:第四列为0,这个普通用户随时可以修改自己的密码
步骤二:把0改为2,这个普通用户改密码会报You must wait longer to change your password的错误
步骤三:可以使用root用户date -s "20170725"这样的命令把当前时间改成3天后,再去测试,发现可以改了,验证成功;
步骤四:时间同步回来:使用root用户ntpdate 0.rhel.pool.ntp.org(这条命令是同步一个公网的时间服务器,需要能访问公网才行)


4,验证/etc/shadow里的第8列
步骤一:以测试user1用户为列,把它在shadow里的第8列改成16368(这相当于今天来说是昨天就过期了)
步骤二:先用su - test切换另一个普通用户,再用这个普通用户来su - user1切换user1,输入正确密码,但报下面的错误
$ su - user1
Password:
Your account has expired; please contact your system administrator
su: incorrect password


============================================================================

组管理

vim /etc/group
bin:x:1:root,bin,daemon

第一列:组名
第二列:与/etc/passwd第二列一样
第三列:gid
第四列:哪些用户属于这个组

vim /etc/gshadow
bin:::root,bin,daemon

组管理的相关命令:

groupadd
groupdel
groupmod
gpasswd


groupadd 增加一个组

groupdel 删除一个组

groupmod 修改组信息

gpasswd 修改组登陆密码


# groupadd group1
# groupadd group2
# useradd -g group1 user3
# useradd -G group1 user4
# useradd -G group1,group2 user5
# id user3
uid=503(user3) gid=503(group1) groups=503(group1)
# id user4
uid=504(user4) gid=504(user4) groups=504(user4),503(group1)
# id user5
uid=505(user5) gid=506(user5) groups=506(user5),503(group1),505(group2)


-------------------------------------------------------

--关于有效组和初始组的讨论

# id user5
uid=505(user5) gid=506(user5) groups=506(user5),503(group1),505(group2)


gid=那个组就是你的初始组
# su - user5
[user5@li ~]$ groups --user3用户用此命令查看 靠前的是有效组
user5 group1 group2


--那么此用户现在创建目录或者文件的属组为 有效组user5

[user5@li ~]$ touch 1
[user5@li ~]$ ll
total 0
-rw-rw-r--. 1 user5 user5 0 Jul 16 16:08 1

[user5@li ~]$ newgrp group1 --这个操作其实就是登录group1组,但是因为user5也属于group1组,所以不需要密码
[user5@li ~]$ groups --现在发现group1组靠前了
group1 user5 group2

[user5@li ~]$ touch 2
[user5@li ~]$ ll --这次创建的文件,发现属组变成了group1,就也就是说user5的有效组现在是group1;但你用另一个终端root用户id user5去查看,它的gid还是user5,并没有变成group1
total 0
-rw-rw-r--. 1 user5 user5 0 Jul 16 16:08 1
-rw-r--r--. 1 user5 group1 0 Jul 16 16:10 2


[root@li ~]# groupadd group3
[root@li ~]# gpasswd group3 --另一个终端使用root用户新建一个组,给一个组密码
Changing the password for group group3
New Password:
Re-enter new password:


[user5@li ~]$ groups
group1 user5 group2
[user5@li ~]$ newgrp group3 --你登录一个你没有加入的组,那么就需要组密码了
Password:
[user5@li ~]$ groups
group3 user5 group1 group2 --登录成功,现在user5有效组为group3


[user5@li ~]$ touch 3
[user5@li ~]$ ll --这次创建的文件,发现属组变成了group3
total 0
-rw-rw-r--. 1 user5 user5 0 Jul 16 16:08 1
-rw-r--r--. 1 user5 group1 0 Jul 16 16:10 2
-rw-r--r--. 1 user5 group3 0 Jul 16 16:13 3

----------------------------------------------------------

建立a,b,c三个用户
要求,
1,a只属于b,c组,并且默认创建的文件的属组为c
2, b属于a,b组,并且默认创建的文件的属组为b
3,c属于a,b,c组,并且默认创建的文件的属组为a

方法一:
useradd a
useradd b
useradd c

usermod -g c -G b a
usermod -G a b
usermod -g a -G b,c c

方法二:
groupadd a
useradd -G a b
useradd -G a,b c
useradd -g c -G b a
usermod -g a -G b,c c


==================================================================================


su - user5 完全切换
su user5 不完全切换

exit 退出切换


=================================================================================

关闭selinux
# vim /etc/selinux/config

SELINUX=disabled --把enforcing改为disabled

保存后reboot重启你的系统才能生效

=================================================================================


通过nfs拷贝远程的vmware虚拟机软件(linux版)


# showmount -e 172.16.19.253 --查看此机器上的nfs共享了什么目录
Export list for 172.16.19.253:
/yum *
/share/soft *


# mount 172.16.19.253:/share/soft /mnt --把253这台机器上的/share/soft目录挂载(映射)到本机/mnt目录


# mkdir /soft --可以在本地自建一个/soft目录,用于以后存放各种软件

# cp -rf /mnt/vmware/ /soft/ --把253这台机器上的/share/soft/vmware目录全部拷贝到本地的/soft目录

# ll /soft/vmware/ --用ls确认已经拷贝到了本地,并确认大小
-rwxr-xr-x 1 root root 99 Jul 22 16:22 linux_version_sn
-rwxr-xr-x 1 root root 422627638 Jul 22 16:23 VMware-Workstation-Full-10.0.1-1379776.x86_64.bundle


# umount /mnt --断开挂载(映射)


==========================================================================

安装方法


# cd /soft/vmware/

# ./VMware-Workstation-Full-8.0.2-591240.x86_64.bundle --用此命令执行安装

安装完后,启动它

# vmware &

创建虚拟机过程见图(截图在笔记目录的/png/目录中)

原文地址:https://www.cnblogs.com/yczlove/p/7326719.html