美文网首页Linux
Linux操作系统--用户和用户组(八)

Linux操作系统--用户和用户组(八)

作者: 无剑_君 | 来源:发表于2019-11-02 08:04 被阅读0次

    一、用户和用户组

    用户和用户组管理,顾名思义就是添加用户和用户组、更改密码和设定权限等操作。

    Linux用户和组的关系
    用户和用户组的对应关系有以下 4 种:
    一对一:一个用户可以存在一个组中,是组中的唯一成员;
    一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
    多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
    多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。

    Linux 系统中,每个用户的 ID 细分为 2 种,分别是用户 ID(User ID,简称 UID)和组 ID(Group ID,简称 GID)。

    每个文件都有自己的拥有者 ID 和群组 ID,当显示文件属性时,系统会根据 /etc/passwd 和 /etc/group 文件中的内容,分别找到 UID 和 GID 对应的用户名和群组名,然后显示出来。

    二、用户类型

    用户分类3种:超级用户(root)、系统用户、普通用户。

    超级用户的用户名为root,它具有一切操作权力,因此为安全起见,建议不要轻易的在root账户下面对文件进行操作。在Linux操作系统的字符界面,root账户的提示符为#,且默认情况下,root用户的UID为0。
    系统用户是Linux系统正常工作所必需的内建的用户,一般是用于管理服务所用。系统用户不能用来登陆,如bin、daemon、lp等用户。系统用户的UID一般为1~499,它们的shell为/sbin/nologin。
    普通用户是为了让使用者能够使用Linux系统资源而建立的,用户新建的账号一般就是普通账号。在Linux操作系统的字符界面,普通用户的提示符为$,且普通用户的UID默认为1000~60000。

    su是最简单的用户切换命令,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换。

    与用户有关的文件是:
    /etc/passwd(用户账户文件,所有账户都可以访问)总计7段,格式为如下:
    用户名:密码:UID:GID:账户信息:账户目录:Shell版本
    /etc/shadow(用户密码文件,root才可以访问),总计9段,格式如下:
    用户名:密码:最后一次修改时间的天数:两次修改密码最小间隔天数:多少天后需要再次修改密码:从发出警告到密码正式失效的天数:禁止登陆前用户名还有效的天数:用户被禁止登陆的时间:标志字段,无意义
    注意:shadow中,密码字段为*表示用户被禁止登陆,为"!!"表示用户为设置密码,为"!"表示用户被锁定。
    passwd的密码为影子密码用X表示,而shadow中为加密后保存的密文。

    与用户组有关的文件是:
    /etc/group(用户组文件,所有账户都可以访问),总计4段,格式如下:
    用户组名称:组密码:GID:组成员
    /etc/gshadow(用户组密码文件,root权限才可以访问)总计4段,格式如下:
    用户组名称:组密码:组管理者:组成员

    # 显示用户信息
    [root@localhost ~]# id
    uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    
    [root@localhost ~]# su -
    上一次登录:五 11月  1 21:12:05 CST 2019从 192.168.56.1pts/0 上
    [root@localhost ~]# ls /etc/passwd
    /etc/passwd
    [root@localhost ~]# ls /etc/group
    /etc/group
    [root@localhost ~]# ls /etc/gshadow
    /etc/gshadow
    # 显示当前用户
    [root@localhost ~]# whoami
    root
    # 显示登录用户登录名、tty、登录日期和时间
    [root@localhost ~]# who
    root     pts/0        2019-11-01 21:12 (192.168.56.1)
    #  执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序
    [root@localhost ~]# w
     21:23:36 up 16 min,  1 user,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.56.1     21:12    0.00s  0.15s  0.03s w
    
    # 添加用户
    [root@localhost ~]# adduser admin
    # 添加密码
    [root@localhost ~]# passwd admin
    更改用户 admin 的密码 。
    新的 密码:
    # 只删除用户
    [root@localhost ~]# userdel admin
    # 连同用户主目录一块删除
    [root@localhost ~]# userdel  -r admin
    
    

    su 和 su - 的区别
    注意,使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。

    adduser和useradd的区别?
    adduser: 会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。
    useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。

    四、权限

    1. 权限简介
        所谓权限管理,其实就是指对不同的用户,设置不同的文件访问权限,包括对文件的读、写、删除等,在 Linux 系统中,每个用户都具有不同的权限,拿非 root 用户来说,它们只能在自己的主目录下才具有写权限,而在主目录之外,只具有访问和读权限。
        Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
        Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
        Linux上通常使用chmod命令对文件的权限进行设置和更改。
    2. 更改文件权限 (chmod命令)
      语法格式为 :

    chmod <abc> file...

    # 查看文件权限U(用户)G(组)O(其它用户)
    [root@localhost ~]# ls -al
    总用量 28
    dr-xr-x---.  2 root root  135 11月  1 21:06 .
    dr-xr-xr-x. 17 root root  224 11月  1 20:52 ..
    -rw-------.  1 root root 1262 11月  1 20:55 anaconda-ks.cfg
    -rw-------.  1 root root    8 11月  1 21:06 .bash_history
    -rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
    -rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
    -rw-r--r--.  1 root root  176 12月 29 2013 .bashrc
    -rw-r--r--.  1 root root  100 12月 29 2013 .cshrc
    -rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc
    
    # 设置所有人可读
    [root@localhost ~]# touch a.txt
    [root@localhost ~]# chmod ugo+r a.txt
    [root@localhost ~]# ls -l a.txt
    -rw-r--r--. 1 root root 0 11月  1 21:40 a.txt
    
    
    1. 更改文件拥有者(chown命令)
      linux/Unix 是多人多工作业系统,每个的文件都有拥有者(所有者),如果我们想变更文件的拥有者(利用 chown 将文件拥有者加以改变),一般只有系统管理员(root)拥有此操作权限,而普通用户则没有权限将自己或者别人的文件的拥有者设置为别人。
      语法格式:

    chown [可选项] user[:group] file...

    # 将目前目录下的所有文件与子目录的拥有者皆设为admin,组体的使用者admin:
    [root@localhost ~]# chown admin a.txt
    
    

    十位权限表示:
    常见的权限表示形式有:

    -rw------- (600)      只有拥有者有读写权限。
    -rw-r--r-- (644)      只有拥有者有读写权限;而属组用户和其他用户只有读权限。
    -rwx------ (700)     只有拥有者有读、写、执行权限。
    -rwxr-xr-x (755)    拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
    -rwx--x--x (711)    拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
    -rw-rw-rw- (666)   所有用户都有文件读、写权限。
    -rwxrwxrwx (777)  所有用户都有读、写、执行权限。
    

    关于第一位最高位的解释: 上面我们说到了权限表示中后九位的含义,剩下的第一位代表的是文件的类型,类型可以是下面几个中的一个:

    d代表的是目录(directroy)
    -代表的是文件(regular file)
    s代表的是套字文件(socket)
    p代表的管道文件(pipe)或命名管道文件(named pipe)
    l代表的是符号链接文件(symbolic link)
    b代表的是该文件是面向块的设备文件(block-oriented device file)
    c代表的是该文件是面向字符的设备文件(charcter-oriented device file)
    

    后九位解析:我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。

    1. 置了用户创建文件的默认权限
      语法:

    umask: usage: umask [-p] [-S] [mode]
    -p:打印当前umask值
    -S:显示当前掩码
    mode:设置为umask值
    系统管理员必须要为你设置一个合理的 umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。

    [root@localhost ~]# umask 
    0022
    # 修改umask 值
    [root@localhost ~]# umask 022
    
    [root@localhost ~]# umask -S
    u=rwx,g=rx,o=rx
    
    

    显然O 用户缺省w 权限,即默认创建文件或文件夹时,缺省O中的w 权限。只不过创建文件时,默认都不会给x的权限,而创建文件夹时是默认给x权限。

    相关文章

      网友评论

        本文标题:Linux操作系统--用户和用户组(八)

        本文链接:https://www.haomeiwen.com/subject/iqlynqtx.html