一,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环境变量设定的路径;
原文:http://wqiang.blog.51cto.com/6074114/1748844