首页 > 系统服务 > 详细

Linux基础——用户、用户组和权限管理

时间:2016-03-08 21:42:14      阅读:280      评论:0      收藏:0      [点我收藏+]

一,Linux 用户和用户组基础概念

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

  (1)用户、用户组的类别:

技术分享

   在CentOS 6下,系统用户:1-499,普通用户:500+

       UID: 16bits二进制数字:0-65535;
                 Linux内核(2.6x版)已经可以支持到4294967295(2^32-1)个标识符

注意:CentOS 7(RHEL 7)开始用户系统用户的数量增大


  (2)用户配置文件

     1. 用户信息库,名称解析库:/etc/passwd

     2. 密码存储位置:/etc/shadow

     3.组的认证信息库:/etc/gshadow

     4.用户组的所有信息存储位置:/etc/group


二,用户和用户组的管理

基本的用户命令为:useradd(创建用户)、usermod(修改用户)、userdel(删除用户)

基本的组管理命令为:groupadd(创建组)、groupmod(修改组)、groupdel(删除组)

密码配置:passwd(设置用户密码)、gpasswd(设置组密码)

 ①useradd :创建新的用户

useradd  [选项]  登录名
 -c, --comment COMMENT:注释信息,一般为Full Name;
 -d, --home  /PATH/TO/HOME_DIR:家目录路径;目标路径不能事先存在,否则会有警告,不会得利skel相关的文件给用户;
 -g, --gid GROUP:用户的基本组组名或GID;
 -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用户所属的附加组列表,彼此间用逗号隔开,中间没有空格;
 -m, --create-home:强制创建家目录; 
 -M:不创建用户主目录,即使系统在 /etc/login.defs 中的设置(CREATE_HOME)为yes;
 -r, --system:创建一个系统账户
 -s, --shell SHELL:用户的登录shell名,默认为留空,让系统根据 /etc/default/useradd 中的SHELL变量选择默认的登录shell;
 -u, --uid UID:用户ID的数字值。此值必须为唯一的,除非使用了-o选项。此值必须非负,默认使用大于等于UID_MIN,且大于任何其他用户ID最小值。

 例1:创建一个用户sam,为sam指定主目录为/usr/sam;

# useradd –d /usr/sam -m sam

 例2:新建用户gem,指定该用户的登录Shell是 /bin/sh,指定它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。

# groupadd group
# groupadd adm
# useradd -s /bin/sh -g group –G adm,root gem
注意:创建登录用户时,为其自定义的shell程序必须为可登录shell,且要位于/etc/shells文件中;

useradd -D:显示创建用户时的默认设置;
useradd -D  选项:设置某默认选项;

新建用户不选择选项时,useradd会按照默认选项创建用户。

【PS:这些默认选项实际是记录在/etc/default/useradd文件中,另外/etc/login.defs也会影响useradd、userdel等命令的默认动作。】

②usermod:修改账号信息

【注意:usermod不允许改变正在线上的使用者帐号名称。当usermod改变userID,必须确认这名user没在电脑上执行任何程序】

-L, --lock:锁定用户的密码。这会在用户加密的密码之前放置一个“!”
-U, --unlock:解锁用户的密码。这将移除加密的密码之前的“!”

③userdel:删除用户账号

userdel [选项]  登录名                    
-r, --remove:用户主目录中的文件将随用户主目录和用户邮箱一起删除

④groupadd:添加组

用法:groupadd [选项] group
 常用选项:
-g GID :指明GID,默认是上一个组的GID+1
-r,--system:创建系统组,默认为1-999数字

⑤passwd:密码管理命令

(1) passwd:修改自己的密码;                    
(2) passwd  username:修改其它用户的密码,仅root有此权限;                                        
密码复杂度:                        
(1) 不能少于8个字符;                        
(2) 不能使用与过去的密码太相似的密码;                        
(3) 应该使用四类字符中的至少三类; 
(4)  定期更换;                                   
 选项:                        
 -l:锁定密码                        
 -u:解锁解密                        
 -d:清除密码                                                
 --stdin:从标准输入接收密码;                            
 echo "PASSWORD" | passwd  --stdin  USERNAME

⑥su:切换用户

(1) 不读取目标用户的配置文件(非登录式切换,半切换);
 su  USERNAME 
(2) 读取目标用户的配置文件(登录式切换,完全切换);
 su  -l  USERNAME
 su  -  USERNAME
 -c command, --command=command:
 仅以指定的用户的身份运行此处指定的命令,而不执行真正的身份切换操作;
 注意:root切换至任何其它用户无须认证密码;普通用户切换至其它用户,都需要密码;

⑦gpasswd:为组添加密码

gpasswd [选项] group
          -a USERNAME:把用户添加至组中;
          -d USERNAME:从此组中移除此用户;

⑧newgrp命令:登录到一个新组  
⑨chage命令:修改用户账号的各种期限;
         .   修改账户或口令的期限设定

【口令最短使用期限7天,最长使用期限30天,警告期3天,非活动期3天。          
     [root@localhost ~]# chage -m7 -M30 -W3 -I3 mageedu          
  修改口令最近一次修改时间,需转换为设定时间到1970年1月1日的天数          
     [root@localhost ~]# chage -d16860 mageedu          
  设置账户过期时间,需转换为设定时间到1970年1月1日的天数。          
     [root@localhost ~]# chage -E16920 mageedu】

chsh:更换登入系统时使用的shell,

chfn:提供使用者更改个人资讯,

finger:使用者查询一些其他使用者的资料,

pwck : 检查密码文件的完整性,

grpck:检查组文件的完整性


三,与用户账号有关的系统文件

  1、/etc/passwd文件是用户管理工作涉及的最重要的一个文件。

# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:

/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
系统中有一类用户称为伪用户(psuedo users)。
这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,
因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
伪 用 户 含 义 
bin 拥有可执行的用户命令文件 
sys 拥有系统文件 
adm 拥有帐户文件 
uucp UUCP使用 
lp lp或lpd子系统使用 
nobody NFS使用

2./etc/shadow文件用于单独存放加密后的口令字,只有超级用户才拥有该文件读权限

【注意:/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生】

它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
"登录名":/etc/passwd文件中的登录名相一致的用户账号
"口令":字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
"最后一次修改时间":表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
"最小时间间隔":指的是两次修改口令之间所需的最小天数。
"最大时间间隔":指的是口令保持有效的最大天数。
"警告时间":字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
"不活动时间":表示的是用户没有登录活动但账号仍能保持有效的最大天数。
"失效时间":字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
# cat /etc/shadow
root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::

3、用户组的所有信息都存放在/etc/group文件中。

当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

组名:口令:组标识号:组内用户列表
"组名":是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
"口令":字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
"组标识号":与用户标识号类似,也是一个整数,被系统内部用来标识组。
"组内用户列表":是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组
/etc/group文件的一个例子如下:
root::0:root
bin::2:root,bin


四,用户和用户组权限管理

例:[root@localhost~]# ls -l  total 120     # 显示文件名与相关属性命令
    drwxr-xr-x  2 root root 4096 Dec 10 07:57 07:57:04

(1) 类型和权限(permission):十位分四段表示

技术分享

【显示格式】:

         总用量:

          类型和权限  连接数  所有者   用户组   文件大小  修改日期   文件名

(2)权限组合机制:(8bites 二进制)

      第二道十个字符:每三个为一组,均为‘rwx‘三个参数组合

       rwxrwxrwx每个位置固定不定,若无则为空,用‘-‘符号表示

 r:readable, 读;w:writable, 写;x:excutable,执行

  r=4    w-2   x=1 -=0


(3)文件权限系统主要分为3类用户:

 属主:owner,u          属组:group,g       其他:other,o

其与之对应的权限:               rwx                    rwx                             rwx

(4)文件和目录的权限管理:

技术分享

       ①对于文件的含义

 r:可获取文件的数据;可以使用类似于cat命令查看文件内容

 w: 可修改文件的数据;可以编或者删除此文件

 x:可将此文件运行为进程;可以在命令提示符下当做命令提交给内核运行

②对于目录的含义

 r:可使用ls命令获取其下的所有文件列表;

 w: 可修改此目录下的文件列表;即创建或删除文件;

 x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;


五,权限管理命令

  1.chmod:更改文件目录权限

用户类型:u:属主   g:属组   o:其它    a: 所有

(1)chmod [OPTION]...  MODE[,MODE]... FILE…
  1)赋权表示法:直接操作一类用户的所有权限位rwx.
用等号表示:[u|g|o|a]=rwx中的一位或者多位
  2)授权表示法:直接操作一类用户的一个权限位r,w,x
用加减号表示:[u|g|o|a][+|-]rwx
(2)chmod [OPTION]...  OCTAL-MODE FILE…
直接使用三位数字的方式给文件目录增加权限,分别表示所有者、所属组、其他人的权限
数字的表示方法同上:8bites 二进制表示权限的组合机制
r=4   
w-2   x=1  -=0三位相加
(3)chmod [OPTION]...  --reference=RFILE FILE…   参照某个文件的权限来进行授权操作
  -R,
--recursive:递归修改
【注意:普通用户仅能修改属主为自己的那些文件的权限;root可以更改所有用户】

2.chown:更改文件目录的所有者,也可以更改所属组

 仅更改用户的所有者 
  所有者:所属组,可以同时更改
 【PS:所有者.所属组,也可以上述操作,但小心文件名中有.系统识别错误】

3..chgrp:更改文件目录的所属组

(1)chgrp [OPTION]... GROUPFILE… 更改所属组
(2)chgrp [OPTION]... --reference=RFILE FILE…

【注意:仅管理员有权限

                改属主:chown
                改属组:chgrp】


4.install:复制和设置属性权限

(1)单源复制:
        install[OPTION]... [-T] SOURCE DEST
       
(2)多源复制:
       install [OPTION]... SOURCE... DIRECTORY
        install [OPTION]... -t DIRECTORY SOURCE…
       
(3)创建目录:
       install [OPTION]... -d DIRECTORY...
(4)OPTIONS:
      -m, --mode=MODE:设定目标文件权限,默认为755;
        -o, --owner=OWNER:设定目标文件属主;
        -g, --group=GROUP:设定目标文件属组;

5.umask:文件的权限反向掩码,遮罩码

(1)umask:查看当前umask
系统默认为:0022表示特殊权限、所有者权限、所有组权限、其他人权限 
更改默认设置位置:/etc/login.defs
(2)对文件目录的umask操作 
    ①文件:666-umask ,文件默认不能拥有执行权限
            如果减得的结果中有执行权限,则需要将其加1
    ②目录:777-umask

6.mktemp:建立暂存文件

mktemp [OPTION]... [TEMPLATE]
    模板文件名:filename.XXX
   至少三个X;
   使用方式:用变量保存生成的文件路径;
   myfile=$(mktemp /tmp/myfile.XXXX)
   -d:创建临时目录而非文件;
    -p DIR, --tmpdir[=DIR]:设定临时文件所在的目录;默认为当前目录,或为TMPDIR环境变量设定的路径;


Linux基础——用户、用户组和权限管理

原文:http://wqiang.blog.51cto.com/6074114/1748844

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!