用户配置文件,密码配置文件,用户组管理,用户管理,usermod,用户密码管理,mkpasswd,su,sudo,限制root远程登录

一、 用户配置文件和密码配置文件

1、用户配置文件

[root@aming01 ~]# ls /etc/passwd
/etc/passwd
[root@aming01 ~]# cat !$
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
user1:x:1000:1000::/home/user1:/bin/bash


我们不需要显示那么多的话,可以执行下列命令

如果想在一行输入两条命令,中间可以用分号隔开

[root@aming01 ~]# head -2 /etc/passwd;tail -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1000:1000::/home/user1:/bin/bash


我们来看每个字段都是什么含义,例如

root:x:0:0:root:/root:/bin/bash

第1个字段是用户名(第1行的root就是用户名);

第2个字段中都是x,存放的是用户的密码;

第3个字段是一个数字,表示uid;

第4个字段也是一个数字,表示gid;

扫描二维码关注公众号,回复: 1495027 查看本文章

第5个字段为注释信息,没有实质意义;

第6个字段是用户的家目录,root的家目录是/root,普通用户的家目录是/home/user3;

最后一个字段是用户的shell,/bin/bash表示可以登录,/sbin/nologin表示不能登录。


2、密码配置文件

[root@aming01 ~]# head -2 /etc/shadow;tail -3 /etc/shadow
root:$6$o/4DUs/2$oF/dyzUGno1Rm6.9u/u1cZlqingy6rPEgFJEIc6YuSBcxueVI4.J.Fat6XmeMnwA3NNYwJqNQVe/zFANF9QnH.:17660:0:99999:7:::
bin:*:17110:0:99999:7:::
postfix:!!:17645::::::
sshd:!!:17645::::::
user1:!!:17665:0:99999:7:::

第1个字段为用户名;

第2字段为用户密码,该密码是加密的;

第3个字段为上次更改密码的日期(从1970-1-1开始计算);

第4个字段为要过多少天可以更改密码,默认为0;

第5个字段为密码多少天后必须更改,默认为99999,即不需更改;

第6个字段为密码到期前的警告期限;

第7个字段为账号失效期限;

第8个字段为账号的生命周期;最后一个字段作为保留用的,无实际意义。


 二、用户组管理

1、新增用户组的命令:groupadd 组名

[root@aming01 ~]# groupadd nihao
[root@aming01 ~]# tail -3  /etc/group
sshd:x:74:
user1:x:1000:
nihao:x:1001:

-g选项:可以定义gid,CentOS7默认从1000开始,CentOS默认从500开始

[root@aming01 ~]# groupadd -g 1005 nihao
[root@aming01 ~]# tail -3  /etc/group
sshd:x:74:
user1:x:1000:
nihao:x:1005:


2、删除组的命令:groupdel 组名

[root@aming01 ~]# tail -3  /etc/group
sshd:x:74:
user1:x:1000:
nihao:x:1005:
[root@aming01 ~]# groupdel nihao
[root@aming01 ~]# tail -3  /etc/group
postfix:x:89:
sshd:x:74:
user1:x:1000:

在删除组的时候,有一种情况不能删除,在我们要删除的组里有用户的时候,我们要先删除用户才能删除这个组

[root@aming01 ~]# groupdel nihao
groupdel:不能移除用户“user2”的主组
[root@aming01 ~]# userdel user2
[root@aming01 ~]# groupdel nihao
[root@aming01 ~]# tail -3  /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1000:1000::/home/user1:/bin/bash
[root@aming01 ~]# groupdel nihao
groupdel:“nihao”组不存在



三、用户管理

1、增加用户命令:useradd 用户名 (命令adduser也能创建用户,跟useradd一样)

-u:表示自定义uid;

[root@aming01 ~]# useradd -u 1005 user2
[root@aming01 ~]# tail -3  /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1005:1005::/home/user2:/bin/bash

-g:表示指定所属组;

[root@aming01 ~]# tail -3  /etc/group
sshd:x:74:
user1:x:1000:
nihao:x:1001:
[root@aming01 ~]# useradd -u 1004 -g nihao user3
[root@aming01 ~]# tail -3  /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1001:1001::/home/user2:/bin/bash
user3:x:1004:1001::/home/user3:/bin/bash

-d:表示自定义用户的家目录;

-s:表示自定义shell;

-M:表示不建立家目录,虽然能在/etc/passwd文件能看到,但如果你用ls /hone/user7查看,会提示该目录不存在,所以 -M 的作用就是不创建那个目录

[root@aming01 ~]# useradd -M user3
正在创建信箱文件: 文件已存在
[root@aming01 ~]# ^C
[root@aming01 ~]# rm -rf /var/spool/mail/user3               
 #删除信箱文件
[root@aming01 ~]# useradd -M user3
useradd:用户“user3”已存在
[root@aming01 ~]# rm -rf /var/spool/mail/user3               
 #删除信箱文件
[root@aming01 ~]# userdel user3
[root@aming01 ~]# useradd -M user3
[root@aming01 ~]# tail -3 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1000:1000::/home/user1:/bin/bash
user3:x:1001:1001::/home/user3:/bin/bash
[root@aming01 ~]# ls /home/user3                     
[root@aming01 ~]# ls /home/
user1  user2  user3


2、删除用户命令:userdel 用户名

加-r选项:删除用户时,连同用户的家目录也删除
[root@aming01 ~]# useradd user4
[root@aming01 ~]# ls /home/
user1  user2  user3  user4
[root@aming01 ~]# userdel user3
[root@aming01 ~]# ls /home/
user1  user2  user3  user4
[root@aming01 ~]# userdel -r user4
[root@aming01 ~]# ls /home/
user1  user2  user3



四、usermod命令

usermod是更改用户属性的:usermod 用户名

-u: 更改用户的uid;

[root@aming01 ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1000:1000::/home/user1:/bin/bash
[root@aming01 ~]# usermod -u 1001 user1
[root@aming01 ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1001:1000::/home/user1:/bin/bash


-g: 更改用户的gid或组名;该gid必须存在,才能使用

[root@aming01 ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1001:1000::/home/user1:/bin/bash 
            #uid为1001,gid为1000

[root@aming01 ~]# groupadd -g 1005 grp1
[root@aming01 ~]# tail -3 /etc/group
sshd:x:74:
user1:x:1000:
grp1:x:1005:
[root@aming01 ~]# usermod -g 1005 user1
[root@aming01 ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1001:1005::/home/user1:/bin/bash


-d: 更改用户的家目录;

[root@aming01 ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1001:1005::/home/user1:/bin/bash
[root@aming01 ~]# usermod -d /home/qwe user1
[root@aming01 ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1001:1005::/home/qwe:/bin/bash


-s: 更改用户的shell;

[root@aming01 ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1001:1005::/home/qwe:/bin/bash
[root@aming01 ~]# usermod -s /sbin/nologin user1
[root@aming01 ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1001:1005::/home/qwe:/sbin/nologin


-G:添加扩展组;把用户追加到某些组里,可以追加到多个组中,每个组之间用“,”隔开

[root@aming01 ~]# id user1
uid=1001(user1) gid=1005(grp1) 组=1005(grp1)
[root@aming01 ~]# tail -3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1001:1005::/home/qwe:/sbin/nologin
[root@aming01 ~]# usermod -G grp2,grp3 user1
[root@aming01 ~]# id user1
uid=1001(user1) gid=1005(grp1) 组=1005(grp1),1006(grp2),1007(grp3)


-L: 锁定用户密码(被锁定的密码前面会有个感叹号  ! );passwd -L username
[root@aming01 ~]# usermod -L user1
[root@aming01 ~]# tail -2 /etc/shadow
sshd:!!:17645::::::
user1:!$6$8lSPJbls$4wi.wif.Zr5E36uQEtiZaxhUvl7/reDZLYe6E4mJVxKV.nA2p/jub951uncu4elTDsH4Y.YnR4l/YKlTiOYpH0:17670:0:99999:7:::


-U: 解锁用户密码;passwd -U username      (感叹号消失)

[root@aming01 ~]# tail -2 /etc/shadow
sshd:!!:17645::::::
user1:!$6$8lSPJbls$4wi.wif.Zr5E36uQEtiZaxhUvl7/reDZLYe6E4mJVxKV.nA2p/jub951uncu4elTDsH4Y.YnR4l/YKlTiOYpH0:17670:0:99999:7:::
[root@aming01 ~]# usermod -U user1
[root@aming01 ~]# tail -2 /etc/shadow
sshd:!!:17645::::::
user1:$6$8lSPJbls$4wi.wif.Zr5E36uQEtiZaxhUvl7/reDZLYe6E4mJVxKV.nA2p/jub951uncu4elTDsH4Y.YnR4l/YKlTiOYpH0:17670:0:99999:7:::


-l :修改用户的登录名称

[root@aming01 ~]# tail -2 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user1:x:1001:1005::/home/qwe:/bin/bash
[root@aming01 ~]# usermod -l hhh user1
[root@aming01 ~]# tail -2 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
hhh:x:1001:1005::/home/qwe:/bin/bash



五、用户密码管理

1、更改用户密码:passwd 用户名

如果用户密码为*,表示密码锁定,不能登录(锁定密码可以用passwd -L,解锁用passwd -U,用法与usermod一样)


2、给用户设置密码更改掉的命令:passwd --stdin 用户名

可以在更改密码时,不用二次确认


常在脚本用的方法:echo "12345678" |passwd --stdin 用户名



六、mkpasswd命令

命令mkpasswd的作用是随机生成密码,Linux中默认没有这个命令,需要安装

执行命令:yum install -y expect

[root@aming01 ~]# yum install -y expect
已加载插件:fastestmirror
base                                                                                           | 3.6 kB  00:00:00     
extras                                                                                         | 3.4 kB  00:00:00     
updates                                                                                        | 3.4 kB  00:00:00     
updates/7/x86_64/primary_db    FAILED                                          
http://mirrors.shu.edu.cn/centos/7.5.1804/updates/x86_64/repodata/49393589ab8a009b0ba01a63645404ff021ec1321a45aa289ff6a16cae46e662-primary.sqlite.bz2: [Errno 14] curl#7 - "Failed connect to mirrors.shu.edu.cn:80; Connection refused"
正在尝试其它镜像。


-l:生成指定长度的密码;

[root@aming01 ~]# mkpasswd -l 10
ywebh6MB5{


-s:指定密码中有几个特殊字符;

[root@aming01 ~]# mkpasswd -l 10 -s 3
*gt]F57<rX


-d:指定生成数字的个数

[root@aming01 ~]# mkpasswd -l 10 -d 5
i64a9;75EV

-c :指定生成小写字母的个数

[root@aming01 ~]# mkpasswd -l 10 -c 5
UTs-y6hr3r


-C:指定生成大写字母的个数

[root@aming01 ~]# mkpasswd -l 10 -C 5
S1D'6ZauIZ




七、su命令

1、su命令是用于切换用户的:su 用户名

如果加上-选项,即:su - 用户名,表示彻底切换用户,包括自己的配置、环境变量

[root@aming01 ~]# useradd su1
[root@aming01 ~]# su su1
[su1@aming01 root]$ pwd
/root
[su1@aming01 root]$ su
密码:
[root@aming01 ~]# pwd
/root
[root@aming01 ~]# su - su1
上一次登录:日 5月 20 21:42:43 CST 2018pts/0 上
[su1@aming01 ~]$ pwd
/home/su1


2、假如我们创建用户时没有创建用户的家目录,当我们切换到这个用户的时候,就会显示错误,使用以下方法解决:

[root@aming01 ~]# su hhh
bash-4.2$ 

[root@aming01 ~]# groupadd hhh
[root@aming01 ~]# mkdir /home/hhh
mkdir: 无法创建目录"/home/hhh": 文件已存在
[root@aming01 ~]# chown hhh:hhh /home/hhh
[root@aming01 ~]# ls -la /etc/skel/
总用量 24
drwxr-xr-x.  2 root root   62 4月  24 23:32 .
drwxr-xr-x. 74 root root 8192 5月  20 21:53 ..
-rw-r--r--.  1 root root   18 8月   3 2017 .bash_logout
-rw-r--r--.  1 root root  193 8月   3 2017 .bash_profile
-rw-r--r--.  1 root root  231 8月   3 2017 .bashrc
[root@aming01 ~]# cp /etc/skel/.bash* /home/hhh
[root@aming01 ~]# chown -R hhh:hhh /home/hhh


3、我们登不上这个普通用户,也可以普通用户的身份执行命令

[root@aming01 ~]# su - -c "touch /tmp/sss" hhh
[root@aming01 ~]# ls -l /tmp
总用量 116
lrwxrwxrwx. 1 root root      7 5月  16 06:09 hhh1.log -> yum.log
-rw-r--r--. 1 root root      0 5月  16 06:07 hhh.log
-rwxr-xr-x. 1 root root 117656 5月  14 05:40 ls2
-rw-r--r--. 1 hhh  grp1      0 5月  20 21:59 sss



八、sudo命令

1、sudo命令是授权普通用户拥有别的用户的权限,大部分时候是授权普通用户拥有root用户的权限

使用这个命令,先要编辑配置文件,etc/sudoers,但编辑这个文件出错后系统不会报错,所以我们用visudo来编辑,系统就会提示我们哪里有错误

[root@aming01 ~]# visudo


执行visudo命令后,找到:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

在这行下面添加,表示user1用户可以在所有终端上以root权限运行所有命令

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

user1   ALL=(ALL)    ALL


2、还可以添加命令,编辑完user1就有root的ls,cd,cat权限,需要输入用户的密码,但是这里要注意使用绝对路径并且用空格隔开

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

user1  ALL=(ALL)       /usr/bin/ls, /usr/bin/cd, /usr/bin/cat


3、用户别名配置,找到:

## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS

# User_Alias ADMINS = jsmith, mikem

在下方添加添加

User_Alias Users = user1, user2


3、在visudo,如果想不需要输入密码,就加NOPASSWD:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

user1  ALL=(ALL)       NOPASSWD: /usr/bin/ls, /usr/bin/cd, /usr/bin/cat


4、在visudo,可以给命令做别名,用USER_CMD代替ls,cd,cat命令

找到下面的位置,添加(蓝色为添加的部分)

     26 ## Networking
     27 # 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
   
 28 Cmnd_Alias USER_CMD= /usr/binls, /usr/bin/cd, /usr/bin/cat
     29 ## Installation and management of software
     30 # Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

接着

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

user1  ALL=(ALL)       USER_CMD


小扩展,使用:set nu 可以查看行数

    89 ## The COMMANDS section may have other options added to it.
     90 ##
     91 ## Allow root to run any commands anywhere
     92 root    ALL=(ALL)       ALL
     93 
     94 ## Allows members of the 'sys' group to run networking, software,
     95 ## service management apps and more.
     96 # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
     97 
:set nu



九、限制root远程登录

1、使用root用户登录服务器有一定的危险,为安全起见,我们应该禁止root远程登录,只允许普通用户登录

编辑/etc/ssh/sshd_config配置文件,找到:

[root@aming01 ~]# vi /etc/ssh/sshd_config

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10


将PermitRootLogin yes改成PermitRootLogin no,然后重启sshd服务

[root@aming01 ~]# systemctl restart sshd.service


2、限制root远程登录

修改配置文件/etc/ssh/sshd_config

[root@aming01 ~]# vi /etc/ssh/sshd_config

找到:

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

将#PermitRootLogin yes修改为PermitRootLogin no,保存文件,重启sshd服务

[root@aming01 ~]# 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/sample.sudoers

sudo不错的教程 http://www.jianshu.com/p/51338e41abb7

sudo -i也可以登录到root吗 http://www.apelearn.com/bbs/thread-6899-1-1.html


猜你喜欢

转载自blog.csdn.net/iamfishhh/article/details/80385642