/etc/passwd #这是用户的配置文件,一行代表一个用户,每一行用":"分隔为7段,内容如下:
第一段:用户名
第二段:表示用户的密码,这里为什么是x呢?早期的Unix系统口令确实存放在这里,但基于安全因素,后来存放在/etc/shadow中
第三段:表示uid,
第四段:表示gid
第五段:很多都是空的,用户的注释信息
第六段:用户的家目录
第七段:用户的shell,一个用户能登陆,那么需要交互的信息 有一些是/sbin/nologin 不能登陆。
2.etc/shadow #这是用户存放密码的文件,是和用户配置文件对应的,每一行用":"分隔为9段如图下:
第一段:用户名
第二段:密码,密码都是经过加密的,两个!!表示未设置密码
第三段:最近更改密码的时间,是一个天数,17110,从1970年1月1日开始到你更改密码经过多少天
第四段:要过多少天才可以更改密码,0是没有限制
第五段:密码多少天后到期,必须要更改密码
第六段:密码到期前多少天提醒
第七段:账号的失效期限,如果密码到了失效期,那么在多少天内就被锁定
第八段:账号的生命周期,从1970年1月1日开始有多少天,账号在这个日期之前可以使用
第九段:没有实际意义。
3./etc/group #存放用户组的配置文件
每个配置文件系统都会进行备份,就是“-”结束的文件,如果不小心删除,可以使用这个文件进行恢复,备份几乎是同步的如果不同步也相差不远
ls /etc/shadowshadow shadow-
ls /etc/group
group group-
ls /etc/passed
passed passed-
groupadd 添加用户组
groupadd houmu
houmu:x:1003:
tail -n1 /etc/group
groupadd-g 添加用户组同时指定ID
groupadd -g 1009 houmu2
tail -n4 /etc/group #就可以看到houmu2的ID是1009了
user1:x:1002:
slocate:x:21:
houmu:x:1003:
houmu2:x:1009:
groupdel 可以添加当然也可以删除 ,可以看见houmu已经没了
groupdel houmu
tail -n4 /etc/group
vrnyod:x:1001:
user1:x:1002:
slocate:x:21:
houmu2:x:1009:
但是如组下有有任何一个成员在那么就无法删除,和目录同理,非空的目录你是删不了的要删完目录下才能继续删除
groupdel user1
groupdel:不能移除用户“user1”的主组 #用户组user1里面有用户user1,不能删除
用户组
useradd 添加用户,自己添加的用户UID都是从1000开始往后排
useradd houmu3
tail -n4 /etc/group
user1:x:1002:
slocate:x:21:
houmu2:x:1009:
houmu3:x:1003:
当然也可以增加用户的同时指定UID或GID: useradd -u -g
sudo useradd -u 1008 -g houmu3 houmu4 #houmu4的uid指定1008,属于houmu3这个组
tail -n4 /etc/passwd
vrnyod:x:1001:1001::/home/vrnyod:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
houmu3:x:1003:1003::/home/houmu3:/bin/bash
houmu4:x:1008:1003::/home/houmu4:/bin/bash #可以看到houmu4uid是1008,它属于houmu3为组,所以gid也是1003
useradd -d -s -d指定用户的家目录,-s指定用户登陆的bash
1.useradd -u 1006 -g houmu2 -d /home/lai1 -s /sbin/nologin lai2
#添加一个用户sdd ,指定uid1006,gidhoumu2,家目录/home/lai1/,bash为nologin
2.tail -n4 /etc/passwd
user1:x:1002:1002::/home/user1:/bin/bash
houmu3:x:1003:1003::/home/houmu3:/bin/bash
houmu4:x:1008:1003::/home/houmu4:/bin/bash
lai2:x:1006:1009::/home/lai1:/sbin/nologin
3.ls /home/
centos houmu3 houmu4 lai1 user1 vrnyod #可以看到home目录下有lai1这个目录
useradd -M 创建用户,但是不创建家目录
1.useradd -M xin
2.tail -n3 /etc/passwd
houmu4:x:1008:1003::/home/houmu4:/bin/bash
lai2:x:1006:1009::/home/lai1:/sbin/nologin
xin:x:1009:1010::/home/xin:/bin/bash #它在家目录下
3.ls /home/
centos houmu3 houmu4 lai1 user1 vrnyod #可是ls却查找不到xin 因为-M,home下没有xin的家目录 ,实际上 xin是有家目录的,但是没有创建,并不是说没有。
userdel 删除用户
1.userdel lai2 #删除一个用户 用户名
2.ls /home/
centos houmu3 houmu4 lai1 user1 vrnyod #虽然删除了但是它是没有完全删除会留下目录,它觉得假如里面有用户的资料不小心删掉就不好了,就留着让管理员看如果没东西让管理员手动的删以保不会删错。
不过也有个办法可以连家目录一起删除就是userdel -r 加了-r就会家目录一起删除。
usermod -G 指定扩展组,一个用户gid只有一个,但是它可以属于多个组,被称为扩展组
1. id user1 #我们可以用id着命令查看uid,gid,组
uid=1002(user1) gid=1002(user1) 组=1002(user1) #可以看到user1只有一个组
2. usermod -G houmu3 user1 #把houmu3添加到user1组
3. id user1
uid=1002(user1) gid=1002(user1) 组=1002(user1),1003(houmu3) #可见user1多了一个扩展组1003
4. usermod -G houmu3,houmu4,user1 #也可以添加多个扩展组组
id user1
uid=1000( user1) gid=1000(user1) 组=1000(user1),1002(user1),1003(houmu3)1008 #可见有3个扩展组
usermod 更改用户属性命令
usermod -u 更改uid
usermod -g 更改gid
usermod -d 指定家目录
usermod -s 指定shell
usermod -G 指定宽展组
用户密码管理
passwd user1 #更改用户密码
更改用户 user1 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
tail -n5 /etc/shadow
sshd:!!:17661::::::
centos:$6$Hq2p11Rr$oUpB6pB1kAviXXeBGSc9uIky7BVY8tru1ztUIl95towldKjtQdTzIInl29Q4Y5kN/OcaDXcVOWpaavdaKdD.4/:17662:0:99999:7:::
vrnyod:!!:17662:0:99999:7:::
user1:$6$nxRBv.Vt$S/1P4qrFjyeXULkmMcYX2zLqbf10g3GAbzxs89c4598fiuFnJzE8oDp/fLpniXa0w9u3j8a.0tjfddjJYtLNL1:17753:0:99999:7::: 可以看到user1用户的密码已经更新,其中!!表示密码为空,*表示不能登陆
houmu4:!!:17753:0:99999:7:::
passwd -l 锁定用户的密码
passwd -l user1
锁定用户 user1 的密码 。
cpasswd: 操作成功
再次查看可见user1的密码段前面有2个!!,表示被锁定
tail -n5 /etc/shadow
sshd:!!:17661::::::
centos:$6$Hq2p11Rr$oUpB6pB1kAviXXeBGSc9uIky7BVY8tru1ztUIl95towldKjtQdTzIInl29Q4Y5kN/OcaDXcVOWpaavdaKdD.4/:17662:0:99999:7:::
vrnyod:!!:17662:0:99999:7:::
user1:!!$6$nxRBv.Vt$S/1P4qrFjyeXULkmMcYX2zLqbf10g3GAbzxs89c4598fiuFnJzE8oDp/fLpniXa0w9u3j8a.0tjfddjJYtLNL1:17753:0:99999:7:::
houmu4:!!:17753:0:99999:7:::
passwd -u 解锁密码,可以锁定当然也可以解锁如下
passwd -u user1
解锁用户 user1 的密码。
passwd: 操作成功
tail -n5 /etc/shadow
user1:$6$nxRBv.Vt$S/1P4qrFjyeXULkmMcYX2zLqbf10g3GAbzxs89c4598fiuFnJzE8oDp/fLpniXa0w9u3j8a.0tjfddjJYtLNL1:17753:0:99999:7::: #再次查询会发现没有2个!号就表示解锁成功
usermod -L 也可以锁定用户,用户的密码段是1个! ,不论是1个"!"还是2个"!",都可以锁定用户
usermod -U 解锁用户
mkpasswd命令
安装软件包
yum install -y expect
mkpasswd 随机生成一个包括小写字母、数字、特殊符号的9位密码
mkpasswd
%0xSTxra8
mkpasswd -l 指定密码的长度
mkpasswd -l 12
p4jqo=z4Iv8t
mkpasswd -s 指定密码中特殊符号的个数,0表示不要特殊符号
mkpasswd -l 12 -s 5
a^!"0k#19.CY
mkpasswd -l 12 -s 0
n45laLmggoAg
su命令
su - 切换用户
su - user1
密码:
最后一次失败的登录:五 8月 10 15:52:16 EDT 2018pts/0 上
最有一次成功登录后有 1 次失败的登录尝试。
[user1@bogon ~]$ whoami #查看当前有效用户名
user1
[user1@bogon ~]$ pwd #加上”-“用户切换到自己的家目录下,这样可以加载自己的配置文件
/home/user1
切换用户的时候要加上“-”,这样切换得更彻底,不加“-”仍然在root目录下
[centos@bogon ~]$ su user1
[user1@bogon centos]$ pwd
/home/centos #可以看到切换用户时没加"-" ,用户的家目录仍然在centos下/centos
su - -c 不切换用户,以另外一个用户的身份执行一条命令
su - -c "touch /tmp/xin" user1 以user1用户的身份,在/tmp下/创建一个空白的文件/xin/
ls -lt /tmp/ |head
总用量 0
-rw-rw-r--. 1 user1 user1 0 8月 10 16:26 xin
su - lei #在从user1切换到用户lei下
密码:
su: 警告:无法更改到 /home/lei 目录: 没有那个文件或目录
-bash-4.2$ pwd #切换到lei用户下,但是出现提示用户lei家目录不存在
/home/user1 #仍然在user1用户的家目录下,因为lei没有家目录导致配置文件不能加载
id lei
uid=1009(lei) gid=1010(lei) groups=1010(lei) 查看lei的uid和gid
mkdir /home/lei #在home下创建一个目录lei
chown lei:lei /home/lei
cp /etc/skel/.bash* /home/lei/ #/etc/skel/这个目录存放用户配置文件的模板,将里面的".bash"开头的配置文件拷贝到lei里面
chown -R lei:lei /home/lei #更改所有文件的所有者和所属组为lei
su - lei #切换到lei
Password:
Last login: Fri Aug 10 16:43:04 EDT 2018 on pts/0
sudo命令
sudo命令允许普通用户临时拥有root用户的身份执行一些命令
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
centos ALL=(ALL) ALL
找到"Allow root to run any commands anywhere"这一行,在root这一行下面添加一行
第一段:centos表示用户,
第二段:第一个ALL为允许使用sudo的主机,写ALL即可。第二个括号里的ALL为用户(在这里为centos)使用sudo后将会被授予哪个身份;
第三段:允许执行的命令,ALL表示全部,也可以写一些命令不过要写绝对命令!/usr/bin/ls, /usr/bin/cat,/usr/bin/mv 单写ls是读取不到的
[centos@bogon ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够 #提示权限不够
[centos@bogon ~]$ sudo ls /root/ #加了sudo就可以查看了
[sudo] centos 的密码:
anaconda-ks.cfg
也可以不用每次都输入密码执行sudo那么麻烦命令前面输入这个就好了NOPASSWD:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
centos ALL=(ALL) NOPASSWD:/usr/bin/ls, /usr/bin/cat,/usr/bin/mv
设置命令组,将几个命令放在一起做一个别名
## Networking #找到这里
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
## Installation and management of software
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
Cmnd_Alias LY = /usr/bin/ls, /usr/bin/cat,/usr/bin/mv #给几个命令做别名LY
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
centos ALL=(ALL) LY(在这写你上面做的别名LY代表那几个命令)
限制root远程登录
设定用户的Alias,设定一个用户组:
# User_Alias ADMINS = jsmith, mikem
User Alias XI = lei,centos
XI
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
XI ALL=(ALL) NOPASSWD:= /usr/bin/su
使用sudo从普通用户登陆到root用户
[lei@localhost ~]$ sudo su - root
上一次登录:五 8月 10 17:18:27 EDT 2018pts/1 上
[root@bogon ~]# whoami #不用root的密码直接登陆到root上
root
限制root远程登陆
#PermitRootlogin yes #找到这一行修改成no
systemctl restart sshd.service #更改配置文件后重启sshd服务
远程登陆root用户,发现登陆不了