用户管理

## 用户管理
#### 开机启动脚本
##### 方法一:通过/etc/rc.loacl里添加脚步或命令
##### 方法二:通过chkconfig管理
    #第一步:必须把脚本放在/etc/init.d/下面,注:在第一行必须要写上# chkconfig: 2345(表示在什么运行级别开机启动) 99(表示启动的顺序,最大99) 99(表示关闭的顺序)
    [root@web02 ~]# vim /etc/init.d/test
    [root@web02 ~]# cat /etc/init.d/test
    # chkconfig: 2345 99 99
    echo 'hello'
    #第二步:给这个脚本加上执行权限
    [root@web02 ~]# chmod +x /etc/init.d/test
    [root@web02 ~]# ll /etc/init.d/test
    -rwxr-xr-x. 1 root root 36 Jan 18 21:41 /etc/init.d/test
    #第三步:将脚本添加到chkconfig中进行管理
    [root@web02 ~]# chkconfig --add test
    #第四步:查看脚本是否在chkconfig中
    [root@web02 ~]# chkconfig |grep test
    test               0:off    1:off    2:on    3:on    4:on    5:on    6:off

#### 用户分类与用户文件
##### 用户分类
    root用户:uid为0
    虚拟用户:uid为1-499,不能登陆系统,用户的命令解析器为/sbin/nologin
    普通用户:uid为500+
##### 用户相关的配置文件
    /etc/passwd:存放用户的信息
    /etc/shadow:存放用户的密码信息
    /etc/group:存放用户组的信息
    /etc/gshadow:存放用户组密码信息
##### 用户相关的目录
    /etc/skel:存放新用户的模板(新用户家目录的样子)
    /etc/skel/.bash_logout:用户退出会运行里面的命令
    /etc/skel/.bash_profile:同等于/etc/profile
    /etc/skel/.bashrc: 同等于/etc/bashrc
##### 例子:请问如下登录环境故障的原理及解决办法?-bash-4.1$
    原因:出现这个问题是因为家目录下面的.bash*开头的文件全部被删除了
    故障重现:先删除.bash*开头的文件,然后退出重新登陆就会发现变成了-bash-4.1$
    [alex77@web02 ~]$ ll /home/alex77/.bash*
    -rw-r--r--. 1 alex77 alex77  18 Mar 23  2017 /home/alex77/.bash_logout
    -rw-r--r--. 1 alex77 alex77 176 Mar 23  2017 /home/alex77/.bash_profile
    -rw-r--r--. 1 alex77 alex77 124 Mar 23  2017 /home/alex77/.bashrc
    [alex77@web02 ~]$ rm -f /home/alex77/.bash*
    [alex77@web02 ~]$ ll /home/alex77/.bash*
    ls: cannot access /home/alex77/.bash*: No such file or directory
    [alex77@web02 ~]$ logout
    [root@web02 ~]# su - alex77
    -bash-4.1$ 
    解决方法一:从/etc/skel/下面把.bash*开头的文件复制过来,然后退出重新登陆
    -bash-4.1$ cp /etc/skel/.bash* .
    -bash-4.1$ logout
    [root@web02 ~]# su - alex77
    解决方法二:从其它用户家目录复制过来,会遇到权限问题,可以先使用root用户给需要复制的家目录添加r_x权限,复制完后再还原权限
    -bash-4.1$ cp /home/alex/.bash* .
    cp: cannot stat `/home/alex/.bash*': Permission denied
    -bash-4.1$ su - root
    Password: 
    [root@web02 ~]# chmod +rx /home/alex
    [root@web02 ~]# ll /home/alex
    total 0
    [root@web02 ~]# ll -d /home/alex
    drwxr-xr-x. 2 alex alex 4096 Jan 18 19:21 /home/alex
    [root@web02 ~]# su - alex77
    -bash-4.1$ cp /home/alex/.bash* .
    cp: cannot open `/home/alex/.bash_history' for reading: Permission denied
    -bash-4.1$ logout
    [root@web02 ~]# su - alex77

#### 用户相关的命令
##### useradd:添加用户
    -u:指定用户的UID号
    -g:指定用户的GID号
    -s:指定用户使用的shell(默认是/bin/bash,虚拟用户:/sbin/nologin)
    -c:指定用户的说明信息
    -M:表示用户不创建家目录,一般创建虚拟用户的时候使用
    例子1:添加一个uid是888的虚拟用户alex999
    [root@web02 ~]# useradd -u 888 alex9999
    [root@web02 ~]# id alex9999
    uid=888(alex9999) gid=888(alex9999) groups=888(alex9999)
    例子2:添加一个用户alex666指定uid为999 禁止用户登录系统 不创建家目录
    [root@web02 ~]# useradd -u 999 -s /sbin/nologin -M alex666
    [root@web02 ~]# id alex666
    uid=999(alex666) gid=999(alex666) groups=999(alex666)
    [root@web02 ~]# su - alex666
    su: warning: cannot change directory to /home/alex666: No such file or directory
    This account is currently not available.
    [root@web02 ~]# ls /home/
    alex  alex77  alex9999  oldboy  www
##### usermod:修改用户信息
    -s:修改用户使用的shell
    -g:修改用户的用户组
    -G:添加多个用户组
##### userdel:默认不删除用户的家目录和邮箱
    -r:删除用户所有相关的信息(不推荐使用)
    在/etc/passwd中注释用户(推荐使用)
##### passwd:设置用户的密码
    --stdin:从管道中获取用户的密码(非交互式)
    [root@web02 ~]# echo '12345'|passwd --stdin alex
    Changing password for user alex.
    passwd: all authentication tokens updated successfully.
##### 使用软件KeePass来保存密码
![](9e83b790-98fa-4103-ac38-ddfac40d77d4_files/ae4fd31a-be2d-424b-b279-a13d9f275832.png)
#### 如何让系统更安全1
    1.最小化安装系统
    2.禁止root用户登陆
    3.修改远程端口22
    4.给系统常用命令+i和系统配置文件+a
    5.给重要的文件添加指纹或命令做一个指纹,或者做个定时任务+md5sum定时检查
    #生成一个md5
    [root@web02 oldboy]# md5sum oldboy.txt 
    917b9d05644c82592b6707a7b624b3e1  oldboy.txt
    #将生成好的md5定向到指定的md5库中
    [root@web02 oldboy]# md5sum oldboy.txt > test.txt 
    [root@web02 oldboy]# cat test.txt 
    917b9d05644c82592b6707a7b624b3e1  oldboy.txt
    #使用md5sum -c 来对比文件有没有被修改,没有被修改会输出ok
    [root@web02 oldboy]# md5sum -c test.txt 
    oldboy.txt: OK
    #文件修改后再次对比,会输出failed
    [root@web02 oldboy]# echo '123' >> oldboy.txt 
    [root@web02 oldboy]# md5sum -c test.txt 
    oldboy.txt: FAILED
    md5sum: WARNING: 1 of 1 computed checksum did NOT match
##### 如何让系统更安全2(摘自李导博客)
##### 原因分析
    因为linux下的木马通常是通过web的上传目录方式来上传木马到服务器上的,可根据从恶意者访问网站开始-->Linux系统-->HTTP服务-->中间件服务-->程序代码-->DB-->存储,层层设卡防护

##### 从用户访问角度解答
    1.开发程序代码对上传文件类型做限制,例如不能上传.php程序(JS及后端代码控制)。
    2.对上传的内容(包括文本和文件)检测,检测方式可通过程序、Web服务层(中间件层)、数据库等层面控制。
    3.控制上传目录的权限以及非站点目录的权限(Linux文件目录权限+Web服务层控制)。
    4.传上木马文件后的访问和执行控制(Web服务层+文件系统存储层)。
    5.对重要配置文件、命令和WEB配置等文件做md5指纹及备份。
    6.安装杀毒软件clamav等,定期监测查杀木马。
    7.配置服务器防火墙及入侵检测服务。
    8.监控服务器文件变更、进程变化、端口变化、重要安全日志并及时报警。

##### 从内部管理人员角度:防止被提权
    1.***管理服务器或Web化管理服务器。
    2.ssh监听内网。
    3.采用跳板机、操作审计。
    4.sudo集权管理、锁定关键文件。
    5.站点目录、上传目录权限属组控制。
    6.做系统及站点文件备份指纹监控报警。
    动态口令认证。

原文地址:https://www.cnblogs.com/yjiu1990/p/10336239.html