3.1 用户配置文件和密码配置文件 3.2 用户组管理 3.3 用户管理 3.4 usermod命令 3.5 用户密码管理 3.6 mkpasswd命令 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录
扩展 sudo与su比较 http://www.apelearn.com/bbs/thread-7467-1-1.html sudo配置文件样例 www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoer sudo不错的教程 http://www.jianshu.com/p/51338e41abb7 sudo -i 也可以登录到root吗?http://www.apelearn.com/bbs/thread-6899-1-1.html
[root@linux-02 ~]# 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:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
第一列到第七列 | 属性 |
---|---|
root | 用户 |
x | 密码是x或者!代表此用户无法登陆 |
0 | 用户的UID |
0 | 用户的GID |
root | 用户注释,没有什么特别意思 |
/root | 用户的家目录 |
/bin/bash | 用户自己的shell |
[root@linux-02 ~]# cat /etc/shadow
root:$6$aJD4SIDzLG6d.1PV$KJJK5vR3GgaFaUs1TzJsgahf1oDknBFzhMVq0vS7GygUDV4cxjOwFsQJ4vvphqHjaSZ3TQ/eZ/lVrRdGcKZGQ1::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
shutdown:*:17834:0:99999:7:::
halt:*:17834:0:99999:7:::
mail:*:17834:0:99999:7:::
operator:*:17834:0:99999:7:::
games:*:17834:0:99999:7:::
ftp:*:17834:0:99999:7:::
nobody:*:17834:0:99999:7:::
systemd-network:!!:17968::::::
dbus:!!:17968::::::
polkitd:!!:17968::::::
sshd:!!:17968::::::
postfix:!!:17968::::::
第一列到第九列 | 属性 |
---|---|
bin | 帐户名 |
* | 密码,经过编译 |
17834 | 最近更动密码的日期,上次更改密码到1970年1月1日的天数 |
0 | 记录了这个帐号的密码需要经过几天才可以被变更!是0的话,表示密码随时可以更动的意思 |
99999 | 密码需要修改的天数,过了这个天数不可以用,99999 的话,那就表示,密码不需要变更 |
7 | 密码需要变更期限前的警告期限 |
空 | 密码过期的恕限时间 |
空 | 帐号失效日期,账号生命周期 |
空 | 保留:最后一个栏位是保留的,看以后有没有新功能加入。没有什么意思。 |
useradd 命令参数详解的,如下表格:
参数 | 详解 |
---|---|
-g | 指定用户的所属组 |
-u | 指定用户的UID |
-d | 指定用户的家目录 |
-M | 不创建用户的家目录 |
-s | 指定用户登陆的shell |
-G | 指定用户的组,可以添加多个: group;group1;group2 |
userdel username 删除用户不删除用户的家目录; userdel -r username 删除用户同时删除用户的家目录;
[root@linux-01 ~]# !tail
tail -n3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
xiha1:x:1000:1000::/home/xiha1:/bin/bash
xiha2:x:1010:1010::/home/xiha2:/bin/nologin
[root@linux-01 ~]# ll /home/
总用量 0
drwxr-xr-x. 2 root root 6 3月 20 05:36 111
drwx------. 2 xiha1 xiha1 62 3月 20 19:04 xiha1
[root@linux-01 ~]# userdel -r xiha1
[root@linux-01 ~]# ll /home/
总用量 0
drwxr-xr-x. 2 root root 6 3月 20 05:36 111
[root@linux-01 ~]# !tail
tail -n3 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
xiha2:x:1010:1010::/home/xiha2:/bin/nologin
[root@linux-01 ~]#
[root@linux-01 /]# head -n5 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
/etc/group中总共有4个字段,其中每个字段的含义: (1)用户组名 (2)用户组密码 (3)用户组GID (4)用户组下包含的用户名
[root@linux-01 /]# head -n5 /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
/etc/gshadow 中总共有4个字段,其中每个字段的含义: (1)用户组名 (2)用户组密码 (3)表示这个组的管理员是哪个用户 (4)用于显示这个用户组中有哪些附加用户
[root@linux-01 ~]# groupadd xiha #创建一个xiha的组
[root@linux-01 ~]# tail -n2 /etc/group
slocate:x:21:
xiha:x:1002:
[root@linux-01 ~]# groupadd -g 999 xiha1 # -g选项可以指定gid,centos 7建议大于1000以上。
groupadd:GID “999”已经存在
[root@linux-01 ~]# groupadd -g 1111 xiha1
[root@linux-01 ~]# tail -n2 /etc/group
xiha:x:1002:
xiha1:x:1111:
[root@linux-01 ~]# groupdel xiha1 # 删除用户组必须事用户组下没有用户,不然会提示删除报错。类似于rmdik命令。
[root@linux-01 ~]# tail -n2 /etc/group
slocate:x:21:
xiha:x:1002:
usermod的参数以及含义如下表格
参数 | 详解 |
---|---|
-a | 把用户追加到某些组中,仅与-G选项一起使用 |
-c | 修改/etc/passwd文件第五段comment |
-d | 修改用户的家目录通常和-m选项一起使用 |
-e | 指定用户帐号禁用的日期,格式YY-MM-DD |
-f | 用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1 |
-g | 修改用户的gid,改组一定存在 |
-G | 把用户追加到某些组中,仅与-a选项一起使用 |
-l | 修改用户的登录名称 |
-L | 锁定用户的密码 |
-m | 移动用户家目录下的内容到新的家目录,通常和-d选项一起使用 |
-s | 修改用户的shell |
-u | 修改用户的uid,该uid必须唯一 |
-U | 解锁用户的密码 |
[root@linux-01 ~]# tail -n2 /etc/passwd
xihaji:x:1000:1000::/home/xihaji:/bin/bash
xihaji2:x:1001:1001::/home/xihaji_2:/bin/bash
[root@linux-01 ~]# usermod -d /home/xihaji2 xihaji2
[root@linux-01 ~]# tail -n2 /etc/passwd
xihaji:x:1000:1000::/home/xihaji:/bin/bash
xihaji2:x:1001:1001::/home/xihaji2:/bin/bash
密码设置原则,(请勿使用和自己真实信息相关的一些信息做为密码):
## 之前在讲set_uid的时候有讲到过此命令是有set_uid的权限,可以让其他用户临死有修改所属主的权限。
[root@linux-01 home]# ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /bin/passwd
## 修改root用户密码
[root@linux-01 home]# passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 7 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
## 修改xihaji用户的密码 :passwd username
[root@linux-01 home]# passwd xihaji
更改用户 xihaji 的密码 。
新的 密码:
无效的密码: 密码少于 7 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
## 查看下密码配置文件
[root@linux-01 home]# tail -n3 /etc/shadow # 密码配置文件的第二行如果是!代表此用户无法登陆
sshd:!!:17968::::::
postfix:!!:17968::::::
xihaji:$6$GnBccwFA$bSAbk9uR5UVIO/Kr3tLLZRY9n6sJPEqIYjCfQUdOnZSLePD6M6IEdxtgrEH2aQ3FiY46LksZ7wwkjOsHGcoTB.:17975:0:99999:7:::
## passwd 可以锁定一个用户,-l 选项
[root@linux-01 home]# passwd -l xihaji
锁定用户 xihaji 的密码 。
passwd: 操作成功
[root@linux-01 home]# tail -n3 /etc/shadow # 锁定的用户第二列前会加两个!号
sshd:!!:17968::::::
postfix:!!:17968::::::
xihaji:!!$6$GnBccwFA$bSAbk9uR5UVIO/Kr3tLLZRY9n6sJPEqIYjCfQUdOnZSLePD6M6IEdxtgrEH2aQ3FiY46LksZ7wwkjOsHGcoTB.:17975:0:99999:7:::
## passwd 解锁一个用户,-u 选项
[root@linux-01 home]# passwd -u xihaji
解锁用户 xihaji 的密码。
passwd: 操作成功
[root@linux-01 home]# tail -n3 /etc/shadow
sshd:!!:17968::::::
postfix:!!:17968::::::
xihaji:$6$GnBccwFA$bSAbk9uR5UVIO/Kr3tLLZRY9n6sJPEqIYjCfQUdOnZSLePD6M6IEdxtgrEH2aQ3FiY46LksZ7wwkjOsHGcoTB.:17975:0:99999:7:::
## passwd --stdin username 用法 ,明文显示密码
[root@linux-01 home]# passwd --stdin xihaji
更改用户 xihaji 的密码 。
123456
passwd:所有的身份验证令牌已经成功更新。
[root@linux-01 home]# echo "111222" | passwd --stdin xihaji
更改用户 xihaji 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@linux-01 home]# echo -e "111222\n111222" | passwd xihaji
更改用户 xihaji 的密码 。
新的 密码:无效的密码: 密码少于 8 个字符
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
[root@linux-01 home]#
## 系统中没有mkpasswd的这个命令,需要安装expect ##
[root@linux-01 home]# yum -y install expect
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.cn99.com
* updates: mirrors.163.com
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/2): extras/7/x86_64/primary_db | 187 kB 00:00:00
(2/2): updates/7/x86_64/primary_db | 3.3 MB 00:00:00
正在解决依赖关系
--> 正在检查事务
---> 软件包 expect.x86_64.0.5.45-14.el7_1 将被 安装
--> 正在处理依赖关系 libtcl8.5.so()(64bit),它被软件包 expect-5.45-14.el7_1.x86_64 需要
--> 正在检查事务
---> 软件包 tcl.x86_64.1.8.5.13-8.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=====================================================================================================================================
Package 架构 版本 源 大小
=====================================================================================================================================
正在安装:
expect x86_64 5.45-14.el7_1 base 262 k
为依赖而安装:
tcl x86_64 1:8.5.13-8.el7 base 1.9 M
事务概要
=====================================================================================================================================
安装 1 软件包 (+1 依赖软件包)
总下载量:2.1 M
安装大小:4.9 M
Downloading packages:
(1/2): expect-5.45-14.el7_1.x86_64.rpm | 262 kB 00:00:00
(2/2): tcl-8.5.13-8.el7.x86_64.rpm | 1.9 MB 00:00:00
-------------------------------------------------------------------------------------------------------------------------------------
总计 5.0 MB/s | 2.1 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 1:tcl-8.5.13-8.el7.x86_64 1/2
正在安装 : expect-5.45-14.el7_1.x86_64 2/2
验证中 : 1:tcl-8.5.13-8.el7.x86_64 1/2
验证中 : expect-5.45-14.el7_1.x86_64 2/2
已安装:
expect.x86_64 0:5.45-14.el7_1
作为依赖被安装:
tcl.x86_64 1:8.5.13-8.el7
完毕!
## 生成密码 ##
[root@linux-01 home]# mkpasswd # 默认生成一个9位的密码。
O3sSjh6c+
[root@linux-01 home]# mkpasswd -l 12 # -l b表示长,可以指定12位。
gUF8sy7on|kk
[root@linux-01 home]# mkpasswd -l 12 -s 0 # -s 表示是否需要特殊字符,0表示不包含特殊字符。
vaac7AchxyS2
## 切换用户 ##
[root@linux-01 home]# su xihaji
[xihaji@linux-01 home]$ pwd
/home
[xihaji@linux-01 home]$ exit
exit
[root@linux-01 home]# su - xihaji # 加上 - 可以切换到xihaji用户的家目录
上一次登录:四 3月 21 04:30:59 CST 2019pts/0 上
[xihaji@linux-01 ~]$ pwd
/home/xihaji
## 指定切换一个用户执行一条命令,而不进如用户 ##
[root@linux-01 home]# su - -c "touch /home/xihaji/1.txt" xihaji # -c 表示指定一条命令
[root@linux-01 home]# ll /home/xihaji/1.txt # 我们可以看到此命令执行后文件的所属主和所属组都是用户本身。
-rw-rw-r--. 1 xihaji xihaji 0 3月 21 04:34 /home/xihaji/1.txt
[root@linux-01 home]#
## 创建一个用户,不创建用户的家目录,登陆此用户后的用户不在用户的家目录,创建一个用户的家目录,系统已经备份好一份 shell,在/etc/skel/下,.开头的文件是隐藏文件。 ##
[root@linux-01 home]# useradd -M xihaji2
正在创建信箱文件: 文件已存在
[root@linux-01 home]# ll
总用量 0
drwxr-xr-x. 2 root root 6 3月 20 05:36 111
drwx------. 2 xihaji xihaji 96 3月 21 04:34 xihaji
[root@linux-01 home]# tail -n2 /etc/passwd
xihaji:x:1000:1000::/home/xihaji:/bin/bash
xihaji2:x:1001:1001::/home/xihaji2:/bin/bash
-bash-4.2$ pwd
/home
-bash-4.2$ ll
总用量 0
drwxr-xr-x. 2 root root 6 3月 20 05:36 111
drwx------. 2 xihaji xihaji 96 3月 21 04:34 xihaji
-bash-4.2$ exit
登出
[root@linux-01 home]# mkdir xihaji2
[root@linux-01 home]# chown -R xihaji2:xihaji2 /home/xihaji2/
[root@linux-01 home]# ll -d /home/xihaji2/
drwxr-xr-x. 2 xihaji2 xihaji2 62 3月 21 04:53 /home/xihaji2/
[root@linux-01 home]# cp /etc/skel/.bash* /home/xihaji2/
[root@linux-01 home]# chown -R xihaji2:xihaji2 /home/xihaji2/
[root@linux-01 home]# su - xihaji2 # 进入用户xihaji2
上一次登录:四 3月 21 04:53:56 CST 2019pts/0 上
[root@linux-01 home]# ll -d /home/xihaji2/
drwxr-xr-x. 2 xihaji2 xihaji2 62 3月 21 04:53 /home/xihaji2/
[xihaji2@linux-01 ~]$ ll -a
总用量 12
drwxr-xr-x. 2 xihaji2 xihaji2 62 3月 21 04:53 .
drwxr-xr-x. 5 root root 46 3月 21 04:52 ..
-rw-r--r--. 1 xihaji2 xihaji2 18 3月 21 04:53 .bash_logout
-rw-r--r--. 1 xihaji2 xihaji2 193 3月 21 04:53 .bash_profile
-rw-r--r--. 1 xihaji2 xihaji2 231 3月 21 04:53 .bashrc
[xihaji2@linux-01 ~]$ pwd
/home/xihaji2
sudo配置文件:/etc/sudoers 打开配置文件不能用vim,vim 编辑器没有排错功能,使用命令visudo。 扩展阅读:https://www.jianshu.com/p/51338e41abb7
[root@linux-01 home]# visudo
……前面省略
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
说明:
第一个字段:root为能使用sudo命令的用户;
第二个字段:第一个ALL为允许使用sudo的主机,第二个括号里的ALL为使用sudo后以什么身份(目的用户身份)来执行命令;
第三个字:ALL为以sudo命令允许执行的命令;
上列解释: xihaji2 ALL=(root) /usr/sbin/ls
表示允许xihaji2用户从任何主机登录,以root的身份执行/usr/sbin/ls命令。
## 给xihaji2用户设置允许使用root的权限,来查看下效果 ##
[root@linux-01 home]# su - xihaji2
上一次登录:四 3月 21 17:36:52 CST 2019pts/0 上
[xihaji2@linux-01 ~]$ sudo ls /root/
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] xihaji2 的密码:
1.txt anaconda-ks.cfg
服务器root用户不可以直接远程,为了保证服务器得安全性,那普通用户想要执行root用户权限得命令,普通用户不知道root用户的密码,这个时候怎么办? 这个时候可以用到visudo了,修改sudoers:
## 禁止用户远程登陆配置文件 /etc/ssh/sshd_config ##
[root@linux-01 home]# vim /etc/ssh/sshd_config
#PermitRootLogin yes # 找到文件中的这一行,这一行控制root用户可以远程登陆,yes改为no
PermitRootLogin no # 修改之后保存,重启sshd服务
[root@linux-01 home] systemctl restart sshd.service # 重启之后在新建shell窗口远程登陆root会提示无法登陆
## 配置了禁止root用户远程登陆后,我们需要修改sudoers文件 ##
[root@linux-01 ~]# visudo
## 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 ADMINS = xihaji2 # 增加一条虚拟用户,把普通用户加入到此用户下面
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
ADMINS ALL=(ALL) /usr/bin/su # 给此虚拟用户增加root用户的权限
Connecting to 192.168.141.128:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Thu Mar 21 18:52:04 2019 from 192.168.141.1
## sudo su - 第一次使用命令的时候需要输入此用户的密码,后续就不会输入密码 ##
[xihaji2@linux-01 ~]$ sudo su -
[sudo] xihaji2 的密码:
上一次登录:四 3月 21 18:52:12 CST 2019pts/0 上
[root@linux-01 ~]#
扩展阅读:https://www.jianshu.com/p/51338e41abb7
解析:(通过网上搜索,搜到以下答案)