• Linux用户及权限管理



    Linux用户管理以及文件的权限管理

    多用户:

    在操作系统中可以存在多个不同的用户,将来在登录操作西欧统的时候,使用的用户身份不同,用户名不同,可能对系统中的文件
    ,目录操作权限有所不同;那么这是给文件或目录设置权限来实现的;
    

    用户类型
    管理员用户 root
    普通用户
    系统用户/程序用户(存在的目的是只是让我的系统中某一个软件能正常的启动以及使用)

    用户相关的文件:

    /etc/passwd		用户信息 
    	格式:
    		用户名:x:UID:GID:说明信息:SHELL
    		
    		UID:用来区分不同的用户
    			1000---60000
    			0---999		系统用户 
    			
    		SHELL:
    			/bin/bash	默认 
    			/sbin/nologin	系统用户 
    		
    
    /etc/shadow		用户密码信息
    

    在Linux中用户组分为两类:

    	基本组
    	附加组			用户userA -----> 用户组userA;    caiwu, shichang, jishu, yanfa 
    	在Linux中创建用户,如usera,这个用户创建出来时,如果我们没有做任何的改动,系统会自动出创建一个
    	和用户名相同用户组usera,那么这个组称之为用户a的基本组;
    	后续我们又创建出来的caiwu, shichang, jishu, yanfa ,可以把这个用户uaera加到这些组里面,那么这个组。称之为
    	用户的附加组;
    	对于1个用户来说,一个用户只能由一个基本组,而用户的附加组可能由多个
    

    1、创建用户

    useradd [option] 用户名称

    创建用户:
    useradd user1
    查看用户:
    [root@node01 ~]# id user1
    uid=1002(user1) gid=1002(user1) groups=1002(user1)
    
    在/home目录下有一个文件夹和用户名相同的文件夹
    user1,称之为用户user1的家目录
    
    切换用户
    su - 用户名
    

    2 指定用户的基本组、附加组

    -g (组名或某组id)指的是用户的基本组
    -G (组名后某一个组的id,如果有多个用逗号隔开)指的是附加组
    
    [root@node01 ~]# groupadd caiwu
    [root@node01 ~]# useradd -g user1 -G caiwu user3
    [root@node01 ~]# 
    [root@node01 ~]# id user3
    uid=2001(user3) gid=1001(user1) 组=1001(user1),2001(caiwu)
    
    1. 指定用户shell名称
    	-s shell名称
    	-M				不创建宿主目录 
    
    [root@node01 ~]# useradd -s /sbin/nologin -M apache
    
    1. 创建系统用户
    	-r 
    
    [root@node01 ~]# useradd -r mysql
    
    1. 指定用户的宿主目录 (即家目录的位置,我们创建用户的时候,默认家目录在/home/目录下,如果想要指定一个用户的一个家目录可以自己手动指定)
    [root@node01 ~]# useradd -d /tmp/hadoop hadoop
    

    2、切换用户

    su - 用户名称
    

    3、查看用户id信息

    [root@node01 ~]# id user1
    uid=1001(user1) gid=1001(user1) 组=1001(user1)

    [root@node01 ~]# id user3
    uid=2001(user3) gid=1001(user1) 组=1001(user1),2001(caiwu)

    [root@node01 ~]# id -u user3
    2001
    [root@node01 ~]# id -g user3
    1001
    [root@node01 ~]# id -G user3
    1001 2001

    [root@node01 ~]# id -u -n user3
    user3
    [root@node01 ~]# id -g -n user3
    user1
    [root@node01 ~]# id -G -n user3
    user1 caiwu
    [root@node01 ~]#

    4、设置用户密码

    passwd [option] [用户名称]

    [root@node01 ~]# passwd user1

    1. 查看用户密码状态

    [root@node01 ~]# passwd -S user1
    user1 PS 2017-04-11 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

    1. 锁定用户密码(不能登录)

    [root@node01 ~]# passwd -l user1
    锁定用户 user1 的密码 。
    passwd: 操作成功
    [root@node01 ~]# passwd -S user1
    user1 LK 2017-04-11 0 99999 7 -1 (密码已被锁定。)

    1. 解锁用户密码

    [root@node01 ~]# passwd -u user1
    解锁用户 user1 的密码。
    passwd: 操作成功
    [root@node01 ~]# passwd -S user1
    user1 PS 2017-04-11 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
    [root@node01 ~]#

    1. 强制用户密码过期

    [root@node01 ~]# passwd -e user1
    正在终止用户 user1 的密码。
    passwd: 操作成功

    5、修改用户信息

    usermod [option] 用户名称

    -u UID 
    -g 组名称
    -G 组名称
    -s shell名称
    

    [root@node01 ~]# usermod -aG caiwu user3
    [root@node01 ~]# id user3
    uid=2001(user3) gid=1001(user1) 组=1001(user1),2001(caiwu),2004(shichang)

    6、删除用户

    userdel [option] 用户名称

    [root@node01 ~]# userdel user1

    [root@node01 ~]# userdel -r user2 >>>同时删除用户的宿主目录

    用户组管理

    1、创建用户组

    groupadd 用户组名称

    2、删除用户组

    groupdel 用户组名称

    [root@node01 ~]# groupadd jishu
    [root@node01 ~]# useradd tom
    [root@node01 ~]# useradd mike
    [root@node01 ~]# useradd jerry

    [root@node01 ~]# usermod -G jishu tom
    [root@node01 ~]# usermod -G jishu jerry
    [root@node01 ~]# usermod -G jishu mike

    [root@node01 ~]# grep "jishu" /etc/group
    jishu❌2005:tom,jerry,mike

    [root@node01 ~]# gpasswd -d tom jishu
    正在将用户“tom”从“jishu”组中删除

    [root@node01 ~]# grep "jishu" /etc/group
    jishu❌2005:jerry,mike
    [root@node01 ~]#

    用户操作环境配置文件:

    从/etc/skel目录复制而来

    [root@node01 ~]# ls -a /home/userA/
    . .. .bash_logout .bash_profile .bashrc .mozilla

    .bashrc 打开新终端 /etc/bashrc
    .bash_profile 用户登录系统 /etc/profile
    .bash_logout 注销系统

    示例:设置命令别名

    alias 命令别名='命令'

    针对单个用户设置别名:

    [root@node01 ~]# vim /home/userA/.bashrc
    alias ipshow='cat /etc/sysconfig/network-scripts/ifcfg-eth0'

    [root@node01 ~]# source /home/userA/.bashrc

    针对所有用户设置别名:

    [root@node01 ~]# vim /etc/bashrc
    alias ipshow='cat /etc/sysconfig/network-scripts/ifcfg-eth0'

    [root@node01 ~]# source /etc/bashrc

    文件目录权限管理

    常规权限:
    r read 读取 4
    w write 写入 2
    x execute 执行 1

    文件:
    r 查看文件内容(cat/more/less/head/tail/grep)
    w 编辑文件内容(vim)
    x shell/python脚本

    目录:
    r 查看目录下的文件(ls /tmp)
    w 修改目录下的文件(新建、删除、mv)
    x 切换目录(cd)

    查看文件权限

    [root@node01 ~]# ls -l /etc/fstab
    -rw-r--r--. 1 root root 465 7月 28 2016 /etc/fstab

    查看目录权限

    [root@node01 ~]# ls -ld /etc/
    drwxr-xr-x. 136 root root 8192 4月 11 13:48 /etc/

    设置文件目录权限

    1. chmod 修改权限

    chmod {augo}{+-=}{rwx} 文件名称

    a	all 	所有
    u	user	属主用户
    g	group   属组
    o	other	其他
    

    [root@node01 ~]# chmod a+x /test/1.txt
    [root@node01 ~]# chmod g=rw /test/3.txt

    chmod nnn 文件名称

    [root@node01 ~]# chmod 600 /test/4.txt

    1. 修改文件的属主、属组

    chown 用户名称.用户组名称 文件名称

    [root@node01 ~]# chown user1.caiwu /test/1.txt

    [root@node01 ~]# chown user1 /test/2.txt

    [root@node01 ~]# chown root.caiwu /test/4.txt

    仅修改属组:

    chgrp 用户组名称 文件名称

    [root@node01 ~]# chgrp caiwu /test/3.txt

    方法2) facl ---- 文件访问控制列表

    设置权限:

    针对单个用户设置权限

    setfacl -m u:用户名:权限 文件名称

    [root@node01 ~]# setfacl -m u:user4:r /test/3.txt

    [root@node01 ~]# getfacl /test/3.txt
    getfacl: Removing leading '/' from absolute path names

    file: test/3.txt

    owner: user1

    group: user3

    user::rw-
    user:user4:r--
    group::rwx
    mask::rwx
    other::r-x

    针对单个用户组设置权限

    setfacl -m g:用户组名称:权限 文件名称

    删除facl权限

    针对单个用户删除权限

    setfacl -x u:用户名 文件名称

    [root@node01 ~]# setfacl -x u:user4 /test/3.txt

    针对单个用户组删除权限

    setfacl -x g:用户组名称 文件名称

    特殊权限:
    suid 4
    sgid 2
    sticky bit 1 # chmod 644 file01 # chmod 6644 file02 # chmod 2700

    1、suid

    作用:普通用户在执行命令期间,会临时获取到命令属主用户对操作系统的权限

    [root@node01 ~]# ls -l /usr/bin/passwd
    -rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

    设置suid权限

    chmod u+s 文件名称

    2、sgid

    针对目录设置
    作用:目录拥有sgid权限后,在目录下新创建的文件会继承目录的属组信息

    设置sgid权限

    chmod g+s 目录名称

    [root@node01 ~]# ls -ldh /linux/
    drwxr-sr-x. 2 root caiwu 18 4月 11 15:37 /linux/

    3、sticky bit

    针对目录设置
    作用:
    只有目录下文件的属主用户、目录属主用户及root可删除该文件

    [root@node01 ~]# ls -ldh /tmp/
    drwxrwxrwt. 8 root root 4.0K 4月 11 15:45 /tmp/

    设置sticky bit权限

    chmod o+t 目录名称

    chmod, chown, chgrp, setfacl

    共同选项:-R

    有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。 想到与得到中间还有两个字——做到。
  • 相关阅读:
    Android学习笔记八:String.Split("regex")相关
    Android转载六:Intent.ACTION
    Android学习笔记七:调用打电话、发短信等
    Android转载五:TextView换行问题
    常用正则表达式
    Android转载四:(布局)ImageView scaleType属性测试
    java并发容器类
    java并发编程-基础
    设计模式入门
    kafka模块概述
  • 原文地址:https://www.cnblogs.com/huoxc/p/12850797.html
Copyright © 2020-2023  润新知