本篇内容:
1.输入输出重定向
2.用户和用户组
3.文件类型与文件权限(普通权限 用户权限 隐藏权限)
一、输入输出的重定向
输入重定向是把文本导入命令中
输出重定向是把我们原本要出输出屏幕的数据内容写入到文本中 ----常用
标准输入重定向(STDIN) 文件描述符是0 默认从键盘输入
标准输出重定向(STDOUT)文件描述符是1 默认输出到屏幕
错误输出重定向(STDERR)文件描述符是2 默认输出到屏幕
输入重定向: <
符号 作用
命令<文件 将文件作为命令的标准输入 ---相当于 文件 | 命令
命令<<分界符 从标准输入中读入,直到遇见分界符才停止
命令<文件1 >文件2 将文件1作为命令的标准输入并将标准输出
输出重定向:>
命令>文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令2>文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令>>文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令2>>文件 将错误输出重定向到一个文件中(追加到原有内容的后面)
命令1&2>>文件
二、环境变量
变量 用于保留可变值的数据类型 变量名称 一般大写
HOME 用户的主目录(即家目录)
SHELL 用户在使用的
Shell 解释器名称
HISTSIZE 输出的历史命令记录条数
HISTFILESIZE 保存的历史命令记录条数
MAIL 邮件保存路径
LANG 系统语言、语系名称
RANDOM 生成一个随机数字
PS1Bash 解释器的提示符
PATH 定义解释器搜索用户执行命令的路径
EDITOR 用户默认的文本编辑器
$作用是:获取一个变量的值
1.输入变量---->系统判断用户输入是以绝对路径还是相对路径方式输入?
2.检测命令是否为别名命令使用alias命令对命令重名了
alias别名=命名
取消别名: unalias 别名
3.bash解释器判断 命令是内部--直接执行还是外部(需要处理)
通过type命令查看
内部命令实际上是shell程序的一部分 通常在linux系统加载运行时shell就被加载并驻留在系统内存中
外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以它们包含的程序量也会
很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调进内存
4.系统在多个路径中查找用户输入的命令文件定于路径的变量就是PATH
[root@localhost ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 去这里检测你的命令是否存在
自己写变量:属于临时变量
如果需要长期使用该路径 需要在/etc/profile和/etc/bashrc文件对所有用户有效,~/bashrc和~/.bash_profile只对当前用户有效
[root@localhost home]# mkdir /home/ss
[root@localhost home]# SS=/home/ss
[root@localhost home]# cd /root/
[root@localhost ~]# echo $SS
/home/ss
[root@localhost ~]# cd $SS
[root@localhost ss]#
声明一个环境变量:export AA="hello world",相对普通变量而言,只需在前面加上export即可
三、用户和用户组
文件的所有者(属主)、所属组(数组)和其他人对文件进行的 读(r) 写(w) 执行(x)
添加、删除、修改用户信息
也可使用特殊权限 SUID SGID SBIT 更加灵活控制权限
3.1.用户身份和能力
默认root超级用户(Linux Unix系统都是超级用户)
root 不一定是超级用户
UID GID
UID--用户ID唯一的
GID--组ID惟一的
一个用户具备一个UID同时会有一个同名组GID
3.2.Linux中有三类用户---> /etc/passwd文件保存账户信息
1.超级用户 默认root 真实的具备 UID=GID=0 的用户
2.系统用户UID=1-499,使某些服务具备特殊的用户单独负责
3.普通用户通过 root用户创建的默认 UID>=500开始
一些程序会由独立的系统用户去执行
安装httpd服务会有一个 apache的系统用户 http是协议 httpd是 服务 需要一个服务器apache/nginx环境
用户和组的关系----> 一对一 ,一对多 ,多对一 ,多对多
3.3.用户的增删改查
用户查看:/etc/passwd
组查看:/etc/group
1.用户与组的增加 useradd 和 groupadd
参数 作用
-d 指定用户的家目录(默认为/home/username)
-e 账户的到期时间,格式为YYYY-MM-DD.
-u 指定该用户的默认UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认
[root@localhost ~]# id linux
uid=502(linux) gid=502(linux) groups=502(linux)
[root@localhost ~]# usermod -u 888 linux
[root@localhost ~]# id linux
uid=888(linux) gid=0(root) groups=0(root)
2.修改用户的属性:usermod和groupmod
参数 作用
-c 填写用户账户的备注信息
-d-m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的UID
3.修改用户密码:passwd
参数 作用
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
--stdin 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd--stdin Username
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
普通用户只能使用passwd修改自己的密码
[root@localhost ~]# passwd linux
4.删除:userdel和groupdel
参数 作用
-f 强制删除用户
-r 同时删除用户及用户家目录---尽量不用,用于恢复用户
四.文件权限和归属
Linux下都是文件
4.1文件类型:
f /- 普通文件
d 目录
l 链接----软链--相当于快捷方式、硬链---完整复制
b 块文件---设备--硬盘光盘U盘
c 字符文件----虚拟终端
s 数据库文件
4.2 文件普通权限:一共九位
前三位:rwx满位---空位---->属主(文件所有者)
中三位:rwx满位---空位---->属组(文件所有组)
后三位:rwx满位---空位---->其他用户
文件 目录
r 浏览文件内容 浏览目录内的内容(有什么文件但是不一定能看内容)
w 修改文件内容 删除 移动 复制文件
x 执行脚本 文件进入目录内
文件有W权限但目录没有W权限是不是删除的
a b c 三个人--->文件属于a属主 属于ab组(组内成员ab属组) 其他人c
4.3文件的特殊权限
1.SUID=setUID
针对二进制程序设置的 让二进制程序执行者临时拥有属主权限
bin里面的命令都是二进制的
[root@localhost ~]# which cat 使用which搜索我的命令在哪
/bin/cat
[linux@localhost ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 17 2012 /usr/bin/passwd
只能root用户使用
s的作用让普通用户临时获得root权限属主权限
值:4000
如果文件本身具备x权限 那么就是s 如果没有x就是S
2.SGID=setUID
仿照SUID,设置的属组的特殊权限
如果文件本身具备x权限那么就是s如果没有x就是S
值:2000
3. SBIT粘滞位作用
确保用户只能删,除自己的文件对别人不能删除
如果文件本身具备x权限 那么就是t 如果没有x就是T
值1000
drwxrwxrwt. 11 root root 4096 May 16 08:00 tmp
目录和文件默认权限是多少:
目录:755
文件:644
默认情况 目录权限满位777
文件权限满位666
文件666每个位上缺少x--->可执行 不是所有文件脚本?
都缺少022权限---网络掩码---反掩码
umask默认022
文件权限修改俩种命令:
chmod 777(rwxrwxrwx)文件名
两种授权形式:
1.数字授权:
chmod对权限修改(rwx suid sgid sbit)
chmod 777-R目录名---->-R参数用于权限递归 只对目录下现有的有效
+赋予权限 -撤销权限 =覆盖权限
2.表达式授权:
a所有 u用户 g用户组 o其他人
[root@localhost wdw]# chmod u+x,g+w,o+r linux
chown对文件所有者/所有组修改
[root@localhost /]# chown root:wdw linux/
4.su 和 sudo 命令
su 用于用户切换 su - 完全切换
sudo:
使用sudo命令把特定的命令的执行权限赋予指定用户
保证普通用户能够完成特定的工作, 避免暴露root密码
udo命令用于给普通用户提供额外权限来完成本来由root用户才能完成的任务
参数 作用
-h 列出帮助信息
-l 列出当前用户可执行的命令
-u用户名或UID值 以指定的用户身份执行命令
-k 清空密码的有效时间,下次执行sudo时需要再次进行密码验证
-b 在后台执行指定的命令
-p 更改询问密码的提示语
功能:限制用户执行指定命令
记录用户执行每一条命令
比如:poweroff, reboot
配置文件/etc/sudoers提供集中的用户管理、权限和主机参数
可以通过visudo去配置用户权限 只有root可以使用
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
谁可以用 允许使用的主机=以谁的身份 可以执行的命令
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
linux ALL=(root) /sbin/ reboot
这需要每次输密码可以写成 linux ALL=(root)NOPASSWD: /sbin/reboot
[root@localhost ~]# su - linux
[linux@localhost ~]$ sudo reboot
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for linux:
5. 隐藏权限:chattr 和 lsattr
chattr命令锁定该文件
lsattr命令是显示chattr命令设置的文件属性。
与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的
有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。
chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的。通过chattr命令修改属性能够提高系统
的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。
chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…
最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,这部分是用来控制文件的属性。
+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先
被记录 (在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有
superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。
应用举例:
1、用chattr命令防止系统中某个关键文件被修改:
# chattr +i /etc/resolv.conf
然后用mv /etc/resolv.conf等命令操作于该文件,都是得到Operation not permitted
的结果。vim编辑该文件时会提示W10: Warning: Changing a readonly
file错误。要想修改此文件就要把i属性去掉: chattr -i /etc/resolv.conf
# lsattr /etc/resolv.conf
会显示如下属性
----i-------- /etc/resolv.conf
2、让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
# chattr +a /var/log/messages
转载于:https://blog.51cto.com/13709718/2117730
本文详细介绍Linux系统中的输入输出重定向、环境变量管理、用户与用户组管理、文件类型及权限控制等内容,包括命令行操作技巧和特殊权限设置。
1295

被折叠的 条评论
为什么被折叠?



