学习linux 5

3.1用户配置文件和密码配置文件

  1. 用户配置文件 /etc/passwd

    [root@qklinux-01 ~]# cat /etc/passwd
    root❌0:0:root:/root:/bin/bash
    bin❌1:1:bin:/bin:/sbin/nologin
    qkai❌1000:1000::/home/qkai:/bin/bash
    user1❌1001:1001::/home/user1:/bin/bash

/etc/passwd 文件每一行代表一个用户,分为七个字段每一个字段用冒号隔开 第一段是用户名
第二个字段存放的是该账号的口令,由于/etc/passwd文件对所有用户都可读,为了安全将其存放在、etc/shadow中,这里用X代替
第三个字段为一个数字,这个数字代表用户标识号,也称为uid。 第四个字段表示组标识号gid,记录用户所属的用户组
第五个字段为注释说明,记录该用户的一些属性 第六个字段为用户的家目录,当用户登录时就在这个目录下
第七个字段为用户的shell,用户在登录后要启动一个进程,用来将用户下达的指令传给内核,这就是shell。Linux的shell有sh.
csh.ksh.tcsh.bash等多种。/sbin/nologin不能登录

密码配置文件/etc/shadow

[root@qklinux-01 ~]# cat /etc/shadow
root:$6$K30TDNPt$pF7RRfurbmsam3cKzv0V0lyuaheCeuxmwCdBsMQCQZj1x26./3iaNXJQaTO4GITZNZrstvCrxbXLdin0Q27Cd.:17965:0:99999:7:::

/etc/shadow同样用冒号分割成9个字段
第一个字段为用户名
第二个字段为用户密码,
如果为空则登录不需要密码
如果是*说明用户是禁用状态
如果是X说明用户不能登陆系统
如果是双叹号表示这个密码过期
第三个字段为最近一次改密码距离1970年1月1总共多少天 第四字段要过多少天才可以修改密码,默认为0,
第五个字段为密码多少天后到期,多少天内必须修改密码
第六个字段密码到期的警告期限
第七个字段账号失效期限,
第八个字段账号的生命周期如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
第九个字段保留字段

3.2用户组管理
新增加一个组 groupadd XX
比如groupadd grp1

 [root@qklinux-01 ~]# groupadd grp1
[root@qklinux-01 ~]# tail -n1 /etc/group
grp1:x:1002:

如果不加-g选项,则按照系统默认的gid创建组gid从1000开始

[root@qklinux-01 ~]# groupadd -g 1005 grp2
[root@qklinux-01 ~]# tail -n3 /etc/group
slocate:x:21:
grp1:x:1002:
grp2:x:1005:

删除一个组groupdel groupname

[root@qklinux-01 ~]# groupdel grp1
[root@qklinux-01 ~]# tail -n3 /etc/group
user1:x:1001:
slocate:x:21:
grp2:x:100

非空的组是不能删除,一个组中如果有账户除非账户才能删除组

[root@qklinux-01 ~]# groupdel user1
groupdel:不能移除用户“user1”的主组

3.3用户管理

命令useradd是增加用户
-u表示自定义uid
-g表示新增用户属于已经存在的某个组,后面可以跟组id 也可以跟组名
-d 表示自定义用户的家目录
-M表示不建立家目录
-s 表示自定义shell

创建用户user2

[root@qklinux-01 ~]# useradd user2
[root@qklinux-01 ~]# tail -n2 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
指定用户uid为1004 组为grp2创建user3
[root@qklinux-01 ~]# useradd -u 1004 -g grp2 user3
[root@qklinux-01 ~]# tail -n3 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash

指定uid gid 家目录和sehll创建用户user4

[root@qklinux-01 ~]# useradd -u 1006 -g grp2 -d /home/qkai111 -s /sbin/nologin user4
[root@qklinux-01 ~]# tail -n3 /etc/passwd
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/qkai111:/sbin/nologin

不指定创建用户家目录创建user5

[root@qklinux-01 ~]# useradd -M user5
[root@qklinux-01 ~]# tail -n3 /etc/passwd
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/qkai111:/sbin/nologin
user5:x:1007:1007::/home/user5:/bin/bash
[root@qklinux-01 ~]# ls /home/
qkai  qkai111  user1  user2  user

删除用户userdel
直接删除一个用户 不会删除用户家目录

[root@qklinux-01 ~]# userdel user8
[root@qklinux-01 ~]# ls /home/
qkai  qkai111  user1  user2  user3  user6  user7  user8

加上-r选项 删除用户的同时删除用户家目录

[root@qklinux-01 ~]# userdel -r user7
[root@qklinux-01 ~]# ls /home/
qkai  qkai111  user1  user2  user3  user6  user8

3.4 usermod命令
使用id命令查看用户的uid gid和扩展组的gid

[root@qklinux-01 ~]# id qkai
uid=1000(qkai) gid=1000(qkai) 组=1000(qkai)

usermod是用来修改用户的属性
更改用户的uid

Usermod –u 111 username

更改用户gid

[root@qklinux-01 ~]# usermod -g grp2 qkai
[root@qklinux-01 ~]# !id
id qkai 
uid=1000(qkai) gid=1005(grp2) 组=1005(grp2),1007(user5)

-d选项更改用户的家目录

usermod –d /home/xxx username

-s 更改用户的shell

usermod –s /sbin/nologin username

-G 扩展组 给用户指定多个组
给用户同时添加grp2和user5组

[root@qklinux-01 ~]# usermod -G grp2,user5 qkai
[root@qklinux-01 ~]# id qkai 
uid=1000(qkai) gid=1000(qkai) 组=1000(qkai),1005(grp2),1007(user5)

3.5用户密码管理
修改用户密码 passwd

[root@qklinux-01 ~]# passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码未提供
重新输入新的 密码:
密码未提
[root@qklinux-01 ~]# passwd qkai
更改用户 qkai 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

-l选项 锁定用户密码 和usermod –L一样

[root@qklinux-01 ~]# passwd -l user5
锁定用户 user5 的密码 。
passwd: 操作成功
-u选项 解锁用户 跟usermod –U一样
[root@qklinux-01 ~]# passwd -u qkai
解锁用户 qkai 的密码。
passwd: 操作成功

–stdin选项 直接更改用户密码 也可以用echo passwd |passwd –stdin username

[root@qklinux-01 ~]# passwd --stdin user5
更改用户 user5 的密码 。
123456
passwd:所有的身份验证令牌已经成功更新。
[root@qklinux-01 ~]# echo "111222" |passwd --stdin user5
更改用户 user5 的密码 。
passwd:所有的身份验证令牌已经成功更新。

3.6 mkpasswd命令
安装mkpasswd 这个命令生成随机字符串

root@qklinux-01 ~]# yum install -y expect

默认生成随机密码

[root@qklinux-01 ~]# mkpasswd
dqDR]32kr

-l选项 指定生成字符串的长度

[root@qklinux-01 ~]# mkpasswd -l 12
qo7xy=hSB7db

-s选项 指定生成特殊符号数量

[root@qklinux-01 ~]# mkpasswd -l 12 -s 3
u4Jsz%\\hw5O
[root@qklinux-01 ~]# mkpasswd -l 12 -s 0
Iejrh75dvQau

3.7 su命令
用来切换用户命令 su

[root@qklinux-01 ~]# whoami
root
[root@qklinux-01 ~]# su - qkai
上一次登录:一 3月 18 20:39:10 CST 2019pts/1 上
[qkai@qklinux-01 ~]$ whoami
Qkai

使用su命令时 加上- 可以加载要切换到的用户的环境变量和配置

[root@qklinux-01 ~]# su - qkai
上一次登录:五 3月 22 00:38:54 CST 2019pts/0 上
[qkai@qklinux-01 ~]$ pwd
/home/qkai

更改用户的家目录 如果家目录不存在 则不能切换到这个用户下去 需要复制系统的家目录模板到指定路径下去

切换user5为例

[root@qklinux-01 ~]# su - user5
上一次登录:五 3月 22 00:48:21 CST 2019pts/0 上
-bash-4.2$ pwd
/home/user5

查看模板文件

[root@qklinux-01 ~]# ls -la /etc/skel/
总用量 24
drwxr-xr-x.  2 root root   62 4月  11 2018 .
drwxr-xr-x. 74 root root 8192 3月  22 00:47 ..
-rw-r--r--.  1 root root   18 10月 31 01:07 .bash_logout
-rw-r--r--.  1 root root  193 10月 31 01:07 .bash_profile
-rw-r--r--.  1 root root  231 10月 31 01:07 .bashrc

拷贝文件到user5家目录下 并且修改权限

[root@qklinux-01 ~]# cp /etc/skel/.bash* /home/user5/
[root@qklinux-01 ~]# chown -R user5:user5 !$
chown -R user5:user5 /home/user5/
[root@qklinux-01 ~]# su - user5
上一次登录:五 3月 22 00:50:08 CST 2019pts/0 上
[user5@qklinux-01 ~]$ pwd
/home/user5

3.8 sudo命令
1.sudo命令用来以其它身份来执行命令,预设的身份为root
配置文件 /etc/sudoers
使用visudo来配置文件

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

在下面再加一行内容

qkai    ALL=(ALL)    /usr/bin/ls, /usr/bin/mv, /usr/bin/cat 

这行的意思是qkai用户可以在终端上以root权限运行这三个命令
保存退出 切换到qkai用户 ,看可以用sudo命令执行这三个在root下的操作

[root@qklinux-01 ~]# su - qkai
上一次登录:五 3月 22 01:24:03 CST 2019pts/0 上
[qkai@qklinux-01 ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[qkai@qklinux-01 ~]$ sudo /usr/bin/ls /root/
111	     1.txt~  anaconda-ks.cfg.1
123	     234     qkai2
1_heard.ttx  2.txt   yum.log
1_sorft.txt  3.txt   新建文本文档.txt
[qkai@qklinux-01 ~]$ cat /root/ 3.txt
cat: /root/: 权限不够
cat: 3.txt: 没有那个文件或目录
[qkai@qklinux-01 ~]$ sudo /usr/bin/cat /root/3.txt

给user5用户设置不输入密码使用sudo命令
进入配置文件visudo添加

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

保存切换命令试验

root@qklinux-01 ~]# visudo
[root@qklinux-01 ~]# su - user5
上一次登录:五 3月 22 00:53:59 CST 2019pts/0 上
[user5@qklinux-01 ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[user5@qklinux-01 ~]$ sudo ls /root/
111	     1.txt~  anaconda-ks.cfg.1
123	     234     qkai2
1_heard.ttx  2.txt   yum.log
1_sorft.txt  3.txt   新建文本文档.txt

用户别名配置,visudo找到配置
在这里插入图片描述
添加配置

Cmnd_Alias QKAI_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat

测试是可行

[root@qklinux-01 ~]# visudo
[root@qklinux-01 ~]# su - qkai
上一次登录:五 3月 22 01:25:24 CST 2019pts/0 上
[qkai@qklinux-01 ~]$ sudo ls /root/
[sudo] qkai 的密码:
111	     1.txt~  anaconda-ks.cfg.1
123	     234     qkai2
1_heard.ttx  2.txt   yum.log
1_sorft.txt  3.txt   新建文本文档.txt

也可以把用户放到一个组配置 使用sudo命令

 %wheel        ALL=(ALL)       NOPASSWD: ALL

3.9限制root远程登录

在生产环境中,为了安全 应该禁止root用户远程登录。如果有需求
要用到root权限,可以用sudo设置,授权给普通用户
限制root远程登录 只是用普通用户登录, 再使用su- 切换到root
编辑visudo配置文件 qkai用户就可以使用 sudo su - 切换到root

#User_Alias ADMINS = jsmith, mikem
User_Alias ADMINS= qkai, user5, user6
QKAI    ALL=(ALL)      NOPASSWD: /usr/bin/su
[root@qklinux-01 ~]# su - qkai
上一次登录:五 3月 22 01:49:27 CST 2019pts/0 上
[qkai@qklinux-01 ~]$ sudo su -
上一次登录:五 3月 22 09:41:32 CST 2019从 192.168.18.1pts/1 上

编辑配置/etc/ssh/sshd_config 允许root用户远程登录

[root@qklinux-01 ~]# vi /etc/ssh/sshd_config
#PermitRootLogin yes改为PermitRootLogin no

保存退出后 重启sshd服务

[root@qklinux-01 ~]# systemctl restart sshd.service

配置完后 当root用户退出后就不能用远程工具登陆了

猜你喜欢

转载自blog.csdn.net/qinaki/article/details/88734596