用户是必须的吗?python
用户:标识计算机上的资源的归属 密码:对用户的身份作验证
登陆的时候计算机如何作身份验证?mysql
在计算机内部预先有一个数据库,在数据库中保存用户名和对应的密码,用户登陆时候经过比对数据库来检查用户和密码是否正确
什么是数据库?
用来保存数据的文件,数据库管理软件(oracle mysql sqlserver db2)linux
保存帐号和密码的数据库文件算法
/etc/passwd <<<< 保存系统中的所有的用户名 /etc/shadow <<<< 保存各个用户的密码 /etc/group <<<< 保存系统中的所有用户组名 /etc/gpasswd <<<< 保存各个用户组的密码
windows下新建用户sql
计算机-管理-本地用户和组-用户-新建 (用户名 密码) 计算机-管理-本地用户和组-组-新建(用户组)添加用户 windows下有用户和组,linux中一样有用户和,linux中一个用户也能够同属多个组,100个用户受权的话须要受权100次,直接把用户加到组中,直接受权组
用户和用户组shell
用户:登陆系统的用户名 用户组:多个用户的合集
用户组的做用数据库
方便为多个用户批量受权
用户身份标识vim
计算机为每个用户设置一个惟一的数字,当计算机识别用户的时候,经过 该数字来识别的,数字就是UID(User IDentifier)
用户组身份标识windows
GID
注意:为用户赋权的时候,实际上是针对uid赋权的
例子:zs--uid=601
赋权:zs能够访问文件a.txt
本质:让uid为601的用户能够访问a.txt安全
/etc/passwd文件详解
cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin 文件的做用 这个文件中保存了系统中的所有用户,每行是一个用户 每一个用户的信息包括7部分,以下 第一段:用户名 第二段:用户密码占位符,为了安全将密码放在另一个文件中 (/etc/shadow) 第三段:用户的UID 第四段: 用户所在组的GID(该组是用户的基本组) 第五段:用户的描述信息(能够随便写) 第六段:用户的家目录 第七段:用户的shell类型 常见的shell类型 1:/bin/bash <<<< 默认是该shell的时候,能够登陆系统 2:/sbin/nologin <<<改shell的用户是没法登陆系统的 例子:统计有多少用户 [root@localhost ~]# cat /etc/passwd | wc -l 例子:统计当前系统中有多少用户能够登陆系统 [root@localhost ~]# grep "/bin/bash$" /etc/passwd root:x:0:0:root:/root:/bin/bash zhangsan:x:500:500::/home/zhangsan:/bin/bash lisi:x:502:502::/home/lisi:/bin/bash zs:x:503:503::/home/zs:/bin/bash [root@localhost ~]# grep "/bin/bash$" /etc/passwd |wc -l 4
用户的分类
管理员 UID 0 特色:默认只有一个,就是root root不受任何权限的约束 系统用户 UID 1-499 特色:在安装完成linux以后或者安装了某个程序执行自动生成 的用户,这类用户是默认状况不能登陆系统的,这类用户存在的 目的是为了运行特定的服务(程序、进程) 默认系统用户也没有家目录 普通用户 UID 500+ 特色:须要运行命令 useradd来建立 普通用户的权限很是小,一般仅仅能在本身的家目录下进行操做 该类用户的家目录/home下和用户同名的目录
用户组的分类
用户的基本组(用户的主组) 在/etc/passwd中第四个字段(GID)所指向的组就是用户的基本组 用户的附件组 注意:一个用户能够属于多个组。同一时间,只能有一个是主组,其余的就是附加组,除了主组以外的其余组就是该用户的附加组 补充:在用useradd建立普通用户的时候,默认状况下,会建立一个组,组名和用户名 相同,该组默认就是该用户的基本组(主组) useradd bajie tail /etc/passwd cat /etc/group 补充:linux的文件属性 属主:文件的属主(谁建立的文件,文件的属主就是谁) 属组:设置文件对于一个特定用户组所具备的权限,这个组就是该文件的属组 注意:属组、属主默认都只有一个 若是一个用户既不是属主,也不是属组的组内用户,那么该用户就是"其余用户"
三类用户
属主 属组的组内用户 其余用户
建立用户
useradd命令 做用:新建用户 格式:useradd [options]用户名 选项: -c "string" 设置新用户的描述信息 -d "/path/to/dir" 设置用户的家目录 -e 月月/日日/年年:指定帐号的过时日期 -g GID:指定用户的主组ID号或名称 -G GID,GID,GID:指定用户的附加组的ID号或名称 -m 在建立用户的时候,若是用户家目录不存在,则自动建立(该选项 自动使用) -M 不自动建立用户家目录 -r 建立系统用户 用此选项建立的用户有如下特色 一、默认用户无家目录 二、默认用户uid<500 三、默认用户的shell是bash 四、用户能够登陆系统 -s shType:指定用户的shell类型 经常使用的shell /bin/bash /sbin/nologin -u UID 指定用户的uid -u UID -o 指定让新用户使用一个现有的ID [root@localhost ~]# useradd -c "i am tom" tom [root@localhost ~]# tail /etc/passwd tom:x:505:505:i am tom:/home/tom:/bin/bash useradd zhangsan 建立用户zhangsan tail /etc/passwd 查看用户是否存在 id 用户名 能够查看用户是否存在 例子:新建用户jerry,要求主组为gp01,附加组为gp02 和gp03 [root@localhost ~]# useradd -g gp01 -G gp02,gp03 jerry [root@localhost ~]# tail /etc/passwd [root@localhost ~]# tail /etc/group 例子:建立一个用户kity,要求将其建立为系统用户(无家目录,uid<500,不能登陆系统) useradd -r -s /sbin/nologin kity 例子:新建用户2222并指定UID为600 useradd -u 600 2222 tail /etc/passwd lll:x:507:509::/home/lll:/bin/bash 2222:x:600:600::/home/2222:/bin/bash 例子:新建用户dog,要求其uid为660,主组为gp02,附加组为gp01,gp03,家目录在/tmp/dog,指定shell类型为bin/bash useradd -u 660 -g gp02 -G gp01,gp03 -d /tmp/dog -s /bin/bash dog groupadd命令 做用:新建用户组 格式:groupadd [选项]组名 选项:-g:指定用户组的组id [root@localhost ~]# groupadd gp01 [root@localhost ~]# groupadd gp02 [root@localhost ~]# groupadd gp03 [root@localhost ~]# tail /etc/group gp01:x:506: gp02:x:507: gp03:x:508:
id命令
做用:显示指定用户的id信息 格式:id[选项]用户名 选项: -u:显示用户的UID -g:显示用户的主组的ID -G:显示用户的所有租的ID列表 id -g hhhhh useradd [root@localhost ~]# useradd -u 670 -g gp01 -Ggp02,gp03 hhhhh [root@localhost ~]# id hhhhh uid=670(hhhhh) gid=506(gp01) groups=506(gp01),507(gp02),508(gp03) [root@localhost ~]# id -G hhhhh 506 507 508 [root@localhost ~]# id -g hhhhh 506 [root@localhost ~]# id -u hhhhh 670
passwd命令
做用:修改用户的密码(给用户设置密码) 格式:passwd[选项]用户名 注意: 1:passwd 用户 修改指定用户的密码 2:passwd 修改当前用户的密码 3:默认状况只有root用户,才能修改其余用户的密码,普通用户只能修改本身的密码 选项: -l:锁定用户(只有root才能进行锁定操做) -u:解锁用户 --stdin:从表示输出来读取内容,为用户设置密码(shell脚本中使用)
影子文件 /etc/shadow
做用:保存密码 root:$6$HhL6V5BM$f29xu.FUgGnQqNtmqLGAyOy/fLMlF/JepDTfgoaqvC4.b7wiVmMc7i3HRDMVNdYQACOK9d3.wsgbZi1hPAEoj/:17997:0:99999:7::: 第一个字段:login name :系统中存在的用户名 第二个字段:encrypted password :这里存放的是加密后的密码(单向加密) 1:若是密码段中出现!或*,那么就不能用此密码登陆系统 2:若是密码段为空,则表示空密码,可是系统每每禁止使用空密码登陆 3:若是密码开头是*,表示密码被锁定了 第三个字段:date of last password change:密码上次修改的日期,这里所写的是举例 1970-1-1所通过的天数。 (1)若是该字段为0,会要求用户在下次登陆的时候修改密码 (2)该文件不能为空 第四个字段:minimum password age ,两次修改密码的最短期 一、为空或者为0,表示没有最短期限制 第五个字段:maximum password age:密码的最长有效期 一、若是字段为空或者99999,表示不限制最长有效期 二、若是最长时间小于最短期,则禁止该用户修改密码 第六个字段:password warning period 指定在密码到期前N天发送报警信息 一、若是为0,表示不会自动发送报警信息 二、在此期间内,用户能够正常登录系统 第七个字段:password inactivity period:密码的非活动时间 一、在此期间登录系统的时候,必须先修改密码才能登录系统。 二、若是在此阶段仍然没有修改密码,那么就真的登录不上了(找管理员处理) 第八个字段:account expiration date:用户的过时日期 一、表示方式也是用距离1970.1.1所通过的天数 二、该字段为空,表示该字段永不过时 三、0表示用户被禁用 第九个字段:reserved field :还没有使用 注意: 密码过时:修改密码能够继续使用 帐户过时:帐户不再能登陆系统 /etc/passwd <<<用户基本信息 ,useradd新建用户,用户的信息保存在这里 /etc/group <<<用户组信息,groupadd新建用户组,用户组的信息保存在这里。 /etc/shadow <<<用户的密码文件,passwd的时候,其实就是修改这个文件中的内容
userdel命令
做用:删除用户 格式: userdel [options] 用户名 选项: -r :在删除用户的同时,删除用户的家目录
chsh命令
做用:修改用户的shell类型 格式:chsh[-s type]username (本质上就是修改/etc/passwd中的内容)
chfn命令
做用:修改用户的注释信息
usermod命令
做用:修改用户的基本信息(/etc/passwd) 格式:usermod [options]username 选项: -g GID:修改基本组 -G GID: 修改附加组 -u UID:修改uid值 -C string:修改用户的描述 -d /path/dir:修改用户的家目录 -s SHELL:修改用户的shell类型 -l newName:修改用户的名称 -L 锁定用户 -U 解锁用户
su命令
做用:切换用户 格式:[options]用户 选项 -[l]:切换用户,而且继承用户的环境变量 -c 命令:在不切换用户状况下,以指定用户的身份来执行命令
注意:
su切换用户后返回,须要执行命令exit
例子:以root身份执行mkdir命令
$ su - -c "mkdir /abc1" root
生产环境的注意事项:
在生产环境中,若是员工离职,一般是禁用用户,在短期内是不会删除用户的,更不会删除用户的家目录以及家目录中的文件。
禁用用户
修改shell类型/sbin/nologin 在密码前加上! 设置帐户的过时时间为0(密码文件的第八段)
权限
r:读 能够执行cat、head、more、less等命令读取文件中的内容,也能够用vi打开并读取文件中的内容 w:写 能够用vi或者重定向等操做文件中写入内容或者修改其中的内容 x:执行 能够执行文件(把程序转换成进程)
目录的权限
r:能够执行ls命令来查看目录下的文件有哪些 w:能够在目录下执行文件的建立和删除等操做 x:能够执行cd命令
用户的角色有三类
属主用户(u)user 属组用户(g)group 其余用户(o)other 所有用户(a)all
文件的权限位一共有10位
第一位:表示文件的类型
-:通常文件 d:目录 l:连接文件 s:套接字文件 第二到第四位:表示文件的属主所具备的权限 第五到第七位:表示文件的属组的组内用户所具备的权限 第八到第十位,表示系统中的其余用户所具备的权限 注意: 一、每一类用户的权限的顺序都是:读权限、写权限、执行权限 二、若是用户有对应的权限,就出现字符,若是没有对应的权限就用-表示。 例子:[root@localhost tmp]# ls -l 1.txt -rw-r--r-- 1 root bin 149 Apr 16 18:22 1.txt 文件的属主权限:可读可写 文件的属组用户权限:只读权限 其余用户的权限:只读权限
chown命令
做用:修改文件的属主 格式:chown userName [-R]fileNAme 选项: -R 在修改目录的时候,将目录和目录中的文件都一并修改 例子:将文件a.txt的属主改成zhangsan chown zhangsan a.txt 例子:将目录yunwei和yunwei中的文件的属主都修改成zhangsan chown -R zhangsan yunwei
chgrp命令
做用:修改文件的属组 例子:将文件a.txt的属组改成tom chgrp tom a.txt 例子:将文件a.txt的属主改成zhangsan ,属组改成tom chown zhangsan.tom a.txt 或者 chown zhangsan:tom a.txt 注意: 修改属主或者属组的时候,那个用户名和组名是存在的,不然报错。
chmod命令
做用:修改文件的权限 格式:chmod 权限 -R fileName 选项:-R 方式: +:增价某项权限 -:去除权限 =:将权限修改成指定的类型(和原来的权限无关) 例子:修改文件a.txt的权限 去除属主的写权限 将属组的权限设置为读和写 给其余用户添加写权限 chmod u-w,g=rw,0+w a.txt 例子:给所有用户都添加上执行权限 chmod ugo+x a.txt 或者 chmod a+x a.txt 或者 chmod +x a.txt 例子:去除其余用户的所有权限 chmod o= a.txt chmod o-rwx a.txt
基于数字表示文件的权限
r:4 w:2 x:1 --- 000 0 --x 001 1 -w- 010 2 -rx 011 3 r-- 100 4 r-w 101 5 rw- 110 6 rwx 111 7 例子:将文件a.txt的属主改成可读可写,属组改成可读,其余用户没有任何权限 #chmod 640 a.txt
建立用户的原理
和用户相关的文件 一、/etc/passwd 二、/etc/shadow 三、/etc/group 四、/etc/skel <<<<用户家目录的模版 五、/etc/login.defs <<<<控制新建用户的默认属性 六、/etc/defaults/useradd <<<<控制新建用户的默认属性 七、/var/spool/mail/用户名
新用户的家目录若是生成
一、将/etc/skel目录复制home下,更名为和用户名相同 二、将该目录的属主和属组改成用户名 三、将该目录的权限设改成700 假设新建一个用户laosun #cp r /etc/skel /home/laosun #chown -R laosun.laosun /home/laosun #chmod -R 700 /home/laosun MAIL_DIR /var/spool/mail 指定新建用户的邮件文件的默认位置 (默认邮件文件的名称和用户名相同) PASS_MAX_DAYS 99999 新用户的密码最长有效期 PASS_MIN_DAYS 0 修改密码最短间隔时间 PASS_MIN_LEN 5 普通用户密码的最短长度 PASS_WARN_AGE 7 密码到期前警告时间 UID_MIN 500 新建普通用户的默认UID最小值 UID_MAX 60000 新建普通用户的默认UID最大值 GID_MIN 500 新建普通用户的默认GID最小值 GID_MAX 60000 新建普通用户的默认GID最大值 CREATE_HOME yes 是否默认建立用户家目录 UMASK 077 反向掩码值(用来控制新建文件和目录的默认权限值) USERGROUPS_ENAB yes 当用户组中没有用户了,是否删除用户组 ENCRYPT_METHOD SHA512 指定加密算法 SHA512 MD5
加密后的密码由三部分构成
$6$qSBbNTqA$ESH1UDekytAKPw4olQNulWQv/uZxOJETUQOcB $加密算法$随机字符串$加密后的数据 说明: 加密算法: 一、表示MD5加密 六、SHA512加密 vim /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home <<<<<默认普通用户的家目录的位置 INACTIVE=-1 <<<<<设置新用户帐号是否过时。-1表示不启用 EXPIRE= <<<<<设置新建帐户的过时日期,空白表示不启用 SHELL=/bin/bash <<<<<设置新建用户的默认shell类型 SKEL=/etc/skel <<<<<指定新建用户的家目录模版目录 CREATE_MAIL_SPOOL=yes <<<<<设置是否给新建的用户建立用户邮件
新建用户
useradd passwd
完成的操做
一、/etc/passwd 添加一行 二、/etc/shadow 添加一行 三、/etc/group 添加一行 四、建立用户家目录 五、建立用户邮件文件
例子:建立用户timi,要求uid 777,主组hadoop (800)
附加组 python (850) hbase(860) 家目录 /home/timi 描述 i am timi 密码设置为123 最少使用3天才能修改,最长使用30天,到期 前5天发送报警,非活动时间2天。 实现步骤: 一、建立用户基本信息(/etc/passwd) vim /etc/passwd timi:x:777:800:i am timi:/home/timi:/bin/bash 二、检查用户 id timi 三、使用openssl来生成密码 格式:openssl -1 --salt "string" 说明: -1 表示md5加密算法 --salt表示在加密的时候掺入杂志(提高安全性) [root@localhost ~]# openssl passwd -1 -salt "abc123" Password: $1$abc123$uE7.dLhrmG/qKHqAIlwPi. 四、修改密码文件 timi:$1$abc123$uE7.dLhrmG/qKHqAIlwPi.:18005:3:30:5:2:: 五、建立用户组 vim /etc/group hadoop:x:800: python:x:850:timi habse:x:860:timi 六、建立用户家目录 # cp -r /etc/skel /home/timi # cd /home/ # chown -R timi.hadoop /home/timi/ # chmod -R --reference=*** timi ***已经存在于/home中 (把timi的权限参照改成***的权限) 七、建立用户邮件 cd /var/spool/mail/ ls touch timi chmod 660 timi chown timi.mail timi 八、测试用户是否能够正常使用 补充: #useradd guizi useradd 警告:此主目录已经存在。 不从sekl目录里向其中复制任何文件。 <<<<<1 正在建立信箱文件,文件已存在 <<<<<2 新建用户出现这个错误信息,就表示 一、表示用户的家目录已经存在 二、表示用户的邮件文件已经存在