Linux用户:Username/UID
管理员:root,0
普通用户: 1-65535
系统用户:1-499
对守护进程获取资源进行权限分配;
登陆用户:500+
交互式登录;
Linux组:Groupname/GID
管理员组:root,0
普通组:
系统组:1-499
普通组:500+
Linux安全上下文:
运行中的程序:进程(process)
以进程发起者的身份运行;
进程所能够访问的所有资源的权限取决于进程的发起者的身份;
Linux组的类别:
用户的基本组(主组):
组名同用户名,且仅包含一个用户:私有组
用户的附加组(额外组):
Linux用户和组相关的配置文件:
/etc/passwd:用户及其属性信息(名称、UID、基本组ID等等);
/etc/group:组及其属性信息;
/etc/shadow:用户密码及其相关属性;
/etc/gshadow:组密码及其相关属性;
/etc/passwd:
account:password:UID:GID:GECOS:directory:shell
/etc/group:
group_name:passwd:GID:user_list
组名:组密码:GID:以当前组为附加组的用户列表(分隔符为逗号)
/etc/shadow:
root:$$pX89hXMLJ11VQTuV$efkL761n04ambIMkFwIsS2UvAmNU9ZMJMJwBje1N4HD0.alpduURuv9zF3S52W62wUqXSkQk2.VwXGQO.IhgZ.:::::::
用户名:$加密方式$杂质$加密后的密码:最近一次更改密码的日期:密码的最小使用期限:最大使用期限:密码警告时间段:密码禁用期:账户过期日期:保留字段
用户和组的相关管理命令:
用户创建:useradd
useradd [options] LOGIN
-u UID:[ UID_MIN, UID_MAX ],定义在/etc/login.defs
-g GID:指明用户所属基本组,可为组名,也可以GID;组必须事先存在。可以通过命令id USERNAME查看。
-c "COMMENT":用户的注释信息;
-d /PATH/TO/HOME_DIR:以指定的路径为家目录;
-s SHELL:指明用户的默认shell程序,可用列表在/etc/shells文件中;
-G GROUP1 [, GROUP2, ...[, GROUPN]]]:为用户指明附加组,组必须事先存在;
-r:创建系统用户;
默认值设定:/etc/default/useradd文件中
useradd -D
-s SHELL
示例:
useradd -D -s /bin/tcsh 修改默认值的,/etc/default/useradd
示例:
[root@localhost ~]# tail -1 /etc/shadow
tom:!!:17776:0:99999:7::: 两个!!表示账号处于禁用状态,linux是禁止空密码用户登陆的。
练习:创建用户gentoo,附加组为distro和linux,默认shell为/bin/csh,注释信息为“Gentoo Distribution";
创建组:groupadd
groupadd [options] group_name
-g GID:指明GID号;
-r:创建系统组;
查看用户相关的ID信息:id
id [OPTION]... [USERNAME]
-u:UID
-g:GID
-G:Groups
-n:Name
切换用户或以其它用户身份执行命令:su
su [OPTION]... [-] [USER [ARG]...]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件;
su - UserName:登录式切换,会读取目标用户的配置文件,完全切换;
Note:root su至其它用户无须密码;非root用户切换是需要密码;
换个身份执行命令(账户不切换):
su [ - ] UserName -c "COMMAND"
选项:
-l:“ su -l UserName" 相当于" su - UserName"
用户属性修改:usermod
usermod [OPTION] login
-u UID:更改UID;
-g GID:更改GID;
-G GROUP1 [, GROUP2, ...[, GROUPN]]]:新附加组,原来的附加组会被覆盖;若保留原有的,则要同时使用-a选项,表示append
-l login_name:新的名字;
-L:lock指定用户;
-U:unlock指定用户;
给用户添加密码:passwd
passwd [OPTION] UserName:修改指定用户的密码,仅root用户有权限。
passwd:修改自己的密码;
常用选项:
-l:锁定指定用户
-u:解锁指定用户;
-n mindays:指定最短使用期限;
-x maxdays:最大使用期限;
-w warndays:提前多少天开始警告;
-l inactivedays:非活动期限;
--stdin:从标准输入接收用户密码;
echo "PASSWORD" | passwd --stdin USERNAME # 此种方式直接赋值,不需要确认。
Note:/dev/null,bit buckets
/dev/zero
删除用户:userdel
userdel [OPTION]... login
-r:删除用户家目录;
组属性修改:groupmod
groupmod [OPTION]...group
-n group_name:新名字
-g GID:新的GID
组删除:groupdel
groupdel GROUP
组密码:gpasswd
gpasswd [OPTION] GROUP
-a user:将user添加至指定组中;
-d user:删除用户user的
-A user1,user2,....:设置有管理权限的用户列表
newgrp命令:临时切换基本组;
如果用户本不属于此组,则需要组密码;
权限管理:
文件的权限主要针对三类对象进行定义:
owner:属主,u
group:属组,g
other:其它,o
每个文件针对每类访问者都定义了三种权限:
r:Readable
w:Writable
x:eXcutable
文件:
r:可使用文件查看类工具获取其内容;
w:可修改其内容;
x:可以把此文件提请内核启动为一个进程;
目录:
r:可以使用ls查看此目录中的文件列表;
w:可在此目录中创建文件,也删除此目录中的文件;(能否删除一个文件,取决于此)
x:可以使用ls -l 查看此目录中文件列表,可以cd进入此目录;
修改文件权限:chmod
chmod [OPTION]... OCTAL-MODE FILE...
-R:递归修改权限
chmod [OPTION]... MODE[,MODE]... FILE...
MODE:
修改一类用户的所有权限: # 此种方式为全部修改,不涉及的改为无。
u=r # 修改后文件只有读权限,拥有的其它权限将修改为无
g=
o=
ug=
a=
u=,g=
修改一类用户某位或某些位权限,无法同时执行+-操作,如果操作中包含加和减使用上面修改方法。 # 此种方式为部分修改,不涉及的不修改。
u+rw
u-
ug+
chmod [OPTION]... --reference=RFILE FILE...
参考RFILE文件的权限,将FILE的权限修改为同RFILE;
修改文件的属主和属组:
仅root可用;
修改文件的属主:chown 注:这个命令也可以修改属组
chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER
OWNER:GROUP
:GROUP
Note:命令中的冒号可用.替换
示例:chown :root fstable
-R:递归
chown [OPTION]... --reference=RFILE FILE...
修改文件的属组:chgrp
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
文件或目录创建时的遮罩码:umask
FILE:666-umask
Note:如果某类用户的权限减得的结果中存在x权限,则将其权限+1
DIR:777-umask
umask:查看
umask #:设定