用户身份

root用户是存在于所有类UNIX操作系统中的超级用户,它拥有最高的系统所有权。root用户的用户身份号码UID为0,UID相当于用户的身份证号码一样,具有唯一性。管理员用户(超级用户)UID为0;系统用户UID为1~999(不同的系统不一样),Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整个服务器,默认服务会有独立的系统用户负责运行,进而有效控制被破坏的范围(windows是单用户操作系统,一旦该用户被入侵,则有权限对整个环境进行操作),系统用户只是用来管理某一项具体的服务,因此不需要登陆该系统服务器中,其终端解释器为/sbin/nologin,因此该用户被入侵时,并不能提权至整台服务器;普通用户的UID从1000开始(即使前面有闲置的号码),是由管理员创建的日常工作的用户。

用户组分为基本用户组(-g)和扩展用户组(-G)。用户组身份号码GID可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户被纳入其它用户组,则这个其它用户组称之为扩展用户组。一个用户只能拥有一个基本用户组,可以拥有多个扩展用户组。 用id命令可以查看:用户的用户身份号码(用户名);基本用户组身份号码(基本用户组名);扩展用户组身份号码(扩展用户组名)。在默认情况下,基本用户组名与用户名一样,除非自己指定。

useradd命令  用于创建新的普通用户,该命令创建的用户目录默认会存放在/home目录中,默认的shell解释器为/bin/bash,而且会默认创建一个与其同名的基本用户组。  -d 指定家目录  -u指定用户的UID  -g指定一个基本用户组(必须是存在的组,没有就要创建)  -G指定扩展用户组   -N不创建与用户同名的基本用户组  -s指定用户的shell解释器   useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe  创建了一个名为linuxprobe的用户   # id linuxprobe  输出为:uid=8888(linuxprobe) gid=8888(linuxprobe) groups=8888(linuxprobe)  此时用户只有基本用户组(名字为linuxprobe),没有扩展用户组

groupadd命令  用于创建组(基本或者扩展)    groupadd zsx     创建一个名为zsx的组

usermod命令  修改用户的属性  用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令来修改已经创建的用户信息,如用户的UID、基本/扩展用户组、默认终端等。-g 变更基本用户组   -G 变更扩展用户组   -s变更默认终端   -u修改用户的UID     usermod -G root linuxprobe 增加扩展用户组root, 则id查看信息为: uid = 8888 (linuxprobe)  gid=8888  (linuxprobe)  groups=8888(linuxprobe),0(root)   可见其扩展用户组名为root,扩展用户组身份号码为0。这里在次变更: usermod -G zsx linuxprobe  变为:  uid=8888(linuxprobe)  gid= 8888 (linuxprobe)    groups = 8888(linuxprobe) ,1001(zsx)

passwd命令    passwd命令用于修改用户的密码,格式:passwd  用户名  仅仅只有passwd,则为修改自己的密码。   -l 锁定用户,禁止其登陆   -u解除锁定,允许其登陆   passwd -l luciusvorenus    --stdin 允许通过管道符方式来设定用户密码     echo "zsx" | passwd --stdin luciusvorenus

userdel命令 删除用户   userdel linuxprobe 删除该用户,但是家目录/home/linuxprobe会保留下来,可添加-r参数,连同家目录一起删除    -f 强制删除用户

文件权限与归属
        -为普通文件(一般文件、文本文件);d为目录文件;l为软链接文件;b为块设备文件;c为字符设备文件(设备文件为硬件映射形成的文件,如硬盘等);p为管道文件;s为socket文件。

文件的所有者(所属主)、所属组和其它用户对该文件所拥有的可读(r,4)、可写(w,2)和可执行(x,1)等权限。对目录文件来说,可读表示能够读取目录内的文件列表;可写表示能够在目录内新增、删除和重命名 文件;可执行表示能够进入该目录。 文件的权限表示:rwxrw-r--  用数字表示则为: 764     -rwxr--r--. 1 root root 206 Sep 29 21:24 ex.sh    该文件为普通文件,所属主(所有者)为root用户,拥有7权限;所属组为root,拥有4权限;其他用户拥有权限4。所属主前面的数字1代表该文件的硬链接数(即实际指针的文件个数,软链接不算)为1个。该文件的磁盘占用大小为206个字节,最后一次修改的时间为9月29日的21:24分,文件的名称为ex.sh。

SUID特殊权限位(u+s)
        SUID、SGID和SBIT的特殊权限位,是一种对文件进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现的功能。SUID拥有权限4,SGID拥有权限2,SBIT拥有权限1。rwsrwSrw-用数字表示为:其一般权限为rwxrw-rw-,即为766,载加上特殊权限,则为6766。第一个6为4+2。SUDI特殊权限位仅对拥有执行权限的二进制程序有效,即当用户执行该二进制程序时,可以临时拥有该二进制程序所属主(所有者)的身份。对于/etc/passwd  -rw-r--r--. 1 root root 1926 Sep 29 21:50 /etc/passwd     除了root管理员之外,其余所有用户都只能读取该文件信息,不能修改;对于/etc/shadow(保存了用户的密码)
----------. 1 root root 1990 Sep 29 18:48 /etc/shadow  除了root用户外,其余任何用户都不能读取、修改该文件; 对于passwd命令文件:-rwsr-xr-x. 1 root root 27832 Jan 29  2014 /bin/passwd  该文件是二进制程序文件,所有用户都可以执行该文件,因此任何一个用户执行该文件时,都会临时获得该文件所属主的身份,即root身份,进一步利用该身份可以取修改/etc/shadow和/etc/passwd文件的信息了(把变更的密码信息写到/etc/shadow文件中)。 rwx变为rws  rw-变为rwS  后面一样 rwt  rwT

SGID特殊权限位(g+s)

SGID特殊权限位实现两种功能:1.让执行者临时拥有属组的权限(身份)(仅对拥有执行权限的二进制程序有效);2.对目录文件进行设置时,在该目录文件中创建的文件自动继承该目录的用户组(只可以对目录设置)。对于/dev/kmem文件(早期的linux系统才会有):cr--r----- 1 root system 2, 1 Feb 11 2017 kmem  该文件为字符设备文件,只有root用户和system组内的用户才可以读取该文件,其余用户不能访问。ps命令文件:    -rwxr-sr-x. 1 bin system 100120 Feb 27  2014 /usr/bin/ps  该文件为二进制程序,当任何一个用户执行该文件时,可以临时获得所属组的身份(system),从而可以读取kmem文件中的信息,获得系统中所有进程的状态信息。利用SGID特殊权限位,可以为一个部门内部所有用户设置一个共享目录,即首先将所有用户划分为一个组,然后设置这个目录的用户组就为该部门成员所在的那个组:# mkdir /tmp/haha       drwxrwxr-x. 2 root root 6  Mar  5 15:46 haha  可以看出该目录文件的用户组为root,则root组内的用户都可以该目录读、写和执行。赋予该目录SGID特殊权限位: chmod g+s /tmp/haha   则:drwxrwsr-x. 2 root root 6 Mar  5 15:46 haha  则root组内任何一个用户在该目录内部创建文件时,创建的文件的所属组都为root,从而该文件能够被组内所有用户访问,即实现了组内用户的共享目录。   注意:在对目录设置SGID权限之前目录内的所有文件的所属组在设置SGID权限后不会发生变化。比如:chown root:bin /tmp/haha   此后,创建的文件的所属组为bin  之前的文件依然为root    在默认情况下,一个用户创建的文件的所属主为该用户,所属组为该用户的基本用户组。一个用户的基本用户组只有该用户一个成员,且默认情况下组名与用户名相同。  当创建或传送一个文件,这个文件的所属主就为执行这个操作的用户。

chmod和chown命令

chmod命令用于设置一个文件的权限位,包括一般权限和特殊权限。对于文件zs,所有者可读可写可执行,对于所属组可读可写,对于其它用户没有任何权限,即rwxrw----,其对应的数字为760,则:chmod 760 zs  要设置为:rwsrw----,则: chmod 4760 zs chown命令用于设置文件的所有者和所属组。其格式为:chown  所有者:所属组 文件或目录名称   chown bin:root zs  设置zs文件的所有者为bin,所属组为root  
        SUID特殊权限位的设置: chmod  u+s 文件名称(仅对可执行的二进制程序文件有效)
        SGID特殊权限位的设置: chmod  g+s 文件名称(仅对可执行的二进制程序文件有效)
                       chmod  g+s 目录名称(仅对目录文件有效)
        SBIT特殊权限位的设置: chmod  o+t 目录名称
共性:chmod与chown命令在对目录文件进行操作时,加上-R参数表示递归操作,即对目录内所有的文件进行整体操作。不加-R参数,只是对目录进行设置。
u 代表所属主  g代表所属组  o代表其它用户 a代表全部用户, 如 chmod u+x ex.sh 表示对ex.sh文件的所属主增加执行权限(x)。  r w x s t 也可以用字母指明,可以不用数字   chmod +x file 和 chmod a+x file等价。

SBIT特殊权限位(o+t)  仅对目录设置
        对于一个共享目录,在设置了SGID特殊权限位后,该目录及目录内部创建的所有文件的用户组都为该部门成员。为了防止一个人的文件被其他用户删除,则可以设置SBIT特殊权限位。SBIT特殊权限位可以确保用户只能删除自己的文件,不能删除他人的文件(root用户除外),即只能被文件的所有者执行删除操作。 如RHEL7系统中的/tmp为一个共享目录,默认已经设置好了SBIT特殊权限位: drwxrwxrwt. 61 root root 4096 Oct  6 22:35 /tmp     则,在该目录中创建的文件只能够被该文件的所有者和root用户删除,其余人都没有权限删除。 即使该文件的权限最大(777),且目录允许进行读、写和执行,但还是无法删除该文件。
        另外需要注意,一个文件能否被删除不取决于自身的权限,而取决于其所在目录是否有写入权限。如 /tmp/haha目录: drwxr-sr-x. 2 root root 16 Mar  5 16:18 haha  可见对与该文件,只有root用户有写入权限,即新增、重命名和删除目录内的文件,其它任何用户都不能在该目录内部创建、删除或者重命名文件,只能进入该目录和读取该目录内部的文件列表。  chmod 775 haha   则:drwxrwsr-x. 2 root root 6 Mar  5 16:43 haha   则此时root组内成员增加了写权限,而账户zsx为root组内成员,此时zsx用户可以在目录内部新增、重命名和删除文件。   综上,对文件的删除、新增和重命名并不取决于文件本身,而是取决于文件所在的目录。     chmod o+t /tmp/zsx

文件的隐藏权限
        文件被隐藏起来的权限,默认情况下不能被用户察觉。
        chattr命令用于设置(增加或删除)文件的隐藏权限: chattr +参数 filename 增加隐藏权限  chattr -参数  filename 删除隐藏权限    i 无法对文件进行修改(本身无法删除,内容无法修改),对于目录文件,仅能修改其中的子文件内容,不能新建或删除文件。  a 仅允许补充(追加)内容,不能覆盖/删除内容,也不能删除该文件或对文件重命名。     chattr +a zs 此时zs文件所在的目录即使开放了用户可以删除文件的权限,但是该文件依然不能删除,因为设置了隐藏权限。 移出: chattr -a zs      lsattr filename 用于查看文件的隐藏权限  ls命令是无法查看文件的隐藏权限的。

文件访问控制列表ACL
        用于对某个指定的用户(u)或用户组(g)进行单独的权限设置,基于普通文件或者目录文件设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限。如果针对目录设置了ACL且采用了-R参数,则目录中的文件会继承其ACL;若针对文件设置了ACL,则文件不再继承其所在目录的ACL。
        setfacl命令 用于设置文件的ACL(文件访问控制列表),对于普通文件采用-m参数即可;对于目录文件若采用-m参数,则仅仅只是对目录文件进行ACL的设置,对目录内的其余文件没有影响(注意,必须清晰目录权限与目录内部文件的权限之间的区别与联系,严格遵守),若采用-Rm参数,则对目录和目录内部所有文件都设置ACL,即对于某个特定的用户或用户组有哪些权限,如果目录内部已经有文件设置了ACL,则该文件不再继承目录的ACL。setfacl -b filename 用于删除对文件已经设置好了的ACL。下面示例:
setfacl -m u:zsx:rx /root 
setfacl -Rm u:zsx:rwx /root/work/      对/root/work目录设置ACL u指定用户 g指定用户组 
getfacl guess.sh         guess.h文件是该目录内部的文件,可见该文件继承了目录的ACL
# file: guess.sh   文件名
# owner: root     所属主
# group: root    所属组
user::rw-    
user:zsx:rwx
group::r--
mask::rwx   有效权限
other::r--
注意:zsx用户要能进入到/root/work目录,还必须对/root目录也要设置ACL(上面第一条),若只是
对/root/work目录进行设置,仍然进入不了该目录。
getfacl /root/
# file: root/
# owner: root
# group: root
user::r-x
user:zsx:r-x
group::r-x
mask::r-x   
other::---
getfacl /root/Desktop/
# file: root/Desktop/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x   可见目录Desktop/并没有继承目录/root的ACL,因为上面没有使用-R参数
setfacl -b /root/
getfacl /root/
# file: root/
# owner: root
# group: root
user::r-x
group::r-x
other::---   可见已经删除了ACL
setfacl -m g:wheel:rwx work/   针对wheel用户组设置权限
getfacl work/
# file: work/
# owner: root
# group: root
user::rwx
group::r-x
group:wheel:rwx
mask::rwx
other::r-x
    getfacl命令 可以查看文件的所属主、所属组、各种权限和ACL权限。如查看/root目录:
getfacl /root/
# file: root/
# owner: root
# group: root
user::r-x  所属主权限
group::r-x  所属组权限
other::---   其它用户权限
如查看/root/work/:
getfacl work/
# file: work/
# owner: root
# group: root
user::rwx
group::r-x
group:wheel:rwx 
mask::rwx    有效权限  
other::r-x

dr-xr-x---+ 17 root root 4096 Mar  5 15:12 /root 采用ls命令可以查看文件是否设置了ACL,.号会变为+号。但是这也不是绝对的,如果文件的ACL是继承了目录的,那么用ls命令查看其属性依然为.号,因此查看一个文件是否设置ACL,最准确的方法是使用getfacl命令。注意:某个用户或用户组的权限并不是只根据ACL配置来决定的,它是由该用户或用户组基本权限与配置的ACL权
限的“与”运算决定的,即other:r-x 与 wheel:rwx = wheel:r-x  即实质上wheel组内的用户对该目录(上面的/root/work/目录)只有读和执行权限。对于有效权限mask:用户或组所设置的权限必须要存在于mask的权限设置范围内才会生效,否则无效。设置mask
的方法: setfacl -m m:w  filenanme  即设置文件filename的有效权限mask为w(写)。

su命令与sudo服务(visudo)
        su命令可以解决切换用户身份的要求。 su与su -是有区别的,前者只是切换了身份,但Shell环境仍然是原来用户的Shell(环境不变);而后者连用户和Shell环境一起切换成新用户身份了。只有切换了Shell环境才不会出现PATH环境变量错误。
        sudo命令可以把特定命令的执行权限赋予给指定用户,这样既可以保证普通用户完成特定的工作,又可以避免密码的泄漏。sudo服务的配置原则:在保证普通用户完成工作的前提下,应当尽量少赋予额外的权限。格式:sudo  命令名称  
        sudo命令具有如下功能:限制用户执行指定的命令;记录用户执行的每一条命令;配置文件/etc/sudoers提供集中的用户管理、权限与主机等参数;验证密码的后5分钟内(默认值)无需再让用户再次验证密码。
        对于/etc/sudoers文件:-r--r-----. 1 root root 4000 Jan 15  2014 /etc/sudoers  可以看出,只有只有管理员用户才可以对该配置文件进行修改,管理员和root组用户可以对该文件查看。        sudo命令文件:---s--x--x. 1 root root 130712 Feb 26  2014 /usr/bin/sudo 该文件具有SUID特殊权限位,即任何用户利用sudo命令都可以临时获得root管理员的身份,从而可以读取和修改配置文件/etc/sudoers。如果担心直接修改配置文件/etc/sudoers会出现问题,也可以使用sudo命令提供的visudo命令来配置用户权
限,该命令在配置用户权限时将禁止多个用户同时修改sudoers配置文件,还可以对配置文件内参数进行语法检查,并在发现参数错误时进行报错。只有root管理员才可以使用visudo命令编辑sudo服务的配置文件。visudo命令配置sudo命令的配置文件/etc/sudoers时,其操作方法与Vim编辑器中用到的方法相同。综上,sudo命令文件的服务配置文件为/etc/sudoers,可以直接进行编辑,也可以使用visudo命令进入编辑。
    sudo -h 列出帮助信息    sudo -l列出当前用户可以执行的命令                                                                                                                         # visudo
    (大约第99行:)
    root               ALL=(ALL)         ALL       //可以再下面接着添加(配置)某个用户的限制命令
谁可以使用  允许使用的主机=(以谁的身份) 可以执行的命令(必须用绝对路径)
   luciusvorenus      ALL=(ALL)       /usr/bin/ls                                                                                                                                                      允许使用的主机: 外部网络或者内部网络登陆进入系统,当采用ALL时,无论是本地还是远程登陆的主机都可以允许使用规定的服务。
以谁的身份:ALL代表可以以任何用户的身份,相当于root。 (ALL)=(root)
如果有多个命令,则命令之间用逗号进行间隔。在进行了以上配置以后,luciusvorenus用户使用:sudo ls命令就相当于root用户使用ls命令了,可以查看/root目录内的内容等(初次使用sudo需要luciusvorenus用户的密码,默认时间为5分钟,5分钟内无需再让用户再次验证密码),如下:
# ls /root
ls: cannot open directory /root: Permission denied
# sudo ls /root
[sudo] password for luciusvorenus: 
anaconda-ks.cfg  Desktop  Documents  Downloads    gongxiang  initial-setup-ks.cfg  Music    Pictures  
Public  Templates  Videos  work                                                                                                                                                                          为了避免用户在输入 sudo 命令 时频繁的验证用户的密码,可以将上面那一行内容改为如下内容:
luciusvorenus      ALL=(ALL)    NOPASSWD:    /usr/bin/ls

用户身份与文件的权限(普通权限、特殊权限、隐藏权限和文件控制列表ACL)相关推荐

  1. 第七节 红帽认证培训 用户身份与文件权限(5.1-5.3)

    第七节 红帽认证培训 用户身份与文件权限(5.1-5.3) 文章目录 5.1 用户身份与能力 1.id 命令 2.useradd命令 3.groupadd命令 4.usermod命令 5. passw ...

  2. 第八节 红帽认证培训 用户身份与文件权限(5.4-5.6)

    第八节 红帽认证培训 用户身份与文件权限(5.4-5.6) 文章目录 5.4 文件的隐藏属性 1.chattr命令 2.lsattr命令 5.5 文件访问控制列表 1.setfacl命令 2.getf ...

  3. Linux 命令之 sudoedit -- 以另外一个用户身份编辑文件

    文章目录 命令介绍 常用选项 参考示例 以用户 root 身份来编辑指定的文件 以其它用户身份编辑指定的文件 命令介绍 查看使用帮助,感觉和命令 sudo 完全一样. [mysql@htlwk0001 ...

  4. linux用户没有创建文件的权限设置密码,Linux学习第五章用户身份与文件权限

    一.用户身份与能力 Linux系统中一共有三种用户 第一种:管理员  root  UID =0 第二种:系统用户 不需要登录系统  负责单一服务的运行  UID = 0-1000 第三种:普通用户 日 ...

  5. Linux基础(用户身份和文件权限)

    用户身份与能力 Linux是一个多用户.多任务的操作系统,具有很好的稳定性与安全性,在幕后保障Linux系统安全则是一系列复杂的配置工作. Linux系统的管理员之所以是root,并不是因为它的名字叫 ...

  6. 就该这么学llinux 第五章用户身份与文件权限

    文件的特殊权限 单纯对文件位置的rwx权限肯定不能满足我们对安全.便捷工作的需求,所以便有了SUID与SGID的特殊权限机制 SUID:让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效) ...

  7. Linux学习笔记-用户身份与文件权限

    一.用户身份与能力 在Linux RHEL8中,用户身份为: 管理员UID为0:系统的管理员用户 系统用户UID为1~999:Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认 ...

  8. 第5章 用户身份与文件权限

    文件权限与归属.特殊权限.隐藏属性.文件访问控制列表.su命令与sudo服务 文件的归属 所有者(u)用户组(g)其他人(o),读(r).写(w).执行(x)等操作,以及如何在Linux系统中添加.删 ...

  9. python查看文件夹文件的所有权限,Python判断某个用户对某个文件的权限

    在Python我们要判断一个文件对当前用户有没有读.写.执行权限,我们通常可以使用os.access函数来实现,比如: # 判断读权限 os.access(, os.R_OK) # 判断写权限 os. ...

最新文章

  1. Mysql数据库的简单备份与还原_史上最简单的MySQL数据备份与还原教程
  2. 利用C语言创建和使用DLL文件
  3. java中Collections常用方法总结(包括sort,copy,reverse等)
  4. Memcached的安装与使用
  5. doc.update
  6. 详解用backgroundImage解决图片轮播切换
  7. 在XP下,如何使指定的用户在登录界面可见
  8. Windows核心编程_重绘ListBox样式(仿QQListBox)
  9. 1.12 Linux查看用户信息
  10. 翻译: 4.2. 从零开始实现多层感知器MLP pytorch
  11. 用Python做一个无限弹窗
  12. java哪些地方用到了工厂模式_【java】实际开发中哪些场景需要用到工厂模式?...
  13. BOB靶机渗透实战-----攻略(大神勿喷)
  14. 年终个人对公司所提的建议
  15. 卡在装备配置计算机,win10开机卡logo的小伙伴有福了,赶紧看过来!
  16. Linux常用命令之Linux常用命令实战知识点
  17. java开发环境(java开发环境和运行环境)
  18. 利用Solidworks Motion将带有质量信息和关节约束的三维模型导入ADAMS
  19. Excel - 将 TXT 数据导入到 Excel 中(自动将数据拆分成多列)
  20. mysql根据时间查询_MySql根据时间查询数据

热门文章

  1. TClientDataSet使用要点
  2. 从控件开发的角度看几个editor控件,Freetextbox,radtoolbar,abouteditor,cuteeditor
  3. linux 挂载有数据硬盘分区,linux下磁盘分区、挂载知多少
  4. mysql数据库version版本控制_MySQL数据库版本控制
  5. python地板除与除法的区别_“地板除”还是“取整除”?地板除和天花板除floor division和ceil devision...
  6. java中重新加载指定文件_java-更改后重新加载属性文件
  7. android 美颜录像,Android 关于美颜/滤镜 利用PBO从OpenGL录制视频
  8. fis pure开发php,50个精品网站鉴赏
  9. java单击切换div_[Java教程]点击同一按钮实现div的隐藏与现实切换
  10. java方法执行的时间_计算Java中任意一个方法的执行时间的工具类