Linux之用户和组的权限管理(acl策略,安全)

Linux是多用户多任务的操作系统,支持创建多个用户,和我们个人经常用的windows是一样的,创建的每个用户可以有不同的操作权限。大致上Linux可以分为两种用户,超级用户和普通用户,超级为root,具有所有的权限,是整个系统的king,其他用户的权限可以由root用户赋予!不同的用户也属于不同的组(每个用户创建的时候会自动生成基本组),不过linux把组分为基本组和从属组。

基本信息

       用户      家目录         属组 用户信息存放    密码存放 组信息存放      组密码
       root       /root         root   /etc/passwd   /etc/shadow   /etc/group  /etc/gshadow
    普通用户      /home     与用户同名
[root@guowei ~]# cat /etc/passwd | head -1
root:x:0:0:root:/root:/bin/bash
//用户名:密码:UID:GID:说明栏,类似于注释,不过现在已经基本不用:家目录:登录的shell
[root@guowei ~]# cat /etc/shadow | head -1
root:$6$/h4yt6VlHBRy7GBE$XOaMFh2tiGi/Ac.kSMZY7/Ef3CHHjeCd/NSy96JeqYJcYZID.qJyqzKlCGxN.TELlHp4vdj4MFp/wm7I68smR1::0:99999:7:::
//用户名:密码:密码的最近修改日:密码不可修改的天数(为0,则可随时改):密码重新修改的天数:密码失效前提前警告的天数:密码失效宽限天数:账号失效日期:保留字段

常用命令

  

              用户                        组

添加用户  useradd [选项]... 用户名

选项:-u 用户id  -d 家目录  -s  登录的shell  -g 基本组 -G 从属组

添加组        groupadd  [-g 组id]   组名

设置密码 passwd  用户名    交互式生成密码

               echo  "密码"  |  passwd  --stdin  用户   直接设置密码

管理组        gpasswd  -a  用户名 组名    //添加用户

                   gpasswd  -d  用户名 组名   //删除用户

修改属性  usermod  [选项]... 用户名

选项:-u 用户id  -d 家目录  -s  登录的shell  -g 基本组 -G 从属组

修改组         groupmod [-g 组id] [-n 新组名] 组名
检查用户 id 用户名 删除组          groupdel  组名
删除用户 userdel  [-r]  用户名  查看组成员  groupmems  -l  -g  组名
[root@server0 ~]# useradd -u  3456  jack                 //创建用户jack uid为3456
[root@server0 ~]# useradd  -s /sbin/nologin  rose        //创建用户rose 登录shell为/sbin/nologin
[root@server0 ~]# passwd  jack
Changing password for user jack.
New password: 
[root@server0 ~]# echo  “123456”  | passwd  --stdin  jack
Changing password for user jack.                         //已经为用户jack更改密码令牌
passwd: all authentication tokens updated successfully.  //密码令牌更新成功
[root@server0 ~]# usermod -u 1234 jack
[root@server0 ~]# id jack
uid=1234(jack) gid=3456(jack) groups=3456(jack)
[root@server0 ~]# useradd -s /sbin/nologin  xiaoming
[root@server0 ~]# id xiaoming
uid=1235(xiaoming) gid=1235(xiaoming) groups=1235(xiaoming)
[root@server0 ~]# userdel -r xiaoming
[root@server0 ~]# id xiaoming 
id: xiaoming: no such user
[root@server0 ~]#groupadd -g 2345 test
[root@server0 ~]#tail -1 /etc/group
test:x:2345:
[root@server0 ~]#gpasswd -a jack test
Adding user jack to group test
[root@server0 ~]#groupmems  -l  -g test
jack 
[root@server0 ~]# gpasswd -d jack test
Removing user jack from group test
[root@server0 ~]# groupmod -g 2222 -n wind test
[root@server0 ~]# tail -1 /etc/group
wind:x:2222:

[root@guowei ~]# users       //查看当前系统有哪些用户
root root
[root@guowei ~]# who         //查看用户以何种方式登录
root     pts/0        2019-03-02 22:44 (:2)    //第一列为用户,第二列是终端,第三列是时间,
root     :2           2019-03-02 20:04 (:2)
[root@guowei ~]# w           //查看详细的登录信息
 22:49:20 up  9:13,  4 users,  load average: 0.00, 0.01, 0.05
//第一行显示当前时间,系统运行时间,已登录的用户数量和系统负载
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    :2               22:44    0.00s  0.04s  0.02s w
root     :2       :2               20:04   ?xdm?   1:53   0.11s /usr/libexec/gnome-sess
//下面信息分为8列:
第一列:登录的用户名
第二列:用户登录终端
第三列:如果是远程登录,会显示远程主机的主机名和IP地址
第四列:登录时间
第五列:用户闲置时间
第六列:与终端相关的当前所有运行进程消耗的CPU时间总量
第七列:当前WHAT列所对应的进程消耗的CPU时间总量
第八列:用户当前运行的进程

权限管理

基本权限 r权限 能够浏览目录内容 w权限 能够执行更改目录内容操作 x权限 可以切换到此目录
权限适用对象

所有者(-user):拥有次文件/目录的用户 ;所属组(-group):拥有文件/目录的组;

其他用户(-other):除所有者和所属组

   例如:      ls -ld /etc/passwd
                             -rw-r--r--.                                                     1              root       root     2358     12月 28 19:38          /etc/passwd

                       权限位[依次为类型-属主-属组-其他人      硬链接数    属主    属组    大小    最后修改时间         文件/目录名称

权限的数值 r=4 w=2 x=1
附加权限

SUID=4

只有可执行的二进制程序才可以,附加在属主的x位上,使普通用户拥有当前用户(必须对文件有可执行权限)的权限

SGID=2

附加在属组的x位上,属组的权限标识会变为s ,如果没有执行权限则会变成S 适用于目录,使新增的文档自动设置为与父目录相同的属组

Sticky Bit=1

附加在其他人的x位上,显示为t 可以对目录进行权限控制,不能执行w权限对于非自己的文件

设置基本权限    chmod [-R] 归属关系+-=权限类别  文档...        

                          chmod [-R] nnn  文档...  (n为数值)

                           chmod [-R] xnnn 文档...(x为附加权限4为SUID,2为SGID,1为Sticky Bit)

设置文档归属     chown [-R]  属主  文档...   /  chown [-R]  :属组  文档...   /  chown [-R]   属主:属组   文档...

[root@ecs-web1 ~]# ls -ld /test/
drwxr-xr-x 2 root root 4096 Jan 29 19:47 /test/
[root@ecs-web1 ~]# chmod u+s,g+w,o+w  /test/           //给普通用户赋予s权限
[root@ecs-web1 ~]# ls -ld /test/
drwsrwxrwx 2 root root 4096 Jan 29 19:47 /test/
[root@ecs-web1 ~]# su - jack
[jack@ecs-web1 ~]$ ls /root
ls: cannot open directory /root: Permission denied
[jack@ecs-web1 ~]$ ls -ld /root/                        //因为赋予了s权限,所以用户jack可以以root用户执行此文件
dr-xr-x---. 7 root root 4096 Jan 29 19:50 /root/

[root@ecs-web1 ~]# chown jack:jack /test/
[root@ecs-web1 ~]# ls -ld /test/
drwsrwxrwx 2 jack jack 4096 Jan 29 19:47 /test/

[root@ecs-web1 ~]# chmod 111 /test
[root@ecs-web1 ~]# ls -ld /test/
d--x--x--x 2 root root 4096 Jan 29 20:22 /test/
[root@ecs-web1 ~]# chmod 4131 /test
[root@ecs-web1 ~]# ls -ld /test/
d--s-wx--x 2 root root 4096 Jan 29 20:22 /test/

acl策略

普通的文档归属中有三种角色:属主,属组,其他人,不能实现精细的控制。如果我们想对个别的用户和组设置独立的权限,就可以用acl

设置acl策略:setfacl [-R] -m u/g:用户名/组名:权限类别   文档...

查看acl策略:getfacl   文档:  

清空acl策略:setfacl [-R] -b  文档

[root@ecs-web1 ~]# setfacl  -m u:jack:--- /test
[root@ecs-web1 ~]# getfacl /test
# file: test/
# owner: root
# group: root
user::rwx
user:jack:---
group::rwx
mask::rwx
other::rwx
[root@ecs-web1 ~]# su - jack
[jack@ecs-web1 ~]$ ls /test
ls: cannot open directory /test: Permission denied
[jack@ecs-web1 ~]$ exit
[root@ecs-web1 ~]# setfacl -b /test              //清空策略
[root@ecs-web1 ~]# getfacl /test                 //对jack策略已经清除

账号安全

设置账号有效期

[root@guowei ~]# chage -l guowei             //列出账号密码信息
Last password change					: Feb 24, 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
[root@guowei ~]# chage -d 0 guowei           //登录必须重新设置密码
[root@guowei ~]# chage -l guowei
Last password change					: password must be changed
Password expires					: password must be changed
Password inactive					: password must be changed

[root@guowei ~]# chage -E 2019-12-31 guowei    //设置失效日期
[root@guowei ~]# chage -l guowei
...
Account expires						: Dec 31, 2019

账号锁定/解锁

[root@guowei ~]# passwd  -l guowei         //锁定账号
Locking password for user guowei.
passwd: Success
[root@guowei ~]# passwd  -u  guowei        //解锁账号
Unlocking password for user guowei.
passwd: Success
[root@guowei ~]# passwd  -S guowei         //列出账号状态
guowei PS 1970-01-01 0 99999 7 -1 (Password set, SHA512 crypt.)

 切换账户

用户分为根用户(root 超级用户):、普通用户(不能创建用户)、系统用户(不能登录系统)

su 命令 :切换用户

[guowei@guowei ~]$ su           //不加传参数,默认切换到root用户
Password: 
[root@guowei guowei]# pwd       //用户环境不发生变化 
/home/guowei
[root@guowei guowei]# exit
exit
[guowei@guowei ~]$ su -        //加‘-’切换用户环境,直接进入用户的家目录
Password: 
Last login: Sat Mar  2 23:04:00 CST 2019 on pts/0
[root@guowei ~]# pwd
/root
[root@guowei ~]# su - guowei    //root可以切换其他用户,不需要密码

sudo 命令:用其他用户的身份执行命令

该命令的使用方式是在sud后加上要执行的命令。运行命令时,会首先检查/etc/sudoers,判断该用户是否有执行sudo的权限。

注:编辑/etc/sudoers,用专门的命令visudo来编辑,这个命令编辑后保存退出时会自动检查语法设置,防止错误无法使用sudo

 91 ## Allow root to run any commands anywhere
 92 root    ALL=(ALL)       ALL
 93 guowei  ALL=(ALL)       ALL              //用户guowei(第一列)可以从任何地方(第二列ALL)执行任何人(第三列ALL)的任何命令(第四列的ALL)
 94 guowei  ALL=(ALL)       NOPASSWD:/sbin/shutdown,/usr/bin/reboot      //可以设置不需要密码执行某些命令
...
 99 ## Allows people in group wheel to run all commands
100 %wheel  ALL=(ALL)       ALL
101 %guowei ALL=(ALL)       ALL              //可以设置所有属于guowei组的用户从任何地方执行任何人的任何命令

猜你喜欢

转载自blog.csdn.net/weixin_43800781/article/details/85330242