linux总结--用户和组
用户和组账户管理
linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。
用户相关目录结构
保存用户信息的文件:/etc/passwd
保存密码的文件:/etc/shadow
保存用户组的文件:/etc/group
保存用户组密码的文件:/etc/gshadow
用户配置文件:/etc/default/useradd
passwd
用户信息的文件
可以通过more或者cat等命令查看文件
account:password:UID:GID:GECOS:directory:shell
|
用户名 |
用户登陆系统的用户名 |
|
密码 |
密码位 |
|
UID |
用户标示号 |
|
GID |
默认组标示号 |
|
描述信息 |
存放用户的描述信息 |
|
宿主目录 |
用户登陆系统的默认目录,默认是在/home/下 |
|
命令解析器 |
用户使用的Shell,默认是bash |
shadow

用户密码的文件
|
用户名 |
登陆系统的用户名 |
|
密码 |
加密密码 |
|
最后一次修改时间 |
用户最后一次修改密码距现在的天数,从1970-1-1起 |
|
最小时间间隔 |
两次修改密码之间的最小天数 |
|
最大时间间隔 |
密码有效天数 |
|
警告时间 |
从系统警告到密码失效的天数 |
|
账号闲置时间 |
账号闲置时间 |
|
失效时间 |
密码失效的天数 |
|
标志 |
标志 |
group

|
组名 |
用的所在的组 |
|
组密码 |
密码位,一般不使用 |
|
GID |
主标示号 |
|
组内用户列表 |
属于改组的用户列表 |
操作用户命令
添加用户命令:useradd
-u 指定组ID(uid)
-g 指定所属的组名(gid)
-G 指定多个组,用逗号“,”分开(Groups)
-c 用户描述(comment)
-e 失效时间(expire date)
例子:
useradd -u 888 -g users -G sys,root -c "hr zhang" zhangsan
passwd zhangsan
通过 ll home可以看到有了zhangsan的家
修改用户命令:usermod(user modify)
-l 修改用户名 (login)usermod -l a b(b改为a)
-g 添加组 usermod -g sys tom
-G添加多个组 usermod -G sys,root tom
–L 锁定用户账号密码(Lock)
–U 解锁用户账号(Unlock)
如:
将tomcat添加到sys和root组中:usermod -G sys,root tomcat
删除用户命令:userdel(user delete)
-r 删除账号时同时删除目录(remove)
添加组:groupadd
-g 指定gid
如:添加一个叫america的组:groupadd america
如:将jerry添加到america组中:usermod -g america jerry
修改组:groupmod
-n 更改组名(new group)
如:将america组名修改为am :groupmod -n am america
删除组:groupdel
groups 显示用户所属组
如:查看tomcat的组信息 :groups tomcat
gpasswd 对用户组进行管理
将tomcat用户从root组和sys组删除
gpasswd -d tomcat root
gpasswd -d tomcat sys
给zhangsan设置密码:
passwd zhangsan,根据提示输入密码
添加一个tom用户,设置它属于users组,并添加注释信息
分步完成:useradd tom
usermod -g users tom
usermod -c "hr tom" tom
一步完成:useradd -g users -c "hr tom" tom
修改tom用户的登陆名为tomcat
usermod -l tomcat tom
添加一个jerry用户并设置密码
useradd jerry
passwd jerry
切换到root用户
su root
sudo
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。
执行visudo就会进入编辑改文件
visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像:
>>> sudoers file: syntax error, line 22 <<
此时我们有三种选择:键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。
现在,我们一起来看一下神秘的配置文件,学一下如何编写它。让我们从一个简单的例子开始:让用户Foobar可以通过sudo执行所有root可执行的命令。以root身份用visudo打开配置文件,可以看到类似下面几行:
# Runas alias specification
# User privilege specificationroot ALL=(ALL)ALL
我们一看就明白个差不多了,root有所有权限,只要仿照现有root的例子就行,我们在下面加一行(最好用tab作为空白):
foobar ALL=(ALL) ALL
保存退出后,切换到foobar用户,我们就可以用sudo命令了
好了,我们限制一下foobar的权利,不让他为所欲为。比如我们只想让他像root那样使用ls和ifconfig,把那一行改为:
foobar localhost= /sbin/ifconfig, /bin/ls
现在让我们来看一下那三个ALL到底是什么意思。第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:
foobar linux=(jimmy,rene) /bin/kill
用法示例:以root用户的身份修改主机名为zhidao
sudo hostname zhidao
Linux用户分类
超级用户:(root,UID=0)
普通用户:(UID在500到60000)
伪用户:(UID在1到499)
系统和服务相关的:bin、daemon、shutdown等
进程相关的:mail、news、games等
伪用户不能登陆系统,而且没有宿主目录
用户组
每个用户至少属于一个用户组
每个用户组可以包含多个用户
同一个用户组的用户享有该组共有的权限
文件归属和权限
在linux中每个文件有所有者、所在组、其它组的概念
通过命令可以看到文件的属性,了解到文件的归属和权限信息
ls -l 文件名

权限是分别对于owner、group、others而言。
如果有文件夹 /a/b/c
ls -l /a 查看的是b文件的权限
ls -l /a/b 查看的是c文件的权限
ls -l /a/b/c 查看的是c文件的权限
所有者
所有者一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者
可以使用chown 用户名 文件名来修改文件的所有者
文件所在组
可以使用chgrp 组名 文件名来修改文件所在的组
其它组
除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
文件目录默认权限
可以用umask -S查看

值得注意的是,虽然 umask 显示说明是有执行权限的,那只是在创建文件夹的时候,当我们创建文件的时候是不会赋予执行权限的

权限管理
三种基本权限
r 读权限(read)
w 写权限(write)
x 执行权限 (execute)

第1位:文件类型(d 目录,- 普通文件,l 链接文件)
第2-4位:所属用户权限,用u(user)表示
第5-7位:所属组权限,用g(group)表示
第8-10位:其他用户权限,用o(other)表示
第2-10位:表示所有的权限,用a(all)表示
完整信息:一个文件,所属用户具有读写执行权限;所属组的用户
有读写权限,没有执行权限;其他用户只有读权限
更改操作权限
如:用数字来表示权限(r=4,w=2,x=1,-=0)
0什么权限也没有
1拥有执行权限
2拥有写权限
3拥有写和执行的权限
4拥有读的权限
5拥有读和执行的权限
6拥有读和写的权限
7读写执行权限都有
例如:
chmod 750 b.txt 表示对b.txt,所属用户具有读写执行权限,所属组拥有读和执行权限,其他用户没有权限。
rwx用二进制表示是111,十进制4+2+1=7
r-x用二进制表示是101,十进制4+0+1=5
例如:
将/itcast目录下的所有文件与子目录皆设为任何人可读取
chmod -R a+r /itcast
参数:-R 下面的文件和子目录做相同权限操作(Recursive递归的)
例如:
创建a.txt和b.txt文件,将他们设为其拥有者和所在组可写入,但其他以外的人则不可写入:
chmod ug+w,o-w a.txt b.txt
表示所属用户和所属组在原来权限的基础上加上写的权限,其他用户取消写的权限。
加权限用+
减权限用—
是什么权限用=
例如
创建c.txt文件所有人都可以写和执行
chmod a=wx c.txt 或chmod 333 c.txt
例如:
将/itcast目录下的所有文件与子目录的拥有者设为root,用户拥有组为users
chown -R root:users /itcast
例如:
将当前目录下的所有文件与子目录的用户皆设为itcast,组设为users
chown -R itcast:users *
修改用户对文件或目录权限
修改文件的权限或目录的命令为“chmod 755 test.sh”。755表示“创建者拥有读写可执行权限、同一组用户以及其他用户拥有读和执行权限”。

对目录下所有的文件的权限修改
chmod 的-R参数可以实现,-R 是处理指定目录以及其子目录下的所有文件,比如给test目录及其下面的所有目录和文件添加rwx权限,用linux命令表示为

修改权限的u,g,o,a
chmod [who] [+ | - | =] [mode] 文件名¼
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
查看用户权限
ls -l /etc/group 查看所有的用户组及权限
ls -l /etc/passwd 查看所有用户及权限

浙公网安备 33010602011771号