Skip to content

Latest commit

 

History

History
268 lines (202 loc) · 11.4 KB

用户管理及权限管理命令.md

File metadata and controls

268 lines (202 loc) · 11.4 KB

用户管理及权限管理命令

用户管理

useradd

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

userdel

-r: 同时删除用户的家目录,默认不会删除用户家目录

id

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命令用于查找并显示用户信息。包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行finger指令,它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。

w:

w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

whoami:

whoami命令用于打印当前有效的用户名称,相当于执行id -un命令。

who:

who命令是显示目前登录系统的用户信息。执行who命令可得知目前有那些用户登入系统,单独执行who命令会列出登入帐号,使用的终端机,登入时间以及从何处登入或正在使用哪个X显示器。

终端类型:

  • console: 控制台,直接连接到Linux物理硬件设备上的显示器和键盘
  • pty: 物理终端 (VGA),设备已经被识别但此前仍然和用户没有关联的终端,一般物理终端即是控制台
  • tty<数字>: 虚拟终端 (VGA),附加在物理终端上,并结合软件的方式模拟实现的
  • ttyS<数字>: 串行终端
  • pts/<数字>: 伪终端

last:

last命令用于显示用户最近登录信息(包括用户登录历史及系统重启历史)。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

-n <数字>: 显示最近n次的相关信息

lastb:

lastb命令用于显示用户错误的登录列表,此指令可以发现系统的登录异常。单独执行lastb命令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。

-n <数字>: 显示最近n次的相关信息

lastlog:

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:解锁帐号

chsh

修改用户的默认shell

chfn

修改注释信息

密码管理

passwd

passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

--stdin:从标准输入(密码)读取密码(可用方便地从脚本中设定账号);
-l:锁住密码;
-u:解开已上锁的帐号;
-d:删除密码,仅有系统管理者才能使用。

pwck

pwck命令用来验证系统认证文件/etc/passwd/etc/shadow的内容和格式的完整性。

组管理

groupadd

groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

-g:指定新建工作组的id;
-r:添加一个系统组,组ID小于500;
-K:覆盖配置文件“/ect/login.defs”;
-o:允许添加组ID号不唯一的工作组。

groupmod

groupmod命令更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。

-g<群组识别码>:设置欲使用的群组识别码;
-n<新群组名称>:设置欲使用的群组名称。

groupdel

groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

gpasswd

为组设定密码

newgrp

切换基本组,exit 即可退出

chage

chage命令是用来修改帐号和密码的有效期限。

chage [选项] 用户名
	-d: 最近一次的修改时间
	-E: 过期时间
	-I:非活动时间
	-m: 最短使用期限
	-M: 最长使用期限
	-W: 警告时间

权限管理

chown

chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。(只有管理员可以使用此命令)

chown USERNAME:GRPNAME file,...
chown USERNAME.GRPNAME file,...
-R: 修改目录及其内部文件的属主
--reference=/path/to/somefile file,...属组属主都改变

chgrp

chgrp命令用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。

-R
--reference=/path/to/somefile file,...

chmod

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命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,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脚本

bash的配置文件:

  • 以作用范围分类:

    • 全局配置:/etc/profile, /etc/profile.d/*.sh, /etc/bashrc
    • 个人配置:~/.bash_profile, ~/.bashrc
  • 以功能分类:

    • profile类的文件:
      • 设定环境变量
      • 运行命令或脚本
    • bashrc类的文件:
      • 设定本地变量
      • 定义命令别名
  • 登录式shell如何读取配置文件?

/etc/profile  -->   /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
  • 非登录式shell如何配置文件?
~/.bashrc --> /etc/basrc --> /etc/profile.d/*.sh

例:

  1. ~/.bashrc中添加alias cls ='clear'则在下次登录后可直接使用别名;在 /etc/bashrc添加以上别名,这则全局都可使用。
  2. ~/.bash_profile中添加echo "Hello, zwbao. Welcome to our system. It is ($date)" 则会在用户登录时显示相应信息。