用户和权限管理

用户管理:

    创建用户、修改用户属性、删除用户、创建组、修改组属性、删除组

权限管理:

    密码管理、修改文件的属主、修改属组、修改文件权限

Unix-like:多用户、多任务

1、Linux系统的多用户

组与用户的对应:

    一对一、一对多、多对一、多对多

wKiom1T4FK_Q8N-_AAC55qQH-YU490.jpg

特殊用户和组:

    root/root、nobody/nogroup

用户名:用户ID

组:容器:映射用户群和访问权限

      权限指派的容器,角色(role)

文件:属主、属组

    属主:拥有者

    属组:所属的组

用户的类型:

    管理员:root,0

    普通用户:1-65535

        系统用户:1-499

可登录用户:500-65535


2、用户管理

2.1、创建用户

useradd,adduser    创建用户    用法:useradd USERNAME    

创建用户的时候,系统会同时创建一个与用户同名的组,这个组是用户的私有组

以用户的角度来说,组的类型:

    私有组:基本组

    额外组:

# cat /etc/passwd   
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

注:可以看到每个用户都是使用冒号(:)隔开的7个段使用man 5 可以看到相关的说明

# export LANG=en        #为了避免里面出现乱码,先把文字改为英文
# man 5 passwd

用户的属性:

    account:password:UID:GID:GECOS:directory:shell

    用户名:密码占位符:UID:GID:注释信息:家目录:默认shell

    默认法则:

        UID:已有最大UID+1

        GID:/etc/group中已有最大GID+1,如果没有给用户组指定基本组,且其UID相同的GID未被占用,则GID用UID

        注释信息:空

        家目录:/home/USERNAME

        shell:/bin/bash

2.2在创建用户的时定制用户属性

    -u UID,有效范围0-65535 ,不能重复

    -g GID,有限范围已有的GID

# useradd -g 1001 bcde

    -G GID,有效范围已有的GID,可以有多个,用逗号分隔创建附属组

    -c COMMENT:指定注释信息

# useradd -c "cao yuan lang" gentoo
# tail -1 /etc/passwd
gentoo:x:1001:1001:cao yuan lang:/home/gentoo:/bin/bash

    -d 路径  -d /path/to/somewhere:指定家目录

# mkdir /tmp/chen
# useradd -d /tmp/chen/chen1 slackware
# !tai        #tail -1 /etc/passwd
slackware:x:1002:1002::/tmp/chen/chen1:/bin/bash

    -s /path/to/shell_commend:指定shell

# useradd -s /bin/bash wolf
# !tail        #tail -1 /etc/passwd
wolf:x:1003:1003::/home/wolf:/bin/dash

    -r:创建系统用户,ID号范围为1-499之间的用户;系统用户的家目录不会被真正创建

    -M:不为用户创建家目录

    -m:强行为用户创建家目录

2.3、查看用户属性和切换用户

id    查看用户属性

    -u:显示有效用户uid

    -g:显示有效用户gid

    -un:显示用户名称

    -gn:显示用户组名称

# id root
uid=0(root) gid=0(root) groups=0(root)
# id -u root
0
# id -un root
root
# useradd user1
# useradd -g 500 user2
# id -un user2
user2
# id -gn user2
user1

finger:查看用户信息

# yum install finger        #安装finger命令 

su(switch user)切换用户:    su USERNAME

    su -l USERNAME

    su - USERNAME

管理员su到普通用户时,不需要密码; 反之,则不行

2.4、修改用户属性

usermod:

    -u UID   改UID号

    -g GID   改基本组

    -G GID   改附加组,但 -G 很少独立使用,经常和 -a 使用,如果不加 -a ,则会覆盖原来的附加组,加了 -a 则保留原来的额外组(附加组),并创建新的额外组

    -c COMMENT   修改注释信息

    -s /PATH/TO/SHELL    修改shell

    -l NEW_NAME:改用户名的登录名称

    -m -d /path/to/somewhere   修改家目录,和 -m 一起使用,不使用 -m 只修改家目录指向,同时使用 -m 选项则把原来家目录移动为新的家目录

# mkdir /tmp/user
# usermod -m -d /tmp/user/user1 wolf1  #把用户wolf1的家目录/home/wolf1改为/tmp/user/user1

2.5、删除用户

userdel:

    userdel [options] USERNAME     只会删除用户,不会删除家目录

    -r                         加入-r选项后才能删除用户的家目录

2.6、创建组

groupadd      用法:groupadd GRPNAME

    -g GID:创建组的时候为其制定GID

    -r:创建系统组

# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:

组名:密码占位符:GID:以此组为额外组的用户列表,用户词用逗号分隔

2.7、修改组属性

groupmod:修改组属性

    -g GID

    -n NEW_NAME 

2.8、删除组

groupdel

    groupdel GRPNAME


查看有哪些shell可用:

    /etc/shells            这里的shell都是安全shell,所有处于这个文件中的shell都是当前系统中的安全shell

    环境变量:SHELL(保存当前用户的shell)、PATH、HISTFILE


3、权限管理

3.1、密码管理:

passwd:修改自己的密码

passwd USERNAME:修改指定用户的密码

/etc/shadow    保存密码的文件

密码安全策略:

    足够复杂:

        1、密码长度越长越好

        2、要包含大写字母、小写字母、数字和特殊字符中的至少三类

        3、定期更换:不要重复使用此前用过的密码

passwd

    -e:设定过期时间

    -n:密码最短使用天数

    -x:最常使用天数

    -w:警告天数

    -i:非活动时长

    -l:锁定用户账号

    -u:解除锁定

# passwd wolf   修改wolf的密码
# passwd -l wolf    锁定wolf,使其不能登录
# passwd -u wolf    解锁wolf
# su - wolf
# passwd    修改wolf自己的密码

/etc/shadow

    登录名:加密的密码:最近一次修改密码的时间:密码最短使用期限:密码最长使用期限:密码到期警告天数:账号的非活动天数:账号过期期限:预留段

    加密机制:

    $1$:加密方法

    $8位随机数$:salt

    $:密码

    修改密码时间:从1970年1月1号开始至上次修改密码时,所经过的天数

    账号的非活动天数:账号密码到期后,不立即锁定,给一定的时间给你缓冲,用户可以登录,但登录后要改密码,不然就不能访问

加密方法:

    对称加密:加密和解密使用同一个密钥:3DES,AES(Advanced Encrption Standard)   密钥管理及分发功能很差

    公钥加密:也叫非对称加密,私钥/公钥(s/p),公钥可以从私钥中提取得到(反之不行)   加密速度慢,但安全性高,通常用于密钥分发:RSA,DSA

    单向加密:提取数据特征码,

        特性:

   1)、无论输入是多大的数据,其输出是定长的;

   2)、如果输入的数据一样,其结果一定一样;反之,输入数据微小改变,将引起结果的巨大改变    雪崩效应

   3)、算法:md5(message digest),SHA(Secure Hash Algorithm),SHA1

        md5:128bits

        sha1:160bits

        sha-256:256bits

        sha-512:512bits

# openssl passwd -l -salt 12345678 redhat    #自己指定salt

密钥属性的修改:

chage:

    -d:修改密码的最近一次修改时间

    -m,--mindays MIN_DAYS:最短使用期限

    -M, --maxdays MAX_DAYS:最长使用期限

    -W, --warndays WARN_DAYS:警告天数

    -I, --inactive INACTIVE:非活动天数

    -E, --expiredate EXPIRE_DATE:过期时间

usermod:

    -e YYYY-MM-DD:指定账号过期时间

    -f N:表示非活动时长      N 表示天数

gpasswd:给组设定密码

newgrp GROUP:临时设定指定的组为自己的基本组,使用exit退出

3.2、修改文件属主和属组

chown [选项] 用户 文件     修改属主

chgrp [选项] 组 文件       修改属组

chown 用户:组 文件         修改属主和属组

chown 用户.组 文件         修改属主和属组

3.3、修改文件权限

文件系统安全模型:

属主 属组 其它

u,  g,  o

---:000 --> 0

--x:001 --> 1

-w-:010 --> 2

-wx:011 --> 3

r--:100 --> 4

r-x:101 --> 5

rw-:110 --> 6

rwx:111 --> 7

3位二进制对应一个8进制

4位二进制对应一位16进制

    0,9,A,B,C,D,E,F

    F:1111

    9:1001

640:rw-r-----

755:rwxr-xr-x

750:rwxr-x---

700:rwx------

600:rw-------

644:rw-r--r--

chmod:change mode    改变文件权限(mode):

chmod [选项] 权限 文件

    -R:递归修改权限

    --refernce=/path/to/somefile FILE

# chmod --reference=/etc first.sh       #把first.sh的权限改成etc的权限

权限定义方式:

    1)、同时修改三类用户的权限:8进制数字方式          

# chmod 444 first.sh  将三类用户改为只读

    2)、修改某一类或某些类用户的权限:u,g,o,a

    u=rw

    u= ,g= 

    ug=

# chmod u=rw[-] first.sh        #使主有读、写权限,
# chmod g=r,o=--- first.sh      #使组有读权限,其它用户没有权限

    3)、只修改某类用户的某位或某些为权限:u,g,o,a

    +/-

    u+w

    [a]+x

    [a]-x

    g-rw

# chmod g+x first.sh        #使组有执行权限

3.4、文件特殊权限

特殊权限、ACL、定时任务

安全上下文:

cat --> /bin/cat

openstack:/bin/cat /etc/fstab

/etc/shadow

openstack,passwd,/etc/shadow

s:suid,set uid,属主有s权限,意味着任何用户在执行此程序时,其进程的属主不再是发起者本人,而是这个程序文件的属主

    s:属主有执行权限

    S:属主无执行权限

chmod u+s /path/to/somefile

chmod u-s /path/to/somefile

chmod 4644 /path/to/somefile

s:sgid,set gid,属组有s权限,意味着执行此程序时,其进程的属组不在是运行者本人所属的基本组,而是此程序文件的属组

chmod g+s /path/to/somefile

chmod g-s /path/to/somefile 

t:sticky,粘贴位,附加在other的权限上,表现为t

    t:其他用户原有执行权限

    T:其他用户原无执行权限

chmod o+t /path/to/somefile

chmod o-t /path/to/somefile

u:s

g:s

o:t

ugt:000:0

    001:1

    010:2

    011:3

    100:4

    101:5

    110:6

    111:7

chmod 6664 /tmp/a.txt        第一个数字对应ugt,后面三位数字对应文件的权限

    umask:0022

ACL:文件访问控制列表

hadoop:/var/tmp/test.txt

    hadoop,hadoop

    664:其它,只读

hadoop希望能够让hive写此文件,他改如何进行:只能修改other的权限有写权限

acl:用于实现在原有的访问控制机制之外补充一种文件访问控制机制

用户访问文件:

    1)、用户是否为文件属主

    2)、用户是否有特定的访问控制条目

    3)、用户是否属于文件属组

    4)、用户所属的组是否有特定的访问控制条目

    5)、其它

getfacl /path/to/somewhere:查看文件或目录的访问控制列表

setfacl -m u:USERNANE:MODE: /path/to/somewhere:为USERNAME指定的用户设定问件/path/to/somewhere具有MODE访问权限

setfacl -m g:GROUPNANE:MODE: /path/to/somewhere:为GROUPNAME指定的组设定对文件/path/to/somewhere具有MODE访问权限

setfacl -x u:USERNANE: /path/to/somewhere:为USERNAME指定的用户取消对文件/path/to/somewhere访问权限

setfacl -x g:USERNANE: /path/to/somewhere:为USERNAME指定的用户组取消对文件/path/to/somewhere访问权限

额外挂载的文件系统默认不支持acl,如果要支持

方法1:

    mount -o acl DEVICEMOUNT_POINT

    永久有效,需要编辑/etc/fatab,在挂载选项后附加acl选项

方法2:

    设定分区的默认挂载选项汇总有acl,挂载时无需再指定acl

    tune2fs -o acl DEVICE

    取消此默认挂载选项:

    tune2fs -o ^aclDEVICE

hadoop:文件/var/tmp/hadoop.txt,664

    拒绝hive用户对此的任何访问

    setfacl -m u:hive:--- /var/tmp/hadoop.txt

复制文件/var/log/messages至/data目录,其属主为root用户,且有读写权限,属组为root组,且有读写权限,可以被任何人读取,

可以被gentoo用户和magedu组读写,但centos用户没有任何访问权限

# mkdir /data
# cp /var/log/messages /data
# chmod 664 /data/messages
# setfacl -m u:gentoo:rw /data/messages
# setfacl -m g:magedu:rw /data/messages
# setfacl -m u:centos:--- /data/messages


你可能感兴趣的:(权限,用户,权限管理)