5.用户管理

1.1如何设置开机启动

1./etc/rc.local
2.通过chkconfig管理
[root@oldboyedu-02 init.d]# pwd
/etc/init.d
[root@oldboyedu-02 init.d]# cat oldgirld 
# chkconfig: 2345 99 99        -----2345是被Linux的那些运行级别下启动,99是开机的顺序,后面99是关机的顺序,99是最大的
echo "oldgirl"
[root@oldboyedu-02 init.d]# chmod u+x oldgirld 
[root@oldboyedu-02 init.d]# chkconfig --add oldgirld 
[root@oldboyedu-02 init.d]# chkconfig|grep oldgirl
oldgirld        0:off   1:off   2:on    3:on    4:on    5:on    6:off

1.2chkconfig背后的原理

[root@oldboyedu-02 rc3.d]# chkconfig oldgirld on
[root@oldboyedu-02 rc3.d]# ls -l /etc/rc3.d/|grep oldgirl
lrwxrwxrwx  1 root root 18 Feb 28 19:29 S99oldgirld -> ../init.d/oldgirld

[root@oldboyedu-02 rc3.d]# chkconfig oldgirld off
[root@oldboyedu-02 rc3.d]# ls -l /etc/rc3.d/|grep oldgirl
lrwxrwxrwx  1 root root 18 Feb 28 19:30 K99oldgirld -> ../init.d/oldgirld
S -start
K -kill

[root@oldboyedu-02 rc3.d]# ln -s /etc/init.d/oldgirld S99oldgirld
[root@oldboyedu-02 rc3.d]# ls -l /etc/rc3.d/|grep oldgirld
lrwxrwxrwx  1 root root 20 Feb 28 19:36 S99oldgirld -> /etc/init.d/oldgirld
[root@oldboyedu-02 rc3.d]# chkconfig --list |grep oldgirld
oldgirld        0:off   1:off   2:off   3:on    4:off   5:off   6:off

[root@oldboyedu-02 rc3.d]# rm -rf S99oldgirld 
[root@oldboyedu-02 rc3.d]# ls -l /etc/rc3.d/|grep oldgirld
[root@oldboyedu-02 rc3.d]# chkconfig --list |grep oldgirld
oldgirld        0:off   1:off   2:off   3:off   4:off   5:off   6:off

1.3用户分类与用户相关文件

1.3.1用户分类

root用户 UID 0
虚拟用户 UID 0-499
普通用户 UID 500+

每个程序、服务运行的时候需要一个用户
虚拟用户不需要用来登录系统
用户的命令解释器为/sbin/nologin

1.3.2用户相关文件

1./etc/passwd 用户信息

qq:x:502:502::/home/qq:/bin/bash
第一列:用户名
第二列:为空说明没密码。可随便登录
第三列:UID
第四列:GID
第五列:用户的说明信息
第六列:用户的家目录
第七列:用户使用的命令解释器 shell

2./etc/shadow 用户密码信息
3. /etc/group 用户组信息
4. /etc/gshadow 用户组密码
5. /etc/default/useradd 添加用户的时候默认的信息
6. /etc/skel

1.3.3默认/bin/bash

* /sbin/nologin 虚拟用户
* /bin/sh
* /bin/dash Ubuntu默认命令解释器
* /bin/tcsh
* /bin/csh  unix系统使用

1.3.4异常处理-bash-4.1$

[root@oldboyedu-02 default]# ls -la /etc/skel/
total 20
drwxr-xr-x.  2 root root 4096 Feb 18 12:20 .
drwxr-xr-x. 78 root root 4096 Feb 28 03:37 ..
-rw-r--r--.  1 root root   18 Mar 23  2017 .bash_logout==用户退出会运行里面的命令
-rw-r--r--.  1 root root  176 Mar 23  2017 .bash_profile ==/etc/profile
-rw-r--r--.  1 root root  124 Mar 23  2017 .bashrc  ==/etc/bashrc
/etc/skel/
新用户的老家模板

异常处理
[root@oldboyedu-02 default]# su - www
[root@oldboyedu-02 ~]# rm -rf .bash*

[root@oldboyedu-02 default]# su - www
-bash-4.1$
解决方法:
[root@oldboyedu-02 www]# cp /etc/skel/.bash* /home/www/
[root@oldboyedu-02 www]# su - www
[www@oldboyedu-02 ~]$

1.3.5 .*危险之处

命令行中.*极度危险
.表示当前目录
..表示当前目录的上一级目录
表示以点开头的隐藏的文件或目录
.bash*

1.3.6用户管理命令

"useradd"

-u 指定用户的uid
-s 指定用户使用的shell 默认/bin/bash  /sbin/nologin手动添加一个虚拟用户
-M 表示不创建家目录,一般创建虚拟用户使用
-g 指定用户的组(组的名字),添加用户的时候,默认创建一个与用户名字一样的组名
-c 指定说明信息
添加一个用户alex999指定uid为888,禁止用户登录系统,不创建家目录
[root@oldboyedu-02 www]# useradd alex999 -u 888 -M -s /sbin/nologin
[root@oldboyedu-02 www]# cat /etc/passwd|grep alex
alex999:x:888:888::/home/alex999:/sbin/nologin
[root@oldboyedu-02 www]# ls -l /home/
total 20
drwx------. 2 oldboy  oldboy  4096 Feb 26 08:19 oldboy
drwx------. 2 oldgirl oldgirl 4096 Feb 22 04:01 oldgirl
 [root@oldboyedu-02 www]#
"userdel"

把/etc/passwd中前面加一个注释,就表示把该用户删除了
userdel默认不删除用户的家目录和邮箱
-r 连窝端,删除与用户有关的所有信息
"usermod"

-s 修改用户的shell
-g 修改用户的组名
-c 修改用户的说明信息
-G 修改用户属于多个组
"chown"

修改文件或目录所有者和属于的用户组
-R 递归修改文件或目录的所有者和用户组
chown oldboy  oldboy.txt 只修改所有者
chown oldboy.oldboy oldboy.txt 修改了所属用户和所属组
"groupadd"

创建用户组
-g 指定用户组的gid数字

添加一个虚拟用户mysql,指定用户的uid gid都是999
方法一:
[root@oldboyedu-02 oldboy]# useradd -M -s /sbin/nologin -u 999 mysql
[root@oldboyedu-02 oldboy]# id mysql
uid=999(mysql) gid=999(mysql) groups=999(mysql)
[root@oldboyedu-02 oldboy]# userdel mysql
[root@oldboyedu-02 oldboy]# 
方法二:
[root@oldboyedu-02 oldboy]# groupadd -g 999 mysql
[root@oldboyedu-02 oldboy]# useradd -M -s /sbin/nologin -u 999 -g mysql mysql
Creating mailbox file: File exists
[root@oldboyedu-02 oldboy]# id mysql
uid=999(mysql) gid=999(mysql) groups=999(mysql)

1.5设置密码

[root@oldboyedu-02 home]# echo '123456'|passwd --stdin
清空历史命令,防止别人看到执行的命令
[root@oldboyedu-02 home]# history -c
密码要复杂12位以上字母数字特殊字符

保存密码工具
keepass 常用
lastpass

大企业用户和密码统一管理,相当于活动目录(AD),openldap域
动态密码:动态口令,第三方提供自己开发也很简单

1.6如何让系统更安全

1)最小化安装系统,最小化安装软件,最小化运行的软件
2)保护好root,禁止root用户登录,修改远程连接端口号22
3)文件系统权限,给系统常用命令 +i,给系统配置文件+a
4)给重要文件或命令做一个指纹
给这个文件创建指纹
   如何快速对比指纹
     1)把指纹记录下来,md5sum oldboy.txt>finger.txt
     2)如何进行对比 md5sum -c finger.txt
      [root@oldboyedu-02 oldboy]# echo "oldboy">oldboy.txt
[root@oldboyedu-02 oldboy]# md5sum oldboy.txt >police.log
[root@oldboyedu-02 oldboy]# md5sum -c police.log 
oldboy.txt: OK
[root@oldboyedu-02 oldboy]# echo "oldboy">>oldboy.txt
[root@oldboyedu-02 oldboy]# md5sum -c police.log 
oldboy.txt: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
[root@oldboyedu-02 oldboy]#
   定时任务,md5sum定时检查

1.7设置账号和密码使用期限

chage:密码失效是通过此命令来管理的。

参数意思:
  -m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
  -M 密码保持有效的最大天数。
  -W 用户密码到期前,提前收到警告信息的天数。
  -E 帐号到期的日期。过了这天,此帐号将不可用。0表示立即过期,-1表示永不过期;
  -d 上一次更改的日期
  -I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
  -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
       chage命令事例
[root@oldboyedu-01 scripts]# chage -l mysql
Last password change                    : Mar 04, 2019
Password expires                    : Mar 10, 2019
Password inactive                   : never
Account expires                     : Mar 07, 2019
Minimum number of days between password change      : 0
Maximum number of days between password change      : 6
Number of days of warning before password expires   : 7

[root@oldboyedu-01 scripts]# chage -E "2019-03-09" mysql
[root@oldboyedu-01 scripts]# chage -E "-1" mysql
[root@oldboyedu-01 scripts]# chage -l mysql
Last password change                    : Mar 04, 2019
Password expires                    : Mar 10, 2019
Password inactive                   : never
Account expires                     : Mar 09, 2019
Minimum number of days between password change      : 0
Maximum number of days between password change      : 6
Number of days of warning before password expires   : 7

[root@oldboyedu-01 scripts]# chage -M 99999 mysql
[root@oldboyedu-01 scripts]# chage -l mysql
Last password change                    : Mar 04, 2019
Password expires                    : never
Password inactive                   : never
Account expires                     : never
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7

1.8用户查询命令

id 查看用户的信息

一个用户是否存在
查询用户的uid,gid
查看该用户属于哪个组
某个用户组下面有哪些用户?
查看/etc/group文件,第一列为组名,最后一列是改组下有哪些用户
w显示系统中已经远程登录的用户在做什么
last哪个用户在什么时候从哪里登录进你的系统,用户登录信息
lastlog显示Linux中所有用户最近一次远程登录的信息

5.用户管理

1.9查看系统性能的命令

w

uptime
[root@oldboyedu-02 ~]# uptime
 23:15:02 up 1 day,  8:03,  3 users,  load average: 0.03, 0.11, 0.08

top
M按照内存排序
P按照CPU排序

htop top的增强版

iotop 显示系统中每个进程使用的磁盘IO

iftop 显示系统网络流量

性能测试
查看磁盘IO,CPU和内存的使用情况
[root@oldboyedu-02 alexdir]# dd if=/dev/zero of=/oldboy/alexdir/date.txt bs=1k count=1000000000000000

1.10sudo

su 与su - 的区别
su - 系统环境变量也会跟着改变
su 环境变量还是原用户的环境变量

sudo是什么
开发人员,其他人员,想临时使用,查看系统的日志,删除软件的日志,临时添加用户
普通用户想成为root,拥有高权限

sudo -l查看当前用户是否具有sudo 权限
[oldboy@oldboyedu-02 ~]$ sudo -l

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for oldboy: 
Sorry, user oldboy may not run sudo on oldboyedu-02.

visudo给用户授予权限,具有语法检查功能
授权某一个命令 oldboy  ALL=(ALL)       /bin/ls
授权多个命令 oldboy  ALL=(ALL)       /bin/ls,/bin/touch

visudo加入如下内容
oldboy  ALL=(ALL)       /bin/ls,/bin/touch
[root@oldboyedu-02 oldboy]# visudo -c  --检查配置文件是否存在语法问题
/etc/sudoers: parsed OK
查看
[oldboy@oldboyedu-02 ~]$ sudo -l
[sudo] password for oldboy: 
Matching Defaults entries for oldboy on this host:
    !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
    LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER
    LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User oldboy may run the following commands on this host:
    (ALL) /bin/ls, (ALL) /bin/touch
[oldboy@oldboyedu-02 ~]$ sudo ls /root
anaconda-ks.cfg  CentOS-6.10-x86_64-bin-DVD1.iso  city.txt  install.log  install.log.syslog  log_18142542.log
[oldboy@oldboyedu-02 ~]$ sudo touch /root/alex.txt
[oldboy@oldboyedu-02 ~]$ sudo ls -l /root
total 73356
-rw-r--r--  1 root root        0 Feb 28 23:52 alex.txt
-rw-------. 1 root root     1061 Feb 18 12:24 anaconda-ks.cfg
-rw-r--r--  1 root root 75067605 Feb 28 23:14 CentOS-6.10-x86_64-bin-DVD1.iso
-rw-r--r--  1 root root       80 Feb 26 22:11 city.txt
-rw-r--r--. 1 root root    21736 Feb 18 12:24 install.log
-rw-r--r--. 1 root root     5890 Feb 18 12:22 install.log.syslog
-rw-r--r--  1 root root      279 Feb 18 14:27 log_18142542.log
[oldboy@oldboyedu-02 ~]$ cd /oldboy/
-bash: cd: /oldboy/: Permission denied
[oldboy@oldboyedu-02 ~]$ pwd
/home/oldboy
[oldboy@oldboyedu-02 ~]$ ls -l /oldboy/
ls: cannot access /oldboy/test: Permission denied
ls: cannot access /oldboy/2019-02-27: Permission denied
ls: cannot access /oldboy/etc.tar.gz: Permission denied
ls: cannot access /oldboy/number.txt: Permission denied
ls: cannot access /oldboy/police.log: Permission denied
ls: cannot access /oldboy/1: Permission denied

授权某个目录下面的所有命令 
oldboy  ALL=(ALL)       /bin/*   (由于该目录下有su,又能切换到root,执行root的命令了。所以要排除su)

[oldboy@oldboyedu-02 ~]$ sudo su - root
[sudo] password for oldboy: 
[root@oldboyedu-02 ~]# su - oldboy
[oldboy@oldboyedu-02 ~]$ sudo su -
[root@oldboyedu-02 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:46:26:0C  
          inet addr:10.0.0.200  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe46:260c/64 Scope:Link

排除某个命令 
oldboy  ALL=(ALL)       /bin/*,!/bin/su ()

[oldboy@oldboyedu-02 ~]$ sudo su -
Sorry, user oldboy is not allowed to execute '/bin/su -' as root on oldboyedu-02.
授权所有命令并且不需要密码
oldboy  ALL=(ALL)       NOPASSWD: /bin/*,!/bin/su
下面是不需要密码的情况
[oldboy@oldboyedu-02 ~]$ sudo -l
Matching Defaults entries for oldboy on this host:
    !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
    LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER
    LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User oldboy may run the following commands on this host:
    (ALL) NOPASSWD: /bin/*, (ALL) !/bin/su
[oldboy@oldboyedu-02 ~]$ sudo -i
[root@oldboyedu-02 ~]# su - oldboy
下面是需要密码的情况
[oldboy@oldboyedu-02 ~]$ sudo -l
[sudo] password for oldboy: 
[oldboy@oldboyedu-02 ~]$ sudo -i
[sudo] password for oldboy:
授权所有命令
oldboy  ALL=(ALL)       ALL

其中,ALL=(ALL)
第一个ALL,意思是能在哪些机器上运行sudo
第二个ALL,意思是以谁的身份运行sudo

1.11记录用户的操作,行为/日志审计

齐治的堡垒机 硬件产品,商业产品
gateone web跳板机
python开发的开源跳板机产品,开源跳板机(堡垒机)jumpserver和Alex写的crazyEYE
shell跳板机

5.用户管理

猜你喜欢

转载自blog.51cto.com/10983441/2411313