来自man usermod
:
注意:如果您想锁定帐户(不仅仅是使用密码访问),您还应该将 EXPIRE_DATE 设置为 1。
- 为什么我们应该使锁定的帐户过期以完全阻止对该帐户的访问?
- 如果我没有使锁定的帐户过期,会发生什么?
来自man usermod
:
注意:如果您想锁定帐户(不仅仅是使用密码访问),您还应该将 EXPIRE_DATE 设置为 1。
$cat /etc/passwd |grep -i root
root:x:0:0:root:/root:/bin/bash
$sudo cat /etc/shadow |grep -i root
root:!:17179:0:99999:7:::
在影子文件的第二个字段中,!
表示root用户无法登录,但为什么我可以登录到root用户sudo su
?
为什么我不能通过su root
or登录到 root 用户su -
?
为了使用存储设备,我们需要一个文件系统,那么交换空间呢?
如果它没有文件系统,操作系统如何使用它?数据(从 RAM 中)如何写入磁盘,以及如何再次访问?
env
显示所有环境变量的列表
$ env |wc -l
63
环境变量总数 = 63
根据help export
-p display a list of all exported variables and functions
$export -p |wc -l
63
环境变量+函数行=63 然后函数行=0
set
显示环境变量列表 + shell 变量 + 函数
$set |wc -l
4772
然后只显示变量(环境变量+shell变量)
$(set -o posix ;set)|wc -l
172
这意味着函数行= 4772-172 不为零请向我解释发生了什么?
我有一个文件:
$ cat file
1 c
8 a
1 b
5 f
我认为sort
开头的命令比较所有行的第一个字段并对它们进行排序,然后对于这些行具有相等的第一个字段并再次开始对第二个字段进行排序,如下所示:
$sort file
1 b
1 c
5 f
8 a
我读到了选项k 1
和k 1,1
:之间的区别k 1
,排序键可能会继续到行尾,但k 1,1
它应该只对第一个字段进行排序,而不考虑其他字段,但是:
$sort -k 1 file
1 b
1 c
5 f
8 a
$sort -k 1,1 file
1 b
1 c
5 f
8 a
为什么sort
= sort k 1
=的输出sort k 1,1
相等?
我认为的输出sort k 1,1 file
应该是
1 c
1 b
5 f
8 a
如果不正确,请告诉我我的错误是什么,我怎样才能得到这样的输出?
我可以说 shell 是 CLI 的一个特性,它是命令行解释器吗?
没有任何外壳,我们会遇到很多问题,但可以使用操作系统。例如,而不是ls
我应该使用/usr/bin/ls /full/path/to/current/place/
没有 CLI 是不可能的,因为用户没有任何界面可以与内核对话来完成他们的工作?
请解释 shell 和 CLI 之间的区别以回答这个问题
我做了一些关于历史的测试:
我跑了history-c
,然后退出了。这清除了当前 shell 的历史记录。
我跑了history -c && history -w
。这删除了所有内容。
我通过 vi 编辑器删除了历史文件的全部内容:$vi ~/.bash_history
. 然后我退出了。在下一次登录时,当我history
只运行最后一个 shell 会话的行或命令时。
这表明history -w
我们关闭 shell 会话时的操作和操作之间存在差异。
当我们关闭一个 shell 会话时会发生什么?
我认为history -w
将内存内容覆盖到历史文件,并history -c
删除内存内容。这个对吗?
当我管道到gzip
它不能接受标准输入时,我应该使用xargs
将标准输入转换为参数
$ls
1.txt
$ls |xargs gzip && ls
1.txt.gz
一切都好 。但是当我想压缩一个 cpio 存档文件时
$ls | cpio -ov | gzip > archive.cpio.gz
也可以,但这ls | cpio -ov | xargs gzip
不起作用。为什么在第二种情况下gzip
接受标准输入而它不能接受参数?
我学会了如何在 find 命令中使用 globbing,但今天我看到了一个奇怪的行为。
当我在搜索位置以外的任何地方时,我不需要单引号或双引号来进行通配
$ pwd
/home
$ find / -name *c
...
it is ok
但
$ pwd
/
$ find / -name *c
find: paths must precede expression: proc
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
发生什么事?
我阅读了手册页,find
但对我来说并不清楚。
find -perm -mode
------>至少必须设置这些位才能使文件匹配
例如:find -perm -754
查找 754,755,757,774,777
关于什么?find -perm /754
请举例说明
我知道通配符在运行命令之前由 shell 扩展,它们是 shell 的一个特性。通配符也适用于那些可以接受许多参数的命令。如果我们在find . -name *.rb
当前目录中有多个文件find
会给我们一个错误,因为 find 不能接受多个参数,解决这个问题的方法是:
find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb
我们避开星号并防止 shell 扩展,但通配符是 shell 的一个特性;当我们转义星号时,shell 不知道它的含义,它应该找到一个名为 的文件*.rb
,那么在这种情况下星号是如何扩展的呢?
我正在读一本书,上面写着:
"Most distributions install just one package system. It’s possible to install
more than one, though, and some programs (such as alien) require both
for full functionality. Actually using both systems to install software is
inadvisable because their databases are separate. If you install a library
using a Debian package and then try to install an RPM package that relies
on that library, RPM won’t realize that the library is already installed and
will return an error."
当我们从源代码编译和安装软件时,debian 包数据库不知道该软件及其文件,并且根据本书该软件不应该识别我们的共享库,因为它们是从包文件安装的。
是真的吗?如果是,我们可以说从源代码安装只使用静态库吗?
静态库默认情况下存在/usr/lib
或 /usr/lib64
但我使用以下命令在我的操作系统中删除了所有它们:
find / -name *.a -exec rm -rf {} \;
我的 linux 已经好了,一切正常!
我们可以说吗?
" Package.rpm 或 *.deb 包含编译器输出,只有它们需要共享库。
而当我们从源代码安装软件时,如果在结构中使用静态库,在编译时链接器,将静态库复制到它的可执行文件中。
我的系统中没有*.a
文件,也许将来如果我从源代码安装软件,我将面临问题”
请用简单的方式向我解释
我们知道ld.so
在环境变量指定的目录中搜索库$LD_LIBRARY_PATH
,但普通用户可以运行:
export LD_LIBRARY_PATH=dir1:dir2...
他们可以将受感染的库保存在优先级高于原始库的路径中,以便ld.so
在ld.so.cache
.
这是一个风险吗?
我们如何禁止普通用户写入此环境变量?
我创建了一个名为“shadi”的目录并为其设置了此权限
sinoosh@ubuntu:/home$ ls -ld shadi
drwxr-xrwx 2 root root 4096 Jul 1 01:58 shadi
在这种情况下,我有“其他”权限,但为什么我不能删除它?
sinoosh@ubuntu:/home$ rm -r shadi/
rm: cannot remove ‘shadi/’: Permission denied
MBR 大小为 512 字节,通常位于第一个扇区。
扇区 1-2048 之间的差距是多少?
我在 IBM 网站上读到:“在 MBR 和第一个分区之间的未分配空间中为引导加载程序代码留出空间。”
这是否意味着二进制引导加载程序代码?我们知道二进制引导加载程序代码位于 ext4 Linux 主分区中。