2019-06-27 19:27:32 huang_cheng_zhi 阅读数 2598
  • Linux核心技能-用户权限详解

    Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    12740 人正在学习 去看看 马永亮

在Linux操作系统中,root的权限是最高的,相当于windows的administrator,拥有最高权限,能执行任何命令和操作。在系统中,通过UID来区分用户的权限级别,UID等于0,表示此用户具有最高权限,也就是管理员。其他的用户UID依次增加,通过/etc/passwd用户密码文件可以查看到每个用户的独立的UID。

每一个文件或者目录的权限,都包含一个用户权限、一个组的权限、其他人权限,例如下:

标红第一个root表示该文件所有者是root用户,第二个root代表该文件的所属的组为root组,其他用户这里默认不标出。

 [root@node1 ~]# ls -l monitor_log.sh

-rw-r--r-- 1 root root 91 May  7 20:21 monitor_log.sh

[root@node1 ~]#

如果我们想改变某个文件的所有者或者所属的组,可以使用命令chown

chown  –R  test:test  monitor_log.sh即可。

每个Linux文件具有四种访问权限:可读(r)、可写(w)、可执行(x)和无权限(-)。
利用ls -l命令可以看到某个文件或目录的权限,它以显示数据的第一个字段为
 准。第一个字段由10个字符组成,如下:
    [root@node1 ~]# ls -l monitor_log.sh

-rw-r--r-- 1 root root 91 May  7 20:21 monitor_log.sh

[root@node1 ~]#
    第一位表示文件类型,-表示文件,d表示目录;后面每三位为一组。
   第一组:2-4位表示文件所有者的权限,即用户user权限,简称u
   第二组:5-7位表示文件所有者所属组成员的权限,group权限,简称g
   第三组:8-10位表示所有者所属组之外的用户的权限,other权限,简称o

从上面这个文件,我们可以看出,monito_log.sh文件对应的权限为:

root用户具有读和写的权限,root组具有读的权限,其他人具有读的权限。

为了能更简单快捷的使用和熟悉权限,rwx权限可以用数字来表示,分别表示为r(4)、w(2)、x(1)。

Monitor_log.sh权限可以表示为:644

如果给某个文件授权,命令为chmod:chmod 777 monitor_log.sh

 

在Linux系统中有时为了保护文件不被修或者删除 可以使用 chattr 命令来给文件设置相应的属性:

chattr -i logs.txt

  如果给文件设置了i属性,那么,文件只能被查看,不能修改删除该文件。但如果给目录设置该属性的话,只能修改目录中的文件,不能增加或删除文件。

  如果给文件设置了 a属性,则只能以追加的方式写入文件,不能修改删除,如果是目录,则只允许建立新文件。

   如果在操作中切换用户,先退出再登陆太麻烦,可以使用su命令切换用户,如 su mysql 这时,系统就会提示你输入密码,完成以后就能直接切换到mysql用户了。

2018-02-10 16:09:44 YongshuangZhao 阅读数 1116
  • Linux核心技能-用户权限详解

    Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    12740 人正在学习 去看看 马永亮

用户和权限的基本概念

基本概念

用户是Linux系统工作中重要的一环,用户管理包括用户管理

在Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限

在Linux中,可以指定每一个用户针对不同的文件或者目录的不同权限

对于文件/目录的权限包括:


为了方便用户管理,提出了组的概念,如下图所示


在实际应用中,可以预先针对组设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限

ls-l扩展

ls-l可以查看文件夹下文件的详细信息,从左到右依次是:

权限,第1个字符如果是d表示目录

硬链接数,通俗地讲,就是有多少种方式,可以访问到当前目录/文件

拥有者,家目录下文件/目录的拥有者通常都是当前用户

,在Linux中,很多时候,会出现组名和用户名相同的情况

大小

时间

名称


chmod简单使用

chmod可以修改用户/组文件/目录的权限

命令格式如下:


提示:以上方式会一次修改拥有者/组权限

超级用户

Linux系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限

在大多数版本的Linux中,都不推荐直接使用root账号登录系统

在Linux安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为"标准用户"

sudo

su是substitute user的缩写,表示使用另一个用户的身份

sudo命令用来以其他身份来执行命令,预设的身份为root

用户使用sudo时,必须先输入密码,之后5分钟的有效期限,超过期限则必须重新输入密码

若其为经授权的用户企图使用sudo,则会发出警告邮件给管理员

组管理终端命令

提示:创建组/删除组的终端命令都需要通过sudo执行


提示:

组信息保存在/etc/group文件中

/etc目录是专门用来保存系统配置信息的目录

在实际应用中,可以预先针对设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限

用户管理终端命令 

提示:创建用户/删除用户/修改其他用户密码的终端命令都需要通过sudo执行

创建用户/设置密码/删除用户

提示:

创建用户时,如果忘记添加-m选项指定新用户的家目录,最简单的方法是删除用户,重新创建

创建用户,默认会重建一个和用户名同名的组名

用户信息保存在/etc/passwd文件中

查看用户信息

passwd文件

/etc/passwd文件存放的是用户的信息,由6个分号组成的7个信息,分别是

1.用户名

2.密码(x,表示加密的密码)

3.UID(用户标识)

4.GID(组标识)

5.用户全名或本地账户

6.家目录

7.登录使用的Shell,就是登录之后,使用的终端命令,Ubuntu默认是dash

usermod命令

usermod可以用来设置用户主组/附加组登录Shell,命令格式如下:

主组:通常在新建用户时指定,在etc/passwd的第4列GID对应的组

附加组:在etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限

提示:设置了用户的附加组之后,需要重新登录才能生效!


注意:默认使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用以下命令,将用户添加到sudo附加组中


which命令

提示:

/etc/passwd是用于保存用户信息的文件

/usr/bin/passwd是用于修改用户密码的程序

which命令可以查看执行命令所在位置,例如:


bin和sbin

在Linux中,绝大多数可执行文件都是保存在/bin,/sbin,/usr/bin,/usr/sbin

/bin (binary)是二进制执行文件目录,主要用于具体应用

/sbin (system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理

/usr/bin (user commands for applications) 后期安装的一些软件

/usr/sbin (super user commands for applications)超级用户的一些管理程序

提示:

cd这个终端命令是内置在系统内核中的,没有独立的文件,因此用which无法找到cd命令的位置

切换用户

su不接用户名,可以切换到root,但是不推荐使用,因为不安全

修改文件权限

命令格式如下:


chmod在设置权限时,可以简单地使用三个数字分别对应拥有者/组其他用户的权限



2017-10-02 00:51:52 baidu_26799163 阅读数 116
  • Linux核心技能-用户权限详解

    Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    12740 人正在学习 去看看 马永亮

linux用户权限

用户管理

  • 增加用户:# useradd [用户名]

    例如useradd liux

  • 设置用户密码:# passwd [用户名]

    例如passwd liux

  • 显示用户信息:# id [用户名]

    • 通过命令:id liux

    • 通过查看文件: cat /etc/passwd

  • 删除用户:# userdel [用户名]

    例如userdel liux

  • 临时关闭用户:

    • 在/etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上*就可以了。想恢复该用户,去掉*即可。
    • 使用如下命令关闭用户账号:

      passwd peter –l

  • 重新释放用户:

    passwd peter –u

用户组管理

  • 增加工作组:groupadd [组名]

    例如groupadd chimp

  • 删除工作组:groupdel [组名]

    例如gruopdel chimp

  • 新建用户同时增加工作组: useradd -g [组名] [用户名]

    例如useradd -g chimp liux

  • 给已有的用户增加工作组的方式:

    • usermod -G [组名] [用户名]

    • usermod -a [组名] [用户名]

    • gpasswd -a [用户名] [组名]

  • 从组中删除用户

    • 编辑/etc/group 找到 [用户组] 那一行,删除 [用户]

    • 用命令:gpasswd -d [用户名] [组名]

      gpasswd -d liux chimp

2018-06-05 01:09:31 tp15868352616 阅读数 141
  • Linux核心技能-用户权限详解

    Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    12740 人正在学习 去看看 马永亮

Linux的用户分为两种:

    1.管理员用户:

        管理员用户只有一个,UID=0,的就是管理员用户;
         一般情况下,默认它的用户名root
        家目录: /root
        root        :x       :0      :0     :root    :/root    :/bin/bash
       用户名    密码   UID   GID    组名    家目录  所用 shell

   2.普通用户:

    1. 自己创建的新用户,默认UID从500开始

        家目录:  /home/${username}
        eg:
        huadian    :x     :500   :500  :huadian   :/huadian    :/binbash
          用户名   密码   UID   GID     组名           家目录        所用 shell
       
         一般创建的用户:

                GID(gid)和UDI(uid)一样
                gName 和 uName 一样

     2.获取用户信息文件:

        用户信息文件 的绝对地址:  /etc/passwd

        用户组信息文件 的绝对路径: /etc/group

     3.用户和用户组的操作:

        创建用户:
            useradd+空格+用户名
 
            
            
              删除用户:
            userdel+空格+用户名

            加上 r 属性,删除用户的同时删除用户组


           
             创建组:
            groupadd+空格+组名

           
            
              删除组:
            groupdel+空格+组名

           
          设置密码:
            passwd+空格+用户名
            
           
           切换用户: 
            su+空格+ - +用户名 (切换普通用户)
            su+空格+-      切换到管理用户
                管理用户切换到普通用户不需要密码;
                普通用户切换到管理用户需要密码;
                普通用户切换到普通用户也需要密码;
                  退出:exit

      4.权限详情

        Linux中的用户权限分类:
            所有者( u )         同组用户( g )          其他人( o )
        Linux中的文件权限:
            读( r )                写( w )             执行( x )     没有权限( - )
        文件权限详情:
        
        -rw-r--r--.     2  root  root    11        Jun  3 01:32 bb.text
       
drwxr-xr-x.   2  root   root   4096    Jun  2 07:46 b

         (第1位)   -文件;   d目录
         (第2~4位)   所用者权限
         (第5~7位)   同组权限
         (第8~10位)    其他人权限  
         (第11位: "2")  该文件的连接数(同快捷键)
        (第12~13位: root  root )   文件所属者  文件所属组
         (第14位: 11)     文件大小
        (第15位: Jun  3 01:32)    最后修改时间

      5.修改权限:

           命令:  chmod [添加或者删除权限] 要修改权限的文件
       需求:将下面的文件给用户添加写的权限
      -rw-r--r--. 2 root root   11 Jun  3 01:32 bb.text

      方式一:通过字符修改
chmod o+w bb.text
添加权限:+
删除权限:-
        chmod o+w,g+w bb.text:给其他人和同组用户写权限
        chmod a+w bb.text:给所有用户
      
      方式二:  3位8进制表示 (1表示有权限!0表示没有)
            rw-r--r--:(110 100 100)2  == 644
    chmod 644 bb.text
   rwxrwxrwx:(111 111 111)2  == 777
   chmod 777 bb.text
            

     6.修改文件所属用户和用户组:

        chown username:groupName file    设置文件所属用户和用户组
chown :groupName file    设置文件所属用户组
        chown username: file    设置文件所属用户
        -R:递归修改所属用户和所属组 

7.总结:

useradd    注:添加用户
adduser    注:添加用户
passwd     注:为用户设置密码
usermod    注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov      注:同步用户从/etc/passwd 到/etc/shadow
pwck       注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv   注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger     注:查看用户信息工具
id         注:查看用户的UID、GID及所归属的用户组
chfn       注:更改用户信息工具
su         注:用户切换工具
sudo       注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo     注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;

sudoedit   注:和sudo 功能差不多;

                                         

作者:唐平

时间:2018-6-5

2020-01-24 23:20:07 sinat_32366329 阅读数 101
  • Linux核心技能-用户权限详解

    Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    12740 人正在学习 去看看 马永亮

linux权限

缺乏安全性的系统不是完整的系统。系统中必须有一套能够保护文件免遭非授权用户浏览或修改的机制。Linux沿用了Unix文件权限的办法,即允许用户和组根据每个文件和目录的安全性设置来访问文件。

linux的安全性

Linux安全系统的核心是用户账户。每个能进入Linux系统的用户都会被分配唯一的用户账户。用户对系统中各种对象的访问权限取决于他们登录系统时用的账户。

用户权限是通过创建用户时分配的用户ID(User ID,通常缩写为UID)来跟踪的。UID是数值,每个用户都有唯一的UID,但在登录系统时用的不是UID,而是登录名。登录名是用户用来登录系统的最长八字符的字符串(字符可以是数字或字母),同时会关联一个对应的密码。

Linux系统使用特定的文件和工具来跟踪和管理系统上的用户账户。

/etc/passwd文件

Linux系统使用一个专门的文件来将用户的登录名匹配到对应的UID值。这个文件就是/etc/passwd文件,它包含了一些与用户有关的信息。下面是Linux系统上典型的/etc/passwd文件的一个例子。

[root@localhost tmp]# 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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

root用户账户是Linux系统的管理员,固定分配给它的UID是 0 。就像上例中显示的,Linux系统会为各种各样的功能创建不同的用户账户,而这些账户并不是真的用户。这些账户叫作系统账户,是系统上运行的各种服务进程访问资源用的特殊账户。所有运行在后台的服务都需要用一个系统用户账户登录到Linux系统上。

在安全成为一个大问题之前,这些服务经常会用root账户登录。遗憾的是,如果有非授权的用户攻陷了这些服务中的一个,他立刻就能作为root用户进入系统。为了防止发生这种情况,现在运行在Linux服务器后台的几乎所有的服务都是用自己的账户登录。这样的话,即使有人攻入了某个服务,也无法访问整个系统。

Linux为系统账户预留了500以下的UID值。有些服务甚至要用特定的UID才能正常工作。为普通用户创建账户时,大多数Linux系统会从500开始,将第一个可用UID分配给这个账户(并非所有的Linux发行版都是这样)。

/etc/passwd文件包含了7个字段的信息,每个信息之间用:隔开,具体的信息含义如下:

  • 登录用户名

  • 用户密码

  • 用户账户的UID(数字形式)

  • 用户账户的组ID(GID)(数字形式)

  • 用户账户的文本描述(称为备注字段)

  • 用户HOME目录的位置

  • 用户的默认shell

/etc/passwd文件中的密码字段都被设置成了x,这并不是说所有的用户账户都用相同的密码。

在早期的Linux上,/etc/passwd文件里有加密后的用户密码。但鉴于很多程序都需要访问

/etc/passwd文件获取用户信息,这就成了一个安全隐患。随着用来破解加密密码的工具的不断演进,用心不良的人开始忙于破解存储在/etc/passwd文件中的密码。Linux开发人员需要重新考虑这个策略。

现在,绝大多数Linux系统都将用户密码保存在另一个单独的文件中(叫作shadow文件,位置在/etc/shadow)。只有特定的程序(比如登录程序)才能访问这个文件。

/etc/passwd是一个标准的文本文件。你可以用任何文本编辑器在/etc/password文件里直接手动进行用户管理(比如添加、修改或删除用户账户)。但这样做极其危险。如果/etc/passwd文件出现损坏,系统就无法读取它的内容了,这样会导致用户无法正常登录(即便是root用户)。用标准的Linux用户管理工具去执行这些用户管理功能就会安全许多。

/etc/shadow文件

/etc/shadow文件对Linux系统密码管理提供了更多的控制。只有root用户才能访问/etc/shadow文件,这让它比起/etc/passwd安全许多。

/etc/shadow文件为系统上的每个用户账户都保存了一条记录。记录就像下面这样:

[root@localhost tmp]# cat /etc/shadow
root:$6$Ey4l/mJXzc7QRd./$QnD9WQYpZ1i98dduoD00kZ8Jzr6ojyL8gnQW.S2U6SwZmzDc8MXoSKJvFbYRj7igNfA0loLBj7VC1tokthMfu/::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
shutdown:*:17834:0:99999:7:::
halt:*:17834:0:99999:7:::
mail:*:17834:0:99999:7:::
operator:*:17834:0:99999:7:::
games:*:17834:0:99999:7:::
ftp:*:17834:0:99999:7:::
nobody:*:17834:0:99999:7:::
systemd-network:!!:18241::::::
dbus:!!:18241::::::
polkitd:!!:18241::::::
libstoragemgmt:!!:18241::::::
abrt:!!:18241::::::
rpc:!!:18241:0:99999:7:::
sshd:!!:18241::::::
postfix:!!:18241::::::
ntp:!!:18241::::::
chrony:!!:18241::::::
tcpdump:!!:18241::::::

/etc/shadow文件包含了9个字段的信息,每个信息之间用:隔开,具体的信息含义如下:

  • 与/etc/passwd文件中的登录名字段对应的登录名

  • 加密后的密码

  • 自上次修改密码后过去的天数密码(自1970年1月1日开始计算)

  • 多少天后才能更改密码

  • 多少天后必须更改密码

  • 密码过期前提前多少天提醒用户更改密码

  • 密码过期后多少天禁用用户账户

  • 用户账户被禁用的日期(用自1970年1月1日到当天的天数表示)

  • 预留字段给将来使用

使用shadow密码系统后,Linux系统可以更好地控制用户密码。它可以控制用户多久更改一

次密码,以及什么时候禁用该用户账户,如果密码未更新的话。

添加新用户

用来向Linux系统添加新用户的主要工具是 useradd 。这个命令简单快捷,可以一次性创建新用户账户及设置用户HOME目录结构。 useradd 命令使用系统的默认值以及命令行参数来设置用户账户。系统默认值被设置在/etc/default/useradd文件中。可以使用加入了 -D 选项的 useradd命令查看所用Linux系统中的这些默认值。

[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
说明 一些Linux发行版会把Linux用户和组工具放在/usr/sbin目录下,这个目录可能不在 PATH 环境变量里。如果你的Linux系统是这样的话,可以将这个目录添加进 PATH 环境变量,或者用绝对文件路径名来使用这些工具。

在创建新用户时,如果你不在命令行中指定具体的值, useradd 命令就会使用 -D 选项所显示的那些默认值。这个例子列出的默认值如下:

  • 新用户会被添加到GID为 100 的公共组;

  • 新用户的HOME目录将会位于/home/loginname;

  • 新用户账户密码在过期后不会被禁用;

  • 新用户账户未被设置过期日期;

  • 新用户账户将bash shell作为默认shell;

  • 系统会将/etc/skel目录下的内容复制到用户的HOME目录下;

  • 系统为该用户账户在mail目录下创建一个用于接收邮件的文件。

倒数第二个值很有意思。 useradd 命令允许管理员创建一份默认的HOME目录配置,然后把它作为创建新用户HOME目录的模板。这样就能自动在每个新用户的HOME目录里放置默认的系统文件。

使用默认系统参数创建一个新用户账户,然后检查所创建的用户HOME目录。

[root@localhost ~]# useradd -m root1
[root@localhost ~]# ls -al /home/root1/
总用量 20
drwx------. 2 root1 root1 4096 1月  12 23:01 .
drwxr-xr-x. 3 root  root  4096 1月  12 23:01 ..
-rw-r--r--. 1 root1 root1   18 10月 31 2018 .bash_logout
-rw-r--r--. 1 root1 root1  193 10月 31 2018 .bash_profile
-rw-r--r--. 1 root1 root1  231 10月 31 2018 .bashrc

默认情况下, useradd 命令不会创建HOME目录,但是 -m 命令行选项会使其创建HOME目录。你能在此例中看到, useradd 命令创建了新HOME目录,并将/etc/skel目录中的文件复制了过来。记得及时使用man useradd 或者 info useradd命令查看操作。

删除用户

如果你想从系统中删除用户, userdel 可以满足这个需求。默认情况下, userdel 命令会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。

如果加上 -r 参数, userdel 会删除用户的HOME目录以及邮件目录。然而,系统上仍可能存有已删除用户的其他文件。这在有些环境中会造成问题。

[root@localhost ~]# userdel -r root1(用户名称)

警告 在有大量用户的环境中使用 -r 参数时要特别小心。你永远不知道用户是否在其HOME目录下存放了其他用户或其他程序要使用的重要文件。记住,在删除用户的HOME目录之前一定要检查清楚!

修改用户

Linux提供了一些不同的工具来修改已有用户账户的信息。

命令 描述
usermod 修改用户账户的字段,还可以指定主要组以及附加组的所属关系
passwd 修改已有用户的密码
chpasswd 从文件中读取登录名密码对,并更新密码
chage 修改密码的过期日期
chfn 修改用户账户的备注信息
chsh 修改用户账户的默认登录shell
usermod

usermod 命令是用户账户修改工具中最强大的一个。它能用来修改/etc/passwd文件中的大部分字段,只需用与想修改的字段对应的命令行参数就可以了。参数大部分跟 useradd 命令的参数一样(比如, -c 修改备注字段, -e 修改过期日期, -g 修改默认的登录组)。除此之外,还有另外一些可能派上用场的选项。

  • -l 修改用户账户的登录名。

  • -L 锁定账户,使用户无法登录。

  • -p 修改账户的密码。

  • -U 解除锁定,使用户能够登录。

-L 选项尤其实用。它可以将账户锁定,使用户无法登录,同时无需删除账户和用户的数据。

要让账户恢复正常,只要用 -U 选项就行了。

passwd 和 chpasswd

改变用户密码的一个简便方法就是用 passwd 命令。

如果只用 passwd 命令,它会改你自己的密码。系统上的任何用户都能改自己的密码,但只有root用户才有权限改别人的密码。

-e 选项能强制用户下次登录时修改密码。你可以先给用户设置一个简单的密码,之后再强制在下次登录时改成他们能记住的更复杂的密码。

如果需要为系统中的大量用户修改密码, chpasswd 命令可以事半功倍。 chpasswd 命令能从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置。你也可以用重定向命令来将含有 userid:passwd 对的文件重定向给该命令。

chsh 、 chfn 和 chage

chsh 、 chfn 和 chage 工具专门用来修改特定的账户信息。 chsh 命令用来快速修改默认的用户登录shell。使用时必须用shell的全路径名作为参数,不能只用shell名。

chfn 命令提供了在/etc/passwd文件的备注字段中存储信息的标准方法。 chfn 命令会将用于Unix的 finger 命令的信息存进备注字段,而不是简单地存入一些随机文本(比如名字或昵称之类的),或是将备注字段留空。 finger 命令可以非常方便地查看Linux系统上的用户信息。

[root@localhost ~]# finger rich
Login: rich Name: Rich Blum
Directory: /home/rich Shell: /bin/bash
On since Thu Sep 20 18:03 (EDT) on pts/0 from 192.168.1.2
No mail.
No Plan.
说明 出于安全性考虑,很多Linux系统管理员会在系统上禁用 finger 命令,不少Linux发行版甚至都没有默认安装该命令。

linux组

/etc/group文件

与用户账户类似,组信息也保存在系统的一个文件中。/etc/group文件包含系统上用到的每个组的信息。下面是一些来自Linux系统上/etc/group文件中的典型例子。

[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix

和UID一样,GID在分配时也采用了特定的格式。系统账户用的组通常会分配低于500的GID值,而用户组的GID则会从500开始分配。/etc/group文件有4个字段:

  • 组名

  • 组密码

  • GID

  • 属于该组的用户列表

组密码允许非组内成员通过它临时成为该组成员。这个功能并不很普遍,但确实存在。

千万不能通过直接修改/etc/group文件来添加用户到一个组,要用 usermod 命令。在添加用户到不同的组之前,首先得创建组。

创建组

groupadd 命令可在系统上创建新组。

[root@localhost ~]# groupadd shared

在创建新组时,默认没有用户被分配到该组。 groupadd 命令没有提供将用户添加到组中的选项,但可以用 usermod 命令来弥补这一点。

[root@localhost ~]# usermod -G shared shared01 

说明如果更改了已登录系统账户所属的用户组,该用户必须登出系统后再登录,组关系的更改才能生效。

警告为用户账户分配组时要格外小心。如果加了 -g 选项,指定的组名会替换掉该账户的默认组。 -G 选项则将该组添加到用户的属组的列表里,不会影响默认组。

修改组

在/etc/group文件中可以看到,需要修改的组信息并不多。 groupmod 命令可以修改已有组的GID(加 -g 选项)。

文件权限

文件权限符

[root@localhost /]# ll
总用量 60
lrwxrwxrwx.   1 root root     7 12月 12 08:36 bin -> usr/bin
dr-xr-xr-x.   6 root root  4096 12月 12 08:43 boot
drwxr-xr-x.  19 root root  3200 1月  12 22:39 dev
drwxr-xr-x.  84 root root  4096 1月  12 23:22 etc
drwxr-xr-x.   3 root root  4096 1月  12 23:22 home
lrwxrwxrwx.   1 root root     7 12月 12 08:36 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 12月 12 08:36 lib64 -> usr/lib64
drwx------.   2 root root 16384 12月 12 08:36 lost+found
drwxr-xr-x.   2 root root  4096 4月  11 2018 media
drwxr-xr-x.   2 root root  4096 4月  11 2018 mnt
drwxr-xr-x.   3 root root  4096 12月 12 08:38 opt
dr-xr-xr-x. 101 root root     0 1月  12 22:39 proc
dr-xr-x---.   4 root root  4096 1月  12 21:23 root
drwxr-xr-x.  29 root root   880 1月  12 22:39 run
lrwxrwxrwx.   1 root root     8 12月 12 08:36 sbin -> usr/sbin
drwxr-xr-x.   2 root root  4096 4月  11 2018 srv
dr-xr-xr-x.  13 root root     0 1月  12 22:39 sys
drwxrwxrwt.  15 root root  4096 1月  12 23:23 tmp
drwxr-xr-x.  13 root root  4096 12月 12 08:36 usr
drwxr-xr-x.  20 root root  4096 12月 12 08:50 var

输出结果的第一个字段就是描述文件和目录权限的编码。这个字段的第一个字符代表了对象

的类型:

    • 代表文件
  • d 代表目录

  • l 代表链接

  • c 代表字符型设备

  • b 代表块设备

  • n 代表网络设备

之后有3组三字符的编码。每一组定义了3种访问权限:

  • r 代表对象是可读的

  • w 代表对象是可写的

  • x 代表对象是可执行的

若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的3个安全级别:

  • 对象的属主

  • 对象的属组

  • 系统其他用户

默认文件权限

你可能会问这些文件权限从何而来,答案是 umask 。 umask 命令用来设置所创建文件和目录的默认权限。

[root@localhost ~]# touch newfile
[root@localhost ~]# ll | grep newfile
-rw-r--r--. 1 root root    0 1月  12 23:29 newfile

touch 命令用分配给我的用户账户的默认权限创建了这个文件。 umask 命令可以显示和设置这个默认权限。

[root@localhost ~]# umask
0022

第一位代表了一项特别的安全特性,叫作粘着位(sticky bit)。后面的3位表示文件或目录对应的 umask 八进制值。要理解 umask 是怎么工作的,得先理解八进制模式的安全性设置。

八进制模式的安全性设置先获取这3个 rwx 权限的值,然后将其转换成3位二进制值,用一个八进制值来表示。在这个二进制表示中,每个位置代表一个二进制位。因此,如果读权限是唯一置位的权限,权限值就是 r-- ,转换成二进制值就是 100 ,代表的八进制值是 4 。

了解八进制模式权限是怎么工作的之后, umask 值反而更叫人困惑了。我的Linux系统上默认的八进制的 umask 值是 0022 ,而我所创建的文件的八进制权限却是 644 ,这是如何得来的呢?

umask 值只是个掩码。它会屏蔽掉不想授予该安全级别的权限。接下来我们还得再多进行一些八进制运算才能搞明白来龙去脉。

要把 umask 值从对象的全权限值中减掉。对文件来说,全权限的值是 666 (所有用户都有读和写的权限);而对目录来说,则是 777 (所有用户都有读、写、执行权限)。

所以在上例中,文件一开始的权限是 666 ,减去 umask 值 022 之后,剩下的文件权限就成了 644 。

安全性设置

权限 二进制值 八进制值 描述
000 0 没有任何权限
–x 001 1 只有执行权限
-w- 010 2 只有写入权限
-wx 011 3 有写入和执行权限
r– 100 4 只有读取权限
r-x 101 5 有读取和执行权限
rw- 110 6 有读取和写入权限
rwx 111 7 有全部权限

改变权限

chmod 命令用来改变文件和目录的安全性设置。该命令的格式如下:

chmod options mode file

mode 参数可以使用八进制模式或符号模式进行安全性设置。八进制模式设置非常直观,直接用期望赋予文件的标准3位八进制权限码即可。

[root@localhost ~]# chmod 666 newfile
[root@localhost ~]# ll
总用量 8
-rw-rw-rw-. 1 root root    0 1月  12 23:29 newfile

改变文件所属关系

有时你需要改变文件的属主,比如有人离职或开发人员创建了一个在产品环境中需要归属在

系统账户下的应用。Linux提供了两个命令来实现这个功能: chown 命令用来改变文件的属主,chgrp 命令用来改变文件的默认属组。

chown 命令的格式如下。

chown options owner[.group] file

[root@localhost ~]# ll 
总用量 8
-rw-rw-rw-. 1 root root    0 1月  12 23:29 newfile
[root@localhost ~]# chown shared01 newfile 
[root@localhost ~]# ll
总用量 8
-rw-rw-rw-. 1 shared01 root    0 1月  12 23:29 newfile
[root@localhost ~]# 

chown 命令也支持同时改变文件的属主和属组。

[root@localhost ~]# chown shared01.shared newfile 
[root@localhost ~]# ll
总用量 8
-rw-------. 1 root     root   1289 12月 12 08:43 anaconda-ks.cfg
-rw-------. 1 root     root   1575 1月  12 21:23 anaconda-ks.cfg.bak
-rw-rw-rw-. 1 shared01 shared    0 1月  12 23:29 newfile
[root@localhost ~]# 

linux 权限

阅读数 3396

linux 用户权限

阅读数 8604

没有更多推荐了,返回首页