Linux用户权限管理

用户相关命令

useradd

-u uid

制定用户的uid(数字  身份证号码)

-s 指定用户使用的shell

/bin/bash 默认

/sbin/nologin 手动添加一个傀儡用户  虚拟用户

-M标示不创建家目录一般创建虚拟用户使用

-g 指定 用户属于的组(组的名字)添加用户的时候 默认创建一个与用户名一样的家庭

添加一个用户lidao666指定uid为888禁止用户登陆系统 不创建家目录

添加一个uid是888的虚拟用户alex999

userdel

删除用户

把这个用户/etc/passwd中注释

userdel默认不删除用户的家目录和邮箱

-r 连窝端删除与用户有关的所有信息(家目录)

ussermod

修改用户的信息(这个用户已经存在了)

-s 修改用户使用的shell

-g 属于的家庭 用户组名字

主要组

-G属于多个家庭

附加组

passwd

--stdin 从管道中获取用户的密码(非交互式设置密码)

企业场景:用户及密码管理

□密码要复杂12位以上字母数字特殊符号

保存密码:

keepass

(软件,密码存放在本地,本地保险柜)

lastpass

(在线版本,银行的保险柜)

大的企业用户和密码统一管理(相当于活动目录(ad),openldap域)

动态密码:动态口令,第三方提供自己开发也很简单

企业面试题

批量添加10个用户stu01,stu02……stu10,并设置8位随机密码(禁止使用for,while等循环)

chown

修改文件或目录所有者和属于的用户组

-R 递归修改文件或目录的所有者和用户组

chown  oldboy oldboy.txt #只修改了文件的所有者

chown  oldboy.oldboy oldboy.txt #修改了文件的所有者和属于的组

 

chmod

【功能说明】:修改文件目录的权限

【语法格式】:chmod [数字或参数] [文件路径]

【选项参数】:

参数

参数说明

其他说明

+

表示增加权限

 

=

表示唯一设定权限

 

-

表示取消权限

 

u

在这里改的前三位

 

g

在这里改的中三位

 

o

在这里该改的后三位

 

a

所有

 

例子:

chmod  u=w  /oldboy/test.sh

chmod 755 test.sh”。755表示“创建者拥有读写可执行权限、同一组用户以及其他用户拥有读和执行权限”。

 

第1章 Linux用户分类 

用户分类

UID

user  ID  身份证号码

 

GID

group ID  用户组ID

 

root皇帝 UID:0

 

虚拟用户 傀儡 UID:1-499(c6) /999(c7)

用户的命令解释器/sbin/nologin

每个程序、服务运行的时候都需要一个用户

傀儡用户不需要用来登陆系统

普通用户 UID 500(c6)+1000(c7)

 

第2章 Linux用户 

2.1 Linux启动流程

CentOS 6        VS         CentOS 7  

串行                       并行 

Contos6:

第一步按下电源→开机自检→MBR引导→GRUB菜单→加载内核→运行INIT(第一个启动的进程)→读取/etc/inittab →读取/etc/rc数字.sysinit(开机自启动)→启动mingetty显示界面

 

2.2 #process 进程   

 ps  -ef   查看系统进程

 

2.3 用户与用户组关系      

这个人属于哪个(或者多少个)家庭

2.4 命令解释器  shell 

echo  houstname通过管道给bash  替你运行!

     这叫命令解释器

 

/bin/bash       系统默认的命令解释器

/sbin/nologin    虚拟用户的命令解释器  

nologin不能登陆的login (虚拟用户)   

 

 统计系统中 虚拟用户数量

/sbin/nologin    文件中一个( nologin ) 代表虚拟用户

 

如和计算?

一两种种方法不算方法,

Cat?grep,sed,awk

 

grep '/sbin/nologin'  /etc/passwd|wc -l  wc -l小写(统计文件中单词数量显示结果)

 

grep -c '/sbin/nologin'  /etc/passwd     

-c 统计包含 xxxx的有多少行  行数     count(计数)

 

awk  '/nologin/{i++}END{print i}' /etc/passwd   

 

find  查找文件名或目录

-maxdepth 最大深度

-type   类型

-name  名字

-iname  不区分大小写

-size   大小

-mtime  时间

 

 

/etc/passwd内的每一列的含义

 

 

2.5 /etc/group用户,用户组信息

 

2.6 /etc/shadow 密码密码信息

 

2.7 与用户有关目录

2.7.1 /etc/skel  新用户的家目录的模板 (内有隐藏文件)   

2.8 useradd 添加用户

1# 创建家目录 /home/oldfei

2# 把 /etc/skel 下面的所有内容 复制到 家目录

3# 修改家目录权限和所有者  

 

 ll -a /etc/skel/

total 24 (总数)

 .bash_logout    #用户退出系统的时候#执行里面的命令

/etc/rc.d/rc.local     #用户开机时运行里面的内容

 .bash_profile   #/etc/profile  环境变量 别名

 .bashrc         #/etc/bashrc   别名

  

2.9 准备故障:

2.9.1 检查环境 

grep PS1 /etc/profile

#export PS1='[\u@\h \w]\$ '

2.9.2 添加用户 

[root@oldboyedu-lnb ~]# useradd alex

[root@oldboyedu-lnb ~]# su - alex

[alex@oldboyedu-lnb ~]$ \rm -fr /*

                       删根

2.9.3 退出用户 重新登陆 

-bash-4.2$

版本

-bash-4.1$ 代表cenos6

-bash-4.2$ 代表cenos7

2.9.4 原因  

用户家目录 环境变量文件 没了

 

2.9.5 解决 

-bash-4.2$ ##方法1./etc/skel

-bash-4.2$ cp /etc/skel/.bash*   ~    复制

 

重新登陆 恢复

-bash-4.2$ logout

 切换用户:su - alex

Last login: Fri Nov 16 11:18:54 CST 2018 on pts/0(显示登陆信息)

[alex@oldboyedu-lnb ~]$   (已登陆环境)

第3章  语法格式

3.1 添加一个UID是888的虚拟用户

    useradd -u 888 -M -s /sbin/nologin  lg

指定UID为888+-u,不创建家目录是大M,指定用户使用的shell虚拟用户 ,加上用户名lg

显示用户的信息叫id  亮哥  (id + 用户名)

 

 

 

 

[root@oldboyedu-lnb ~]# usermod -g alex  alex

[root@oldboyedu-lnb ~]# id alex

uid=1003(alex) gid=1006(alex) groups=1006(alex)

 

#-G   让用户属于多个组↓

[root@oldboyedu-lnb ~]# usermod -G root,oldboy,lidao666  alex

[root@oldboyedu-lnb ~]# id alex

uid=1003(alex) gid=1006(alex) groups=1006(alex),0(root),1000(oldboy),1007(lidao666)

清空之前设置的属组↓

[root@oldboyedu-lnb ~]# usermod -G ''  alex

[root@oldboyedu-lnb ~]# id alex

uid=1003(alex) gid=1006(alex) groups=1006(alex)

 

passwd  更改密码

stdin  (standard input 标准输入 ) 从管道获取密码

 echo 123456 |passwd --stdin alex  结果如↓

Changing password for user alex. 更改用户密码

passwd: all authentication tokens updated successfully. 成功更新所有身份认证令牌

 

记录密码:

尽量复杂一点

 

history    查看历史命令

history -c  删除历史命令

 

第4章 用户管理  

   用户相关命令

4.1 useradd   增加用户  

-u uid  指定用户的uid(数字  身份证号码)

    -s   指定用户使用的shell

/bin/bash 默认

/sbin/nologin 手动添加一个傀儡用户  虚拟用户

-M标示不创建家目录一般创建虚拟用户使用

-g 指定 用户属于的组(组的名字)添加用户的时候 默认创建一个与用户名一样的家庭

添加一个用户lidao666指定uid为888禁止用户登陆系统 不创建家目录

添加一个uid是888的虚拟用户alex999

4.2   userdel    删除用户  

userdel默认不删除用户的家目录和邮箱

-r 连窝端删除与用户有关的所有信息(家目录)

           在/etc/passwd中注释掉更安全方便点

4.3  usermod    修改用户

修改用户的信息(这个用户已经存在)

-s 修改用户使用的shell

-g 属于的家庭 用户组名字

主要组

-G属于多个家庭

附加组

4.4   passwd    更改密码

--stdin 从管道中获取用户的密码(非交互式设置密码)

企业场景:用户及密码管理

□密码要复杂12位以上字母数字特殊符号

保存密码:

4.4.1 keepass    密码管理器

(软件,密码存放在本地,本地保险柜)

4.4.2 lastpass

在线版本,银行的保险柜)

大的企业用户和密码统一管理(相当于活动目录(ad),openldap域)

动态密码:动态口令,第三方提供自己开发也很简单

企业面试题

批量添加10个用户stu01,stu02……stu10,并设置8位随机密码(禁止使用for,while等循环)

第5章 用户组

5.1 chown     修改文件或目录所有者和属于的用户组

-R 递归修改文件或目录的所有者和用户组

chown  oldboy oldboy.txt #只修改了文件的所有者

chown  oldboy.oldboy oldboy.txt #修改了文件的所有者和属于的组

用户相关组

5.2 groupadd   创建用户组

-g指定用户组的gid数字

添加一个虚拟用户用户 mysql 指定用户的uid gid都是999

5.3 用户查询命令

id  查看用户的信息

一个用户是否存在

查询用户的uid  gid

属于哪个用户组

w 显示系统中已经远程登陆的用户  干啥

https://www.processon.com/view/link/59ffcfe6e4b06bed41ccb8d6

 

last  哪个用户在什么时候 从哪里 远程登陆你的系统  用户登陆的信息

lastlog 显示linux中所有用户最近一次远程登陆的信息

第6章 权限体系  

6.1 Linux权限体系  rwx 读写执行 permission 权限denied 拒绝

6.2 chown  用户管理命令更改文件的属主,属组,原有的主,组改为另一个指定的用户或组  

参数   -R  递归更改该目录下所有文件

 

6.3  chown  oldboy . oldboy   ld.txt 

   使这个文件的属主属组更改为oldboy

 

6.4 #添加一个虚拟用户 mysql 指定用户的uid gid都是999  

useradd  -u 999 -g 999 -s /sbin/nologin  -M  mysql (mysql=用户名)

            -s           -M 不创建家目录              

 id mysql  查看这个用户

uid=999(mysql) gid=999(mysql) groups=999 (mysql)

 

-g 指定用户组名字 或者指定一个已经存在的用户组的gid

groupadd     -g 996       lidao996

 

创建组,-g指定用户组名  用户名

useradd   -u 996  -g lidao996   -s /sbin/nologin -M  lidao996

添加用户  -u      -g          -s            -M

 

 

第7章 如何让系统变得更安全

7.1 连接到任何服务器需要做:

1.ip地址   

2.端口     sshd 22 (52113)

3.用户名   root    #禁止root用户远程登录

4.密码

5.登陆情况放在这个日志里面: /var/log/secure  Failed password  

 

7.2 创建指纹

72.1 直接创建 

md5sum  /oldboy/oldboy.txt >/oldboy/l/123.txt

         把oldboy.txt做一个指纹到这个指纹数据库

7.2.2 把一个目录下的文件全部过滤到指纹数据库备份

找出/oldboy下面 文件 并制作指纹信息 存放在/oldboy/l/123.txt

find /oldboy/ -type f |xargs md5sum >/oldboy/l/123.txt

  在这  /oldboy/l/123.txt 即指纹数据库

 

7.2.3 自动比对  

命令+参数+指纹文件库  自动对比

 

这样更容易做比较

md5sum  -c /oldboy/l/123.txt |column -t     对齐的参数

 

7.2.4 被动和没被动的区别 

/oldboy/l/123.txt:       FAILED     被动了

/oldboy/l/1:           OK      没被动

/oldboy/pipeima.md5:   OK

/oldboy/oldboy.txt:     OK

第8章 给予用户权限

8.1    visudo  ==== vi /etc/sudoers 

visudo  自带检查功能

 

8.2 sudo  给普通用户临时成为root 提供机会    普通用户可以临时以root身份运行某个命令 

查看自己的权限: sudo -l

 

8.3  Root用户编辑 visudo  进入授权模式

8.3.1 如何进行授权

给oldboy用户 授权两个命令 ls touch

#oldboy  ALL=(ALL)  /bin/ls, /bin/touch

$1是给哪个用户权限,$2是全部的意思,$3是把这个命令的绝对路径加上

 

    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

  用户oldboy可以在oldboyedu-lnb上运行以下命令: (ALL) /bin/ls, /bin/touch

如果没有权限的用户被授予权限使用命令前不加sudo则无效,权限被拒绝

 

8.3.2  sudo -l  #查看自己有的sudo权限 

sudo ls /root

8.3.3 给oldboy用户授予权限/bin 下所有命令  

oldboy  ALL=(ALL)       /bin/*  不安全怎么办?

 

 

8.3.4 给oldboy用户授予权限/bin 下所有命令  排除某个命令或参数 

[root@oldboy ~]# grep oldboy /etc/sudoers  

oldboy  ALL=(ALL)       /bin/*, !/bin/su

             排除su 切换用户命令

#需要什么 给什么命令 这样安全                                

 

8.4 运维人员自己用 全部用户并且不需要输入当前用户密码

[root@oldboyedu-lnb ~]# grep oldboy /etc/sudoers  

oldboy  ALL=(ALL)       ALL

 

 

[root@oldboyedu-lnb ~]# grep oldboy /etc/sudoers  

oldboy                 ALL=(ALL)                     NOPASSWD: ALL

用户   可以在所有服务器使用sudo=(你可以成为谁)         命令

 

posted @ 2018-12-04 17:20  59111618  阅读(1921)  评论(0编辑  收藏  举报