3_1 用户配置文件和密码配置文件
/etc/passwd用户的密码,密码文件,用户文件,核心的配置文件(叫法不同)。
[root@zyshanlinux-01 ~]# ls /etc/passwd
/etc/passwd
[root@zyshanlinux-01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user1:x:1000:1001::/home/user1:/bin/bash #自己创建的用户从这里开始
[root@zyshanlinux-01 ~]#
每个用户一行,褐色的是安装系统的时候自带的,已经存在的用户。
用 : 把每一行分割成7段;
# user1:x:1000:1001::/home/user1:/bin/bash
User1——用户名
X——早期的密码存放处,不安全,已经另存它处。
1000——uid,centos7都是从1000开始的。
1001——gid
::(root是:root:,不包括两边的冒号,中间没写就是空)——用户的注析信息
/home/user1——用户的家目录
/bin/bash——用户的shell,交互终端。(如果是/sbin/nologin,即使是用户也不能登录。)
专门存密码的文件/etc/shadow,和用户的文件意义对应,专门用来控制用户的密码的,用:分割为九段,
[root@zyshanlinux-01 ~]# ls /etc/shadow
/etc/shadow
[root@zyshanlinux-01 ~]# cat /etc/shadow
root:$6$SpROEG3Z4EOw1iKP$.ID2S.MTEcLaZ8op8RAD9A6uQfPiW3fjxSk2WB0bzYvI1Ee0uGIJEsfigRKIArlwzFihech6WwoLElW6xkF1b.::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-network:!!:17657::::::
dbus:!!:17657::::::
polkitd:!!:17657::::::
postfix:!!:17657::::::
sshd:!!:17657::::::
chrony:!!:17657::::::
user1:$6$4vUCiYGc$yfPU.ZLFjmUCDEq97huTL3DBzr5LMH9JMX6pO8sQ5Dlira/DBXseqDvp4c04q0t0brFbyacQZPRjRBdTFMYnJ1:17666:0:99999:7:::
第1段是用户名,第2段是用户的密码(密码是加密的,密码不能反编译,明文的密码可以获得一个加密的密码,加密的密码不能反编译成一个明文的密码。),加密的方式是SHA-512。
如果想在一行里面写两个命令,就用;进行分割;把密码文件提取头尾行来看,就方便多了。
[root@zyshanlinux-01 ~]# head -n1 /etc/shadow;tail -n1 /etc/shadow
root:$6$SpROEG3Z4EOw1iKP$.ID2S.MTEcLaZ8op8RAD9A6uQfPiW3fjxSk2WB0bzYvI1Ee0uGIJEsfigRKIArlwzFihech6WwoLElW6xkF1b.::0:99999:7:::
user1:$6$4vUCiYGc$yfPU.ZLFjmUCDEq97huTL3DBzr5LMH9JMX6pO8sQ5Dlira/DBXseqDvp4c04q0t0brFbyacQZPRjRBdTFMYnJ1:17666:0:99999:7:::
[root@zyshanlinux-01 ~]#
第3段是数字,代表天数,最近更改密码的日期(日期计算方法是从1970年1月1日开始至今的天数)
第4段要过多少天才可以更改密码,默认为0.
第5段密码多少天到期,多少天必须更改,
第6段密码到期前的警告,设置7,就是提前7天提醒密码到期。
第7段密码到期没修改,设置3,到第三天就锁定账号了。
第8段账号的生命周期,在日期前可以使用,到期后密码被锁定。
第9段就是保留字段,没有实际意义。
3_2 用户组管理
关于组的配置文件
[root@zyshanlinux-01 ~]# ls /etc/group
/etc/group
[root@zyshanlinux-01 ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:30:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
ssh_keys:x:999:
input:x:998:
systemd-journal:x:190:
systemd-network:x:192:
dbus:x:81:
polkitd:x:997:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
chrony:x:996:
user1:x:1001:
test:x:1002:
slocate:x:21:
与/etc/passwd没对应上,基本上那边有的这边也有了。
组的密码配置文件
[root@zyshanlinux-01 ~]# ls /etc/gshadow
/etc/gshadow
[root@zyshanlinux-01 ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
tty:::
disk:::
lp:::
mem:::
kmem:::
wheel:::
cdrom:::
mail:::postfix
man:::
dialout:::
floppy:::
games:::
tape:::
video:::
ftp:::
lock:::
audio:::
nobody:::
users:::
utmp:!::
utempter:!::
ssh_keys:!::
input:!::
systemd-journal:!::
systemd-network:!::
dbus:!::
polkitd:!::
postdrop:!::
postfix:!::
sshd:!::
chrony:!::
user1:!::
test:!::
slocate:!::
[root@zyshanlinux-01 ~]#
后面有-后缀的,是系统给前面的文件的备份。
增加组groupadd test
[root@zyshanlinux-01 ~]# tail -n2 /etc/group
test:x:1002:
slocate:x:21:
[root@zyshanlinux-01 ~]#
创建组可以指定gid
[root@zyshanlinux-01 ~]# groupadd -g 1006 test01
[root@zyshanlinux-01 ~]# tail -n2 /etc/group
slocate:x:21:
test01:x:1006:
[root@zyshanlinux-01 ~]#
除组groupdel test01
[root@zyshanlinux-01 ~]# groupdel test01
[root@zyshanlinux-01 ~]# tail -n2 /etc/group
test:x:1002:
slocate:x:21:
[root@zyshanlinux-01 ~]#
删除一个组,必须没有成员才能删除,当里面有成员的时候当然不可能把成员删除完毕才去删除组,应该把现有的成员移到其它组,清空该组才能删除这个组。
3_3 用户管理
增加用户useradd
[root@zyshanlinux-01 ~]# useradd user1
[root@zyshanlinux-01 ~]# tail -n2 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user1:x:1000:1001::/home/user1:/bin/bash
[root@zyshanlinux-01 ~]#
创建用户同时指定uid和所属组
[root@zyshanlinux-01 ~]# useradd -u 1005 -g test user2
[root@zyshanlinux-01 ~]# tail -n3 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user1:x:1000:1001::/home/user1:/bin/bash
user2:x:1005:1002::/home/user2:/bin/bash
[root@zyshanlinux-01 ~]#
创建用户同时指定家目录和/bin/bash终端
[root@zyshanlinux-01 ~]# useradd -u 1007 -g test -d /home/test -s /sbin/nologin user3
[root@zyshanlinux-01 ~]# tail -n3 /etc/passwd
user1:x:1000:1001::/home/user1:/bin/bash
user2:x:1005:1002::/home/user2:/bin/bash
user3:x:1007:1002::/home/test:/sbin/nologin
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# ls /home/
test use2 user1 user2
[root@zyshanlinux-01 ~]#
创建用户不创建家目录,user4其实是有家目录的/home/user4,但并没有创建出来。
[root@zyshanlinux-01 ~]# useradd -M user4
[root@zyshanlinux-01 ~]# ls /home/
test use2 user1 user2
[root@zyshanlinux-01 ~]# tail -n4 /etc/passwd
user1:x:1000:1001::/home/user1:/bin/bash
user2:x:1005:1002::/home/user2:/bin/bash
user3:x:1007:1002::/home/test:/sbin/nologin
user4:x:1008:1008::/home/user4:/bin/bash
[root@zyshanlinux-01 ~]#
uid每创建一次就从最新的uid开始自增,gid则不会它只会随着uid自增而自增。
[root@zyshanlinux-01 ~]# groupadd -g 1014 grp2
[root@zyshanlinux-01 ~]# useradd -g grp2 user8
[root@zyshanlinux-01 ~]# tail -n5 /etc/passwd
user4:x:1008:1008::/home/user4:/bin/bash
user6:x:1009:1009::/home/user6:/bin/bash
user5:x:1010:1011::/home/user5:/bin/bash
user7:x:1011:1012::/home/user7:/bin/bash
user8:x:1012:1014::/home/user8:/bin/bash
[root@zyshanlinux-01 ~]# useradd user9
[root@zyshanlinux-01 ~]# tail -n5 /etc/passwd
user6:x:1009:1009::/home/user6:/bin/bash
user5:x:1010:1011::/home/user5:/bin/bash
user7:x:1011:1012::/home/user7:/bin/bash
user8:x:1012:1014::/home/user8:/bin/bash
user9:x:1013:1013::/home/user9:/bin/bash
[root@zyshanlinux-01 ~]#
删除用户userdel
删除用户,但系统不会删除该用户的家目录,考虑到用户可能存有文件,系统就把这个操作留给管理员来判断这个目录是否需要删除,也可加-r删除用户的同时把家目录一同删去。
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# userdel user8
[root@zyshanlinux-01 ~]# tail -n3 /etc/passwd
user5:x:1010:1011::/home/user5:/bin/bash
user7:x:1011:1012::/home/user7:/bin/bash
user9:x:1013:1013::/home/user9:/bin/bash
[root@zyshanlinux-01 ~]# ls /home/
test use2 user1 user2 user5 user6 user7 user8 user9
[root@zyshanlinux-01 ~]# rm -rf /home/user8
[root@zyshanlinux-01 ~]# ls /home/
test use2 user1 user2 user5 user6 user7 user9
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# userdel -r user7
[root@zyshanlinux-01 ~]# tail -n3 /etc/passwd
user6:x:1009:1009::/home/user6:/bin/bash
user5:x:1010:1011::/home/user5:/bin/bash
user9:x:1013:1013::/home/user9:/bin/bash
[root@zyshanlinux-01 ~]# ls /home/
test use2 user1 user2 user5 user6 user9
[root@zyshanlinux-01 ~]#
useradd和adduser是一样的用法。
3_4 usermod命令
usermod更改用户属性的命令
改用户的uid命令格式:usermod -u uid username
改用户的gid命令格式:usermod -g grp2 username
或usermod -g gid username
改家目录:usermod -d /nome/jfisjfd username
改shell:usermod -s /sbin/nologin username
-G扩展组的概念
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# id user1
uid=1000(user1) gid=1001(user1) 组=1001(user1)
[root@zyshanlinux-01 ~]#
#用户可以属于多个组,但gid只有一个,所以除了gid(主组)外的组就是拓展组,拓展组与组间通过【,】分隔开。
[root@zyshanlinux-01 ~]# usermod -G test user9
[root@zyshanlinux-01 ~]# id user9
uid=1013(user9) gid=1013(user9) 组=1013(user9),1002(test)
[root@zyshanlinux-01 ~]#
指定-G之后,修改新的扩展组后,会覆盖前面的扩展组;可以同时加多个组;-g不可以加多个组,它只能加一个。
[root@zyshanlinux-01 ~]# tail -n8 /etc/group
test:x:1002:user9
slocate:x:21:
user9:x:1013:
[root@zyshanlinux-01 ~]# usermod -G grp2 user9
[root@zyshanlinux-01 ~]# id user9
uid=1013(user9) gid=1013(user9) 组=1013(user9),1014(grp2)
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# usermod -G grp2,test user9
[root@zyshanlinux-01 ~]# id user9
uid=1013(user9) gid=1013(user9) 组=1013(user9),1002(test),1014(grp2)
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# usermod -g grp2 user9
[root@zyshanlinux-01 ~]# id user9
uid=1013(user9) gid=1014(grp2) 组=1014(grp2),1002(test)
[root@zyshanlinux-01 ~]# usermod -g user9 user9
[root@zyshanlinux-01 ~]# id user9
uid=1013(user9) gid=1013(user9) 组=1013(user9),1002(test),1014(grp2)
[root@zyshanlinux-01 ~]#
3_5 用户密码管理
改用户密码命令passwd
passwd拥有特殊权限set_uid允许普通用户修改自己的密码。
root用户更改密码
[root@zyshanlinux-01 ~]# passwd
普通用户更改密码
Passwd username
[root@zyshanlinux-01 ~]# passwd user9
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@zyshanlinux-01 ~]# tail /etc/shadow
postfix:!!:17657::::::
sshd:!!:17657::::::
chrony:!!:17657::::::
user1:$6$4vUCiYGc$yfPU.ZLFjmUCDEq97huTL3DBzr5LMH9JMX6pO8sQ5Dlira/DBXseqDvp4c04q0t0brFbyacQZPRjRBdTFMYnJ1:17666:0:99999:7:::
user2:!!:17666:0:99999:7:::
user3:!!:17666:0:99999:7:::
user4:!!:17666:0:99999:7:::
user6:!!:17666:0:99999:7:::
user5:!!:17666:0:99999:7:::
user9:$6$PO2Vrw2H$ZQcmqDbduTlGpwKBMTOp.pjra15uaShtNFktYPPirlsjPXtGCHsez.ZifM0nNB53ZcCcHxXbe5QiEvr8A8vif0:17666:0:99999:7:::
[root@zyshanlinux-01 ~]#
如果一个用户没有密码,该段就是2个叹号,没有密码不能登录。
[root@zyshanlinux-01 ~]# tail /etc/shadow
postfix:!!:17657::::::
sshd:!!:17657::::::
chrony:!!:17657::::::
user1:$6$4vUCiYGc$yfPU.ZLFjmUCDEq97huTL3DBzr5LMH9JMX6pO8sQ5Dlira/DBXseqDvp4c04q0t0brFbyacQZPRjRBdTFMYnJ1:17666:0:99999:7:::
user2:!!:17666:0:99999:7:::
user3:!!:17666:0:99999:7:::
user4:!!:17666:0:99999:7:::
user6:!!:17666:0:99999:7:::
user5:!!:17666:0:99999:7:::
user9:!!:17666:0:99999:7:::
[root@zyshanlinux-01 ~]#
带*的密码,是指用户的密码被锁定的不能用的,也是不能登录。
[root@zyshanlinux-01 ~]# head /etc/shadow
root:$6$SpROEG3Z4EOw1iKP$.ID2S.MTEcLaZ8op8RAD9A6uQfPiW3fjxSk2WB0bzYvI1Ee0uGIJEsfigRKIArlwzFihech6WwoLElW6xkF1b.::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:::
[root@zyshanlinux-01 ~]#
锁定密码passwd -l username,用-l
[root@zyshanlinux-01 ~]# passwd -l user9
锁定用户 user9 的密码 。
passwd: 操作成功
[root@zyshanlinux-01 ~]# tail /etc/shadow
postfix:!!:17657::::::
sshd:!!:17657::::::
chrony:!!:17657::::::
user1:$6$4vUCiYGc$yfPU.ZLFjmUCDEq97huTL3DBzr5LMH9JMX6pO8sQ5Dlira/DBXseqDvp4c04q0t0brFbyacQZPRjRBdTFMYnJ1:17666:0:99999:7:::
user2:!!:17666:0:99999:7:::
user3:!!:17666:0:99999:7:::
user4:!!:17666:0:99999:7:::
user6:!!:17666:0:99999:7:::
user5:!!:17666:0:99999:7:::
user9:!!$6$PO2Vrw2H$ZQcmqDbduTlGpwKBMTOp.pjra15uaShtNFktYPPirlsjPXtGCHsez.ZifM0nNB53ZcCcHxXbe5QiEvr8A8vif0:17666:0:99999:7:::
解锁密码passwd -u user9,用-u
[root@zyshanlinux-01 ~]# tail /etc/shadow
postfix:!!:17657::::::
sshd:!!:17657::::::
chrony:!!:17657::::::
user1:$6$4vUCiYGc$yfPU.ZLFjmUCDEq97huTL3DBzr5LMH9JMX6pO8sQ5Dlira/DBXseqDvp4c04q0t0brFbyacQZPRjRBdTFMYnJ1:17666:0:99999:7:::
user2:!!:17666:0:99999:7:::
user3:!!:17666:0:99999:7:::
user4:!!:17666:0:99999:7:::
user6:!!:17666:0:99999:7:::
user5:!!:17666:0:99999:7:::
user9:$6$PO2Vrw2H$ZQcmqDbduTlGpwKBMTOp.pjra15uaShtNFktYPPirlsjPXtGCHsez.ZifM0nNB53ZcCcHxXbe5QiEvr8A8vif0:17666:0:99999:7:::
[root@zyshanlinux-01 ~]#
另一种锁定密码的方法usermod -L username,用-L,变为1个叹号。
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# usermod -L user9
[root@zyshanlinux-01 ~]# tail /etc/shadow
postfix:!!:17657::::::
sshd:!!:17657::::::
chrony:!!:17657::::::
user1:$6$4vUCiYGc$yfPU.ZLFjmUCDEq97huTL3DBzr5LMH9JMX6pO8sQ5Dlira/DBXseqDvp4c04q0t0brFbyacQZPRjRBdTFMYnJ1:17666:0:99999:7:::
user2:!!:17666:0:99999:7:::
user3:!!:17666:0:99999:7:::
user4:!!:17666:0:99999:7:::
user6:!!:17666:0:99999:7:::
user5:!!:17666:0:99999:7:::
user9:!$6$PO2Vrw2H$ZQcmqDbduTlGpwKBMTOp.pjra15uaShtNFktYPPirlsjPXtGCHsez.ZifM0nNB53ZcCcHxXbe5QiEvr8A8vif0:17666:0:99999:7:::
[root@zyshanlinux-01 ~]#
解锁方法usermod -U username,用-U
[root@zyshanlinux-01 ~]# usermod -U user9
[root@zyshanlinux-01 ~]# tail /etc/shadow
postfix:!!:17657::::::
sshd:!!:17657::::::
chrony:!!:17657::::::
user1:$6$4vUCiYGc$yfPU.ZLFjmUCDEq97huTL3DBzr5LMH9JMX6pO8sQ5Dlira/DBXseqDvp4c04q0t0brFbyacQZPRjRBdTFMYnJ1:17666:0:99999:7:::
user2:!!:17666:0:99999:7:::
user3:!!:17666:0:99999:7:::
user4:!!:17666:0:99999:7:::
user6:!!:17666:0:99999:7:::
user5:!!:17666:0:99999:7:::
user9:$6$PO2Vrw2H$ZQcmqDbduTlGpwKBMTOp.pjra15uaShtNFktYPPirlsjPXtGCHsez.ZifM0nNB53ZcCcHxXbe5QiEvr8A8vif0:17666:0:99999:7:::
[root@zyshanlinux-01 ~]#
只用输入一次,明文更改密码,shell脚本可能会用到这个--stdin
[root@zyshanlinux-01 ~]# passwd --stdin user9
更改用户 user9 的密码 。
123456
passwd:所有的身份验证令牌已经成功更新。
[root@zyshanlinux-01 ~]#
通过|管道符把前边的结果传递给后面的命令;
[root@zyshanlinux-01 ~]# echo "123456" | passwd --stdin user9
更改用户 user9 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@zyshanlinux-01 ~]#
不用--stdin,也可1行命令设置2行密码命令;
[root@zyshanlinux-01 ~]# echo -e "12345678\n12345678" | passwd user9
更改用户 user9 的密码 。
新的 密码:无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
[root@zyshanlinux-01 ~]#
Tip:
实现换行,换行就是为了1行命令设置密码2次起作用。
[root@zyshanlinux-01 ~]# echo -e "123\nsss"
123
sss
[root@zyshanlinux-01 ~]# echo "123\nsss"
123\nsss
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# echo -e "123\tsss"
123 sss
[root@zyshanlinux-01 ~]#
3_6 mkpasswd命令
mkpasswd(make password)生成密码的工具
安装命令:yum install -y expect
安装这个工具就可以使用这个mkpasswd这个命令,生成随机的字符串。
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# yum install -y expect #安装工具
[root@zyshanlinux-01 ~]# mkpasswd #默认生成9位密码
V4:wnV1po
[root@zyshanlinux-01 ~]# mkpasswd -l 12 #指定生成12位密码
K4dG9qhtuxz>
[root@zyshanlinux-01 ~]# mkpasswd -l 12 -s 3 #指定生成带3个特殊符号的12位密码
t6G*6uzKpt!]
[root@zyshanlinux-01 ~]# mkpasswd -l 12 -s 0 #指定生成不要特殊符号的12位密码
Cia7bp2Fmfma
[root@zyshanlinux-01 ~]# ^C
[root@zyshanlinux-01 ~]#
3_7 su命令
su是用来切换用户的命令
[root@zyshanlinux-01 ~]# tail -n2 /etc/passwd #查看现有的用户
user5:x:1010:1011::/home/user5:/bin/bash
user9:x:1013:1013::/home/user9:/bin/bash
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# su - user9 #完全切换到user9用户
[user9@zyshanlinux-01 ~]$ whoami #
user9
[user9@zyshanlinux-01 ~]$ id
uid=1013(user9) gid=1013(user9) 组=1013(user9),1002(test),1014(grp2) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[user9@zyshanlinux-01 ~]$ 登出 #Ctrl+d登出当前用户
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# su user9 #切换到user9用户,
但家目录还是root的家目录。
[user9@zyshanlinux-01 root]$ pwd
/root
[user9@zyshanlinux-01 root]$
[user9@zyshanlinux-01 root]$ exit
[root@zyshanlinux-01 ~]# pwd
/root
[root@zyshanlinux-01 ~]# su - user9 #只有用su -才能完全彻底切换到user9用户
上一次登录:三 5月 16 18:49:17 CST 2018pts/1 上
[user9@zyshanlinux-01 ~]$ pwd
/home/user9 #user9的家目录,才能加载user9的配置文件。
[user9@zyshanlinux-01 ~]$
下面以.bash开头的都是用户的配置文件。
[user9@zyshanlinux-01 ~]$ ls -la
总用量 16
drwx------. 2 user9 user9 83 5月 16 18:48 .
drwxr-xr-x. 9 root root 95 5月 15 23:14 ..
-rw-------. 1 user9 user9 17 5月 16 18:49 .bash_history
-rw-r--r--. 1 user9 user9 18 8月 3 2017 .bash_logout
-rw-r--r--. 1 user9 user9 193 8月 3 2017 .bash_profile
-rw-r--r--. 1 user9 user9 231 8月 3 2017 .bashrc
[user9@zyshanlinux-01 ~]$
在su的时候以用户的身份执行一条命令,但不登陆该用户;
- 彻底切换用户,-c 指定用户身份执行哪些命令。
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# su - -c "touch /tmp/user9.111" user9
[root@zyshanlinux-01 ~]# ls -lt /tmp/ |head
总用量 4
-rw-rw-r--. 1 user9 user9 0 5月 16 19:00 user9.111
drwx------. 3 root root 17 5月 16 18:44 systemd-private-8e5195fddc3946f59407886cb9587904-chronyd.service-vPcUD1
drwx------. 3 root root 17 5月 16 18:44 systemd-private-8e5195fddc3946f59407886cb9587904-vmtoolsd.service-BMNbrR
drwx------. 3 root root 17 5月 16 18:44 systemd-private-8e5195fddc3946f59407886cb9587904-vgauthd.service-spVf7H
drwxr-xr-x. 2 root root 41 5月 15 11:28 007
drwx------. 3 root root 17 5月 15 08:20 systemd-private-c886cfa12c6a42c98675a74488a3e1db-vmtoolsd.service-MELTcO
drwx------. 3 root root 17 5月 15 08:20 systemd-private-c886cfa12c6a42c98675a74488a3e1db-chronyd.service-IEV8Pz
drwx------. 3 root root 17 5月 15 08:20 systemd-private-c886cfa12c6a42c98675a74488a3e1db-vgauthd.service-Cstfyl
drwx------. 3 root root 17 5月 13 10:13 systemd-private-5d136f77c8fa4c998bf5b67bb405ff46-chronyd.service-I2knqR
[root@zyshanlinux-01 ~]# id user9
uid=1013(user9) gid=1013(user9) 组=1013(user9),1002(test),1014(grp2)
#由于组是user9,所以上面创建的user9.111的组就是user9.
[root@zyshanlinux-01 ~]#
由于之前指创建用户但禁止创建用户的家目录,所以用su -二次切换用户后,就显示-bash-4.2$;
[root@zyshanlinux-01 ~]# ls -li /home
总用量 0
50717386 drwx------. 2 user3 test 62 5月 15 22:51 test
16784322 drwx------. 2 user2 test 62 5月 15 22:43 use2
50717385 drwx------. 2 user1 user1 62 5月 15 13:59 user1
33583304 drwx------. 2 user2 test 62 5月 15 22:50 user2
1249 drwx------. 2 user6 grp3 62 5月 15 23:02 user5
16784327 drwx------. 2 user5 user5 62 5月 15 23:02 user6
1267 drwx------. 2 user9 user9 83 5月 16 18:48 user9
[root@zyshanlinux-01 ~]# passwd user4
更改用户 user4 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@zyshanlinux-01 ~]# su - user9
上一次登录:三 5月 16 19:15:29 CST 2018pts/1 上
[user9@zyshanlinux-01 ~]$ su - user4
密码:
最后一次失败的登录:三 5月 16 19:15:56 CST 2018pts/1 上
最有一次成功登录后有 2 次失败的登录尝试。
su: 警告:无法更改到 /home/user4 目录: 没有那个文件或目录
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$
为什么要给user4重新创建家目录,因为user4它没有家目录。
创建了user4的家目录后,仍然显示-bash-4.2$,为什么呢,是因为家目录中没有用户的配置文件。
必须要加上用户的配置文件才会显示正常。
[root@zyshanlinux-01 ~]# id user4
uid=1008(user4) gid=1008(user4) 组=1008(user4)
[root@zyshanlinux-01 ~]# mkdir /home/user4
[root@zyshanlinux-01 ~]# chown user4:user4 /home/user4/
[root@zyshanlinux-01 ~]# su - userr4
su: user userr4 does not exist
[root@zyshanlinux-01 ~]# su - user4
上一次登录:三 5月 16 19:16:51 CST 2018pts/1 上
-bash-4.2$
系统其实有这个用户的配置文件模板,在目录/etc/skel/下。
[root@zyshanlinux-01 ~]# ls -lai /etc/skel/
总用量 24
16777656 drwxr-xr-x. 2 root root 62 5月 7 04:20 .
16777281 drwxr-xr-x. 74 root root 8192 5月 16 19:16 ..
16794820 -rw-r--r--. 1 root root 18 8月 3 2017 .bash_logout
16792407 -rw-r--r--. 1 root root 193 8月 3 2017 .bash_profile
16794821 -rw-r--r--. 1 root root 231 8月 3 2017 .bashrc
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# cp /etc/skel/.bash* /home/user4/
[root@zyshanlinux-01 ~]# chown -R user4:user4 !$
chown -R user4:user4 /home/user4/ #不要忘给它更改所有者和所属组。
[root@zyshanlinux-01 ~]#
拷贝过来就正常了。
[root@zyshanlinux-01 ~]# su - user4
上一次登录:三 5月 16 19:26:07 CST 2018pts/1 上
[user4@zyshanlinux-01 ~]$ pwd
/home/user4
[user4@zyshanlinux-01 ~]$
root用户可以切换到普通用户,普通用户也可以输入root的密码切换到root用户。
[user4@zyshanlinux-01 ~]$ su -
密码:
上一次登录:三 5月 16 19:30:03 CST 2018从 192.168.106.1pts/1 上
[root@zyshanlinux-01 ~]#
删除用户账号的时候,管理员考虑到用户可能还有一些资料在家目录中,所以会保留家目录一段时间。其实还有一个用户的目录也保存着一些重要信息,就是/var/mail/user保存了用户的邮件信息。
如果用户提前声明账号中没有重要资料,可以把家目录和/var/mail/user邮件目录同时删掉,
通过加-r命令来达到目的:[root@zyshanlinux-01 ~]# userdel -r user4
3_8 sudo命令
Suds可以给普通用户临时授权root用户的身份;
用visudo可以打开sudo的配置文件,不要用vi sudo这个命令它无法检测语法错误,而visudo就可以检测语法错误;
实际上我们是打开了/etc/sudoers这个文件。
#root那行是核心配置;user9用户的配置,ALL主机名的概念=(ALL)用户名的概念 ALL代表所有的命令,也可以授予单独的命令,但必须用绝对路径命令。
用:set nu可以标记行号。
错误原因,没用命令的绝对路径;
[root@zyshanlinux-01 ~]# visudo
>>> /etc/sudoers: 语法错误 near line 93 <<<
现在做什么?
选项有:
重新编辑 sudoers 文件(e)
退出,不保存对 sudoers 文件的更改(x)
退出并将更改保存到 sudoers 文件(危险!)(Q)
现在做什么?e
[root@zyshanlinux-01 ~]#
编辑正确后,用sudo命令就可以用root的权限查看/root/目录,会提示你输入自己的密码,后面就不需要输入了;
[root@zyshanlinux-01 ~]# su - user1
上一次登录:三 5月 16 19:09:46 CST 2018pts/1 上
[user1@zyshanlinux-01 ~]$ sudo /usr/bin/ls /root/
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] user1 的密码:
[user1@zyshanlinux-01 ~]$ sudo /usr/bin/ls /root/
002.txt 009 anaconda-ks.cfg
[user1@zyshanlinux-01 ~]$
如果你不想输入自己的密码,可以用visudo编辑一下;增加这句NOPASSWD
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
user1 ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
user9 ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/cat
保存退出,用sudo命令不用输入自己的密码了。
[root@zyshanlinux-01 ~]# su - user9
上一次登录:三 5月 16 23:21:21 CST 2018pts/1 上
[user9@zyshanlinux-01 ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[user9@zyshanlinux-01 ~]$ sudo ls /root/
002.txt 009 anaconda-ks.cfg
[user9@zyshanlinux-01 ~]$
设置别名来代替命令,编辑visudo,安装模板设置,首字母必须大写;
## 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
Cmnd_Alias ZYSHAN_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
用别名代替原先的绝对路径命令;
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
user1 ALL=(ALL) ZYSHAN_CMD
user9 ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/cat
命令仍然是成功的;
[root@zyshanlinux-01 ~]# sudo - user1
sudo: -:找不到命令
[root@zyshanlinux-01 ~]# su - user1
上一次登录:三 5月 16 23:32:00 CST 2018pts/1 上
[user1@zyshanlinux-01 ~]$ sudo ls /root/
[sudo] user1 的密码:
002.txt 009 anaconda-ks.cfg
[user1@zyshanlinux-01 ~]$
其实也可以了解下visudo里面的其它用法,例如%wheel所属组;
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
跳板机:拥有审计监控功能,给运维人员分配账号,运维人员通过这个跳板机与服务器交互,所有的操作命令都会被跳板机记录。
3_9 限制root远程登陆
需求:避免密码泄露后被人用root远程登录。
可以限制远程登录,限制不了本地登陆;只允许远程登录普通用户。
普通用户用su - root需要输入root密码,而root用户使用su - root不需要输入root密码。
前提:限制root远程登录。
[root@zyshanlinux-01 ~]# vi /etc/ssh/sshd_config #修改配置文件
[root@zyshanlinux-01 ~]#
进入配置文件,搜索关键词/Root,搜索用/。
找到#PermitRootLogin yes这行,把#去掉,把yes改为no。
改完配置文件要重启服务;
[root@zyshanlinux-01 ~]# systemctl restart sshd.service
[root@zyshanlinux-01 ~]#
用visudo更改sudo配置;
[root@zyshanlinux-01 ~]# visudo
[root@zyshanlinux-01 ~]# su - user9 #切换到普通用户user9
上一次登录:三 5月 16 23:46:05 CST 2018pts/1 上
[user9@zyshanlinux-01 ~]$ sudo su - root #user9登录root不用输入密码
上一次登录:四 5月 17 23:43:40 CST 2018从 192.168.106.1pts/0 上
[root@zyshanlinux-01 ~]# id #确认过是root的身份
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@zyshanlinux-01 ~]# 登出
[user9@zyshanlinux-01 ~]$ sudo su - #可以不用在 - 后写root,得到效果一样
上一次登录:四 5月 17 23:50:34 CST 2018pts/0 上
[root@zyshanlinux-01 ~]#
[root@zyshanlinux-01 ~]# 登出
[user9@zyshanlinux-01 ~]$ 登出
[root@zyshanlinux-01 ~]#
实验过程;
新开启用户远程登录服务器。
不能登录了,输入root用户密码也登录不了。
用PuTTY登录普通用户user1,成功登录。
[user1@zyshanlinux-01 ~]$ w #看看有哪些用户登录。
00:24:59 up 50 min, 2 users, load average: 0.02, 0.02, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.106.1 23:43 8:03 0.05s 0.05s -bash
user1 pts/1 192.168.106.1 00:23 3.00s 0.06s 0.04s w
[user1@zyshanlinux-01 ~]$ ls /root/ #没有root权限
ls: 无法打开目录/root/: 权限不够
[user1@zyshanlinux-01 ~]$ su - root #su - 需要root密码,没有密码。
密码:
[user1@zyshanlinux-01 ~]$
[user1@zyshanlinux-01 ~]$ sudo su - root #sudo su - root成功获取权限。
上一次登录:四 5月 17 23:51:27 CST 2018pts/0 上
最后一次失败的登录:五 5月 18 00:25:19 CST 2018pts/1 上
最有一次成功登录后有 4 次失败的登录尝试。
[root@zyshanlinux-01 ~]# #切到root用户,成功限制了root远程登录。
[root@zyshanlinux-01 ~]# #只允许普通用户登录。
取消限制root远程登录设置:
[root@zyshanlinux-01 ~]# !vi
vi /etc/ssh/sshd_config
[root@zyshanlinux-01 ~]# systemctl restart sshd.service
[root@zyshanlinux-01 ~]#
把vi /etc/ssh/sshd_config配置文件的PermitRootLogin no这行加上#,变成#PermitRootLogin no,注析掉就行。
再重启服务:systemctl restart sshd.service就可以了。
拓展:
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不错的教程 http://www.jianshu.com/p/51338e41abb7
sudo -i 也可以登录到root吗? http://www.apelearn.com/bbs/thread-6899-1-1.html