本文主要是介绍学习笔记0321----linux基本命令(三)(用户和用户组管理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
linux基本命令
- 预习内容
- 1.用户配置文件、密码配置文件
- 1.1 用户配置文件 /etc/passwd
- 1.2 密码配置文件 /etc/shadow
- 1.3 创建用户useradd 删除用户userdel
- 2.用户组配置文件、组密码配置文件
- 2.1 用户组 /etc/group
- 2.2 用户组密码 /etc/gshadow
- 2.3 创建用户组 groupadd 删除用户组 groupdel
- 3. 修改用户账户信息 usermod
- 4.修改密码 passwd
- 5.生成密码工具 mkpasswd
- 6.切换用户 su - username
- 7.sudo 为非根用户授予根用户的权限
- 8. 限制root用户远程登陆
- 课后总结
- 1.用户管理在工作中如何体现?
- 2.密码配置文件中第二列密码的配置项
- 3. sudo的配置文件/etc/sudoers
- 4.问题:把普通用户锁在家目录,不让切换目录,应该怎样操作?
预习内容
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
1.用户配置文件、密码配置文件
1.1 用户配置文件 /etc/passwd
[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 |
1.2 密码配置文件 /etc/shadow
[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 | 密码需要变更期限前的警告期限 |
空 | 密码过期的恕限时间 |
空 | 帐号失效日期,账号生命周期 |
空 | 保留:最后一个栏位是保留的,看以后有没有新功能加入。没有什么意思。 |
1.3 创建用户useradd 删除用户userdel
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 ~]#
2.用户组配置文件、组密码配置文件
2.1 用户组 /etc/group
[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)用户组下包含的用户名
2.2 用户组密码 /etc/gshadow
[root@linux-01 /]# head -n5 /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
/etc/gshadow 中总共有4个字段,其中每个字段的含义:
(1)用户组名
(2)用户组密码
(3)表示这个组的管理员是哪个用户
(4)用于显示这个用户组中有哪些附加用户
2.3 创建用户组 groupadd 删除用户组 groupdel
[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:
3. 修改用户账户信息 usermod
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
4.修改密码 passwd
密码设置原则,(请勿使用和自己真实信息相关的一些信息做为密码):
- 长度设置10位+
- 包含数字
- 大小写字母
- 特殊符号
## 之前在讲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]#
5.生成密码工具 mkpasswd
## 系统中没有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
6.切换用户 su - username
## 切换用户 ##
[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
7.sudo 为非根用户授予根用户的权限
sudo配置文件:/etc/sudoers
打开配置文件不能用vim,vim 编辑器没有排错功能,使用命令visudo。
扩展阅读:https://www.jianshu.com/p/51338e41abb7
[root@linux-01 home]# visudo
……前面省略
## Allow root to run any commands anywhereroot 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
8. 限制root用户远程登陆
服务器root用户不可以直接远程,为了保证服务器得安全性,那普通用户想要执行root用户权限得命令,普通用户不知道root用户的密码,这个时候怎么办?
这个时候可以用到visudo了,修改sudoers:
- 把普通用户添加到一个用户组,User_Alias ADMINS = jsmith, mikem
- 给这个用户群组设置执行su - 权限,root用户在使用su -是不需要输入密码的。
Allow root to run any commands anywhere root
ALL=(ALL) /usr/bin/su- 这样即可实现root用户无法远程登陆,普通用户可以使用 sudo su - 的权限切换到root用户。
## 禁止用户远程登陆配置文件 /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 ~]#
课后总结
1.用户管理在工作中如何体现?
- 创建一些项目的时候应该要用到,创建的项目一般会以项目名来作为用户;(这个是我工作的时候遇到的)
- 服务器打开给开发查看日志的时候,这时候我们可能会需要创建一个readonly账号给开发同学使用,通过配置sudo,给新建的readonly账号设置一定的权限。
2.密码配置文件中第二列密码的配置项
- “*” "!"代表帐号被锁定,
- “!!”表示这个密码已经过期了。
- 字符串是以 6 6 6开头的,表明是用SHA-512加密的, 1 1 1 表明是用MD5加密的、 2 2 2 是用Blowfish加密的、 5 5 5是用 SHA-256加密的。
3. sudo的配置文件/etc/sudoers
- 配置文件字段 root ALL=(ALL) ALL
- root :用户,用户组,别名用户,别名组
- 第一个ALL:登陆到主机的:主机名,hostname,ip段
- 第二个ALL:身份,如果没有设置,默认root身份
- 第三个ALL:和第二个ALL直接可以设置NOPASSWD;命令必须是绝对路劲,多个命令之间使用“,”号
扩展阅读:https://www.jianshu.com/p/51338e41abb7
4.问题:把普通用户锁在家目录,不让切换目录,应该怎样操作?
解析:(通过网上搜索,搜到以下答案)
- chroot限制普通用户登录特定目录 https://blog.51cto.com/ttxsgoto/1793409
- linux让普通用户锁定在home家目录 http://blog.iyunv.com/65.html
- 下图是老师的解答方案。
这篇关于学习笔记0321----linux基本命令(三)(用户和用户组管理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!