useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd
文本文件中。
-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-g<群组>:指定用户所属的默认组,组一定要实现存在;
-G<群组>:指定用户所属的附加组,可以有多个,用逗号隔开即可;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-s<shell>:指定用户登入后所使用的shell;
-u<uid>:指定用户id。
-r:添加一个系统用户,用户ID小于500,不能登录系统且没有家目录;
/etc/shells:指定了当前系统可用的安全shell
【总结】环境变量
- PATH
- HISTSIZE
- SHELL
/etc/shells:指定了当前系统可用的安全shell
-r: 同时删除用户的家目录,默认不会删除用户家目录
id命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需要在你的控制台输入id。不带选项输入id会显示如下。结果会使用活跃用户。
当我们想知道某个用户的UID和GID时id命令是非常有用的。一些程序可能需要UID/GID来运行。id使我们更加容易地找出用户的UID以GID而不必在/etc/group
文件中搜寻。如往常一样,你可以在控制台输入man id
进入id的手册页来获取更多的详情。
-g或--group:显示用户所属群组的ID。
-G或--groups:显示用户所属附加群组的ID。
-n或--name:显示用户,所属群组或附加群组的名称。
-u或--user :显示用户ID。
finger命令用于查找并显示用户信息。包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行finger指令,它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。
w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
whoami命令用于打印当前有效的用户名称,相当于执行id -un
命令。
who命令是显示目前登录系统的用户信息。执行who命令可得知目前有那些用户登入系统,单独执行who命令会列出登入帐号,使用的终端机,登入时间以及从何处登入或正在使用哪个X显示器。
- console: 控制台,直接连接到Linux物理硬件设备上的显示器和键盘
- pty: 物理终端 (VGA),设备已经被识别但此前仍然和用户没有关联的终端,一般物理终端即是控制台
- tty<数字>: 虚拟终端 (VGA),附加在物理终端上,并结合软件的方式模拟实现的
- ttyS<数字>: 串行终端
- pts/<数字>: 伪终端
last命令用于显示用户最近登录信息(包括用户登录历史及系统重启历史)。单独执行last命令,它会读取/var/log/wtmp
的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
-n <数字>: 显示最近n次的相关信息
lastb命令用于显示用户错误的登录列表,此指令可以发现系统的登录异常。单独执行lastb命令,它会读取位于/var/log
目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。
-n <数字>: 显示最近n次的相关信息
lastlog命令用于显示系统中所有用户最近一次登录信息。
lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog
的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示**Never logged**
。注意需要以root身份运行该命令。
-u USERNAME: 显示特定用户最近的登录信息
## 修改用户帐号属性
### usermod
usermod命令用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user,必须确认这名user没在电脑上执行任何程序。
```shell
-u UID
-g GID
-a -G GID:不使用-a选项(追加附加组),会覆盖此前的附加组,通常 -Ga 一起使用;
-c
-d 一般与 -m 一起使用:即指定新的家目录位置又移动此前的文件至家目录中;
-s
-l:改用户登录名
-L:锁定帐号
-U:解锁帐号
修改用户的默认shell
修改注释信息
passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
--stdin:从标准输入(密码)读取密码(可用方便地从脚本中设定账号);
-l:锁住密码;
-u:解开已上锁的帐号;
-d:删除密码,仅有系统管理者才能使用。
pwck命令用来验证系统认证文件/etc/passwd
和/etc/shadow
的内容和格式的完整性。
groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
-g:指定新建工作组的id;
-r:添加一个系统组,组ID小于500;
-K:覆盖配置文件“/ect/login.defs”;
-o:允许添加组ID号不唯一的工作组。
groupmod命令更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。
-g<群组识别码>:设置欲使用的群组识别码;
-n<新群组名称>:设置欲使用的群组名称。
groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
为组设定密码
切换基本组,exit 即可退出
chage命令是用来修改帐号和密码的有效期限。
chage [选项] 用户名
-d: 最近一次的修改时间
-E: 过期时间
-I:非活动时间
-m: 最短使用期限
-M: 最长使用期限
-W: 警告时间
chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。(只有管理员可以使用此命令)
chown USERNAME:GRPNAME file,...
chown USERNAME.GRPNAME file,...
-R: 修改目录及其内部文件的属主
--reference=/path/to/somefile file,...属组属主都改变
chgrp命令用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。
-R
--reference=/path/to/somefile file,...
chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。
权限范围的表示法如下:
u
User,即文件或目录的拥有者;
g
Group,即文件或目录的所属群组;
o
Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a
All,即全部的用户,包含拥有者,所属群组以及其他用户;
r
读取权限,数字代号为“4”;
w
写入权限,数字代号为“2”;
x
执行或切换权限,数字代号为“1”;
-
不具任何权限,数字代号为“0”;
s
特殊功能说明:变更文件或目录的权限。
chmod MODE file,...
-R
--reference=/path/to/somefile file,...
- 修改某类用户或某些类用户权限:
chmod 用户类别=MODE file,...
- 修改某类用户的某位或某些位权限:
chmod 用户类别+|-MODE file,...
umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。
使用八进制数值来设置mode。由于在umask中所指定的权限是要从文件中删除的,所以,如果该文件原来的初始化权限是777,那么执行命令umask 022以后,该文件的权限将变为755:如果该文件原来的初始化权限是666,那么该文件的权限将变为644。但如果执行命令umask 023,文件的权限将变为643,由于文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1,变为644。
站在用户登录的角度来说,SHELL的类型:
- 登录式shell:
正常通常某终端登录
su - USERNAME
su -l USERNAME
- 非登录式shell:
su USERNAME
图形终端下打开命令窗口
自动执行的shell脚本
-
以作用范围分类:
- 全局配置:/etc/profile, /etc/profile.d/*.sh, /etc/bashrc
- 个人配置:~/.bash_profile, ~/.bashrc
-
以功能分类:
- profile类的文件:
- 设定环境变量
- 运行命令或脚本
- bashrc类的文件:
- 设定本地变量
- 定义命令别名
- profile类的文件:
-
登录式shell如何读取配置文件?
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
- 非登录式shell如何配置文件?
~/.bashrc --> /etc/basrc --> /etc/profile.d/*.sh
例:
- 在
~/.bashrc
中添加alias cls ='clear'
则在下次登录后可直接使用别名;在/etc/bashrc
添加以上别名,这则全局都可使用。 - 在
~/.bash_profile
中添加echo "Hello, zwbao. Welcome to our system. It is ($date)"
则会在用户登录时显示相应信息。