Linux用户和组管理

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段是数字,代表天数,最近更改密码的日期(日期计算方法是从197011日开始至今的天数)

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 ~]# 

useraddadduser是一样的用法





3_4 usermod命令

usermod更改用户属性的命令

改用户的uid命令格式:usermod -u uid username

改用户的gid命令格式:usermod -g grp2 username

usermod -g gid username

改家目录:usermod -d /nome/jfisjfd username

shellusermod -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命令

mkpasswdmake 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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值