用户与角色
- 超级用户:拥有对系统的最高管理权限,默认是root用户。
- Username/UID
- root, 0
- 普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如www用户、ftp用户等。1-60000 自动分配
- 登录用户:500+, 1000+(CentOS7)
交互式登录
- 登录用户:500+, 1000+(CentOS7)
- 虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等
- 系统用户:1-499, 1-999 (CentOS7)
对守护进程获取资源进行权限分配
- 系统用户:1-499, 1-999 (CentOS7)
Linux组:Groupname/GID
- 管理员组:root, 0
- 普通组:
系统组:1-499, 1-999(CENTOS7)
普通组:500+, 1000+(CENTOS7)
用户和组相关的配置文件
- /etc/passwd文件:系统用户配置文件,是用户管理中最重要的一个文件。这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读。
- /etc/shadow文件:用户影子文件,由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限。
- /etc/group文件:用户组配置文件,用户组的所有信息都存放在此文件中。
- /etc/login.defs文件:用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等。
- /etc/default/useradd文件:定义了新建用户的一些默认属性,比如用户的主目录、使用的shell等等,通过更改此文件,可以改变创建新用户的默认属性值。
- /etc/skel文件:目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息。
passwd文件格式
- login name:登录用名(wang)
- passwd:密码 (x)
- UID:用户身份编号 (1000)
- GID:登录默认所在组编号 (1000)
- GECOS:用户全名或注释
- home directory:用户主目录 (/home/wang)
- shell:用户默认使用shell (/bin/bash)
添加、切换、删除用户组命令
——groupadd/newgrp/groupdel
groupadd命令
用来新建一个用户组。语法格式为:
groupadd -g gid groupname
-g:指定新建用户组的GID号,该GID号必须唯一,不能和其它用户组的GID号重复。
newgrp命令
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限,newgrp主要用于在多个用户组之间进行切换。
groupdel命令
表示删除用户组,语法格式为:
groupdel [群组名称]
当需要从系统上删除用户组时,可用groupdel指令来完成这项工作。如果该用户组中仍包括某些用户,则必须先删除这些用户后,然后才能删除用户组。
更改和查看组成员
groupmems [options] [action]
options:
- -g, --group groupname 更改为指定组 (只有root)
actions: - -a, --add username 指定用户加入组
- -d, --delete username 从组中删除用户
- -p, --purge 从组中清除所有成员
- -l, --list 显示组成员列表
groups [OPTION].[USERNAME]...
查看用户所属组列表
添加、修改和删除用户命令
——useradd/usermod/userdel
useradd的使用语法
useradd [-u uid [-o]] [-g group] [-G group,...] [-d home] [-s shell] [-c comment] [-f inactive] [-e expire ] name
各个选项具体含义如下:
- -u uid:即用户标识号,此标识号必须唯一。
- -o 配合-u 选项,不检查UID的唯一性
- -g group:指定新建用户登录时所属的默认组,或者叫主组。此群组必须已经存在。
- -G group:指定新建用户的附加组,此群组必须已经存在。附加组是相对与主组而言的,当一个用户同时是多个组中的成员时,登录时的默认组成为主组,而其它组称为附加组。
- -d home:指定新建用户的默认主目录,如果不指定,系统会在/etc/default/useradd文件指定的目录下创建用户主目录。
- -s shell:指定新建用户使用的默认shell,如果不指定,系统以/etc/default/useradd文件中定义的shell作为新建用户的默认shell。
- -r 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
- -m 创建家目录,用于系统用户
- -M 不创建家目录,用于非系统用户
usermod的使用语法
usermod用来修改用户的账户属性信息,使用语法如下:
usermod [-u uid [-o]] [-g group] [-G group,...] [-d 主目录 ] [-s shell] [-L|-U] Name
各个选项具体含义如下:
- -u uid:指定用户新的UID值,此值必须为唯一的ID值,除非用-o选项。
- -g group:修改用户所属的组名为新的用户组名,此用户组名必须已经存在。
- -G group:修改用户所属的附加组。原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
- -d 主目录:修改用户登录时的主目录。 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
- -a 追加 配合-G 追加附加组
- -c 'COMMENT':新的注释信息
- -l login_name: 新的名字
- -s shell:修改用户登录系统后默认使用的shell
- -L:锁定用户密码,使密码无效。
- -U:解除密码锁定。
- -e YYYY-MM-DD: 指明用户账号过期日期
userdel的使用语法
Userdel用来删除一个用户,若指定“-r”参数不但删除用户,同时删除用户的主目录以及目录下的所有文件。语法格式为:
userdel [-r][用户帐号]
查看用户相关的ID信息
id [OPTION]... [USER]
- -u: 显示UID
- -g: 显示GID
- -G: 显示用户所属的组的ID
- -n: 显示名称,需配合ugG使用
设置密码
passwd [OPTIONS] UserName
: 修改指定用户的密码
常用选项:
- -d:删除指定用户密码
- -l:锁定指定用户
- -u:解锁指定用户
- -e:强制用户下次登录修改密码
- -f:强制操作
- -n mindays:指定最短使用期限
- -x maxdays:最大使用期限
- -w warndays:提前多少天开始警告
- -i inactivedays:非活动期限
- --stdin:从标准输入接收用户密码
示例:echo "PASSWORD" | passwd --stdin USERNAME
修改用户密码策略
chage [OPTION]... LOGIN
- -d 天数 最近一次修改密码的时间
- -E 过期日期 过期时间
- -I(大i) 天数 指定天数后,设定密码为失效状态
- -l 显示密码策略
- -m 最小天数 两次修改密码的间隔最小天数
- -M MAX_DAYS 两次修改密码的间隔最大天数
- -W 警告天数 密码过期前“警告天数”天 警告
示例:
chage -d 0 tom
下一次登录强制重设密码
chage -m 0 –M 42 –W 14 –I 7 tom
设置最小时间为0天后,最大时间为42天后,警告时间为14天 7天后过期
chage -E 2016-09-10 tom
将过期时间设置为2016-9-10
文件
文件的权限属性解读
在Linux中常见的有7种文件类型:
- 普通文件(-表示)
- 目录(d表示)
- 字符设备文件(c)
- 块设备文件(b)
- 套接字文件(s)
- 管道(p)
- 符号链接文件(l)
"."代表当前目录
".."代表上级目录
修改文件的属主和属组
修改文件的属主:chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法说明:
- OWNER
- OWNER:GROUP
- :GROUP,冒号也可用 . 替换
- -R: 递归
- chown [OPTION]... --reference=RFILE FILE...
修改文件的属组:chgrp
chgrp [OPTION]... GROUP FILE...
- chgrp [OPTION]... --reference=RFILE FILE...
- -R 递归
文件权限
文件
- r 可使用文件查看类工具获取其内容
- w 可修改其内容
- x 可以把此文件提请内核启动为一个进程
目录
- r 可以使用ls查看此目录中文件列表
- w 可在此目录中创建文件,也可删除此目录中的文件
- x 可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录
- X 只给目录x权限,不给文件x权限
利用chmod改变访问权限
chmod用于改变文件或目录的访问权限。
该命令有两种用法。
- 包含字母和操作符表达式的字符设定法
- 包含数字的数字设定法。
符设定法
使用语法为:
chmod [who] [+ | - | =] [mode] 文件名
who表示操作对象,可以是下面字母中的任何一个或者它们的组合。
- u 表示“用户(user)”,即文件或目录的所有者。
- g 表示“用户组(group)”,即文件或目录所属的用户组。
- o 表示“其他(others)用户”。
- a 表示“所有(all)用户”。它是系统默认值。
操作符号含义如下:
- “+”表示添加某个权限。
- “-”表示取消某个权限。
- “=”表示赋予给定的权限,同时取消文档以前的所有权限。
mode表示可以执行的权限,可以是“r“(只读)、“w”(可写)和“x”(可执行),以及它们的组合。
$ ll
总用量 0
-r-xr--r-- 1 root root 0 4月 9 01:39 122.txt
$ chmod u=rwx,g+r,o-r 122.txt
$ ll
总用量 0
-rwxr----- 1 root root 0 4月 9 01:39 122.txt
$ chmod +x 122.txt
$ ll
总用量 0
-rwxr-x--x 1 root root 0 4月 9 01:39 122.txt
数字设定法
首先了解一下用数字表示属性的含义:
- 0表示没有任何权限
- 1表示有可执行权限,与上面字符表示法中的“x”有相同的含义。
- 2表示有可写权限,与“w”对应
- 4表示有可读权限,对应与“r“
- 如果想让文件的属主拥有读和写的权限,可以通过4(可读)+2(可写)=6(可读可写)的方式来实现,那么用数字6就表示拥有读写权限。
使用语法:
chmod [属主权限的数字组合] [用户组权限的数字组合] [其它用户权限的数字组合] 文件名
举例:
八进制数字
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
640 rw-r-----
755 rwxr-xr-x
$ ll
总用量 0
-rwxr-xr-x 1 root root 0 4月 9 01:39 122.txt
$ chmod 150 122.txt
$ ll
总用量 0
---xr-x--- 1 root root 0 4月 9 01:39 122.txt
Linux用户与环境变量
常见系统环境变量:
PATH、PWD、BASH、LANG、USER、HOSTNAME、HOME、SHELL
定义环境变量
环境变量名=value
#环境变量赋值
export 环境变量名
#声明环境变量
注意:环境变量可以在命令行中设置,但用户注销时这些值将丢失,环境变量均为大写,必须用export命令导出。
清除环境变量
unset 环境变量名
显示环境变量内容
env
命令可以列出已经定义的环境变量
echo命令
echo $环境变量名
环境变量与配置文件
/etc/profile属于全局环境变量配置文件,.bash_profile、.bashrc属于用户环境变量文件,此两个文件位于用户根目录下。
当某Linux用户登录时,Shell会首先执行系统默认的配置文件/etc/profile,然后会自动执行.bash_profile文件,如果.bash_profile文件不存在,接着读取~/.bashrc文件。
Bash的初始化环境变量文件顺序:
添加用户环境变量:
cat .bash_profile
此.bash_profile是elasticsearch用户下的环境变量配置文件
export JAVA_HOME=/usr/local/jdk1.8.0_04
export PATH=$PATH:$JAVA_HOME/bin: $ANT_HOME/bin: $HOME/bin
配置文件环境变量文件后,执行source命令马上生效。
source .bash_profile
sudo的使用
sudo命令的使用
sudo -u sshd touch /tmp/mysshd
ll /tmp/mysshd
-rw-r--r-- 1 sshd sshd 0 Apr 16 16:59 /tmp/mysshd
sudo命令的配置文件为/etc/sudoers,编辑这个文件有个单独的命令visudo(这个文件最好不要使用vim命令来打开),因为一旦语法写错会造成严重的后果,这个工具会替你检查你写的语法,这个文件的语法遵循以下格式:
who where whom command
/etc/sudoers文件默认给 root 用户定义了一条规则:
root ALL=(ALL) ALL
- root 表示 root 用户。
- ALL 表示从任何的主机上都可以执行,也可以这样 192.168.100.0/24。
- (ALL) 是以谁的身份来执行,ALL就代表root可以任何人的身份来执行命令。
- ALL 表示任何命令。
那么整条规则就是 root用户可以在任何主机以任何人的身份来执行所有的命令。
iivey 192.168.10.0/24=(root) /usr/sbin/useradd
上面的配置只允许iivey在 192.168.10.0/24 网段上连接主机并且以root权限执行useradd 命令。
www ALL=(root) NOPASSWD:ALL,!/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/bin/su
允许www用户执行所有命令,除了passwd后加任意字符、passwd root和su这三类操作。
感叹号代表取反
%wheel ALL=(ALL) ALL
centos7默认已经开放%wheel这一行,之前的centos版本没有启用。
%wheel ALL=(ALL) NOPASSWD: ALL
NOPASSWD: ALL:不输入密码执行任何命令
%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
允许users组的成员以 root 身份挂载和卸载 cdrom
%users localhost=/sbin/shutdown -h now
允许users组关机
使用sudo 就是在命令前加上sudu
标签:文件,用户组,用户,linux,权限,root,环境变量 From: https://www.cnblogs.com/guangdelw/p/17023858.html