1.ファイルワイルドカード
いわゆるワイルドカードグロブ、つまり特定の文字(メタ文字と呼ばれる)を使用すると、ファイルを照合し、複数のファイルをすばやく引用する機能を実現できます。詳細については、ヘルプを参照してください:man 7 glob
ワイルドカードに関連するメタ文字は次のとおりです。
:任意の長さの任意の文字に一致します。たとえば、p \はpで始まるすべてのファイルに一致できます。
?:任意の1文字に一致します。たとえば、p?pの後の1文字でファイルを照合できます。
[]:角かっこは、指定されたセット内の任意の1文字と一致します。
例えば:
[liuy]:l、i、u、yの中の任意の文字を表します。
[0-9]:1桁に一致することを意味します。
[[:upper:]]:任意の1つの大文字に一致します。
[[:lower:]]:任意の1つの小文字に一致します。
[[:digit:]]:[0-9]に相当する任意の1桁に一致します。
[[:alpha:]]:大文字と小文字を一致させます。
[[:alnum:]]:大文字または小文字の文字または数字に一致します。
[[:space:]]:単一の空白文字に一致します。
[[:punctl:]]:単一の句読点に一致します。
[^]:指定されたセット外の任意の1文字に一致します。
練習:
-
/ etcディレクトリの下のpで始まり数字以外で終わるすべてのファイルまたはディレクトリを/ tmp / mytest1ディレクトリにコピーします。
-
/ etc / issueファイルの内容を大文字に変換し、/ tmp /issue.outファイルに保存します
2つのユーザーおよびグループ管理コマンド
一般的なユーザー管理コマンド
-
useradd:新しいユーザーを作成します
格式:useradd [options] LOGIN
一般的なオプション:
オプション 説明 -u UID 作成したユーザーのUIDを指定します - -uオプションを使用すると、UIDの一意性はチェックされません -g GID ユーザーが属するメイングループを示します。これは、グループの名前またはGIDにすることができます。 -どのようだ ユーザーのコメント情報 -d HOME_DIR 指定したパスをホームディレクトリとして使用します -sシェル ユーザーのデフォルトのシェルプログラムを指定します(使用可能なリストは/ etc / shellsファイルにあります) -Gグループ ユーザーに追加のグループを指定します。グループは事前に存在している必要があります -N メイングループと同じユーザー名でプライベートグループを作成しないでください -r システムユーザーを作成します。CentOS 6:UID <500、CentOS 7:UID <1000 -m 一般的にシステムユーザーに使用されるホームディレクトリを作成します -M システム以外のユーザーに一般的に使用されるホームディレクトリを作成しないでください -
usermod:ユーザー属性を変更します
格式:usermod [options] LOGIN
一般的なオプション:
オプション 説明 -u UID 新しいUID -g GID 新しいメイングループ -Gグループ 新しいグループを追加すると、元のグループが上書きされます。元のグループを保持する場合は、-aオプションを同時に使用する必要があります。 -sシェル 新しいデフォルトシェル -どのようだ 新しいコメント情報 -dホーム 新しいホームディレクトリは自動的に作成されません。新しいホームディレクトリを作成し、元のホームディレクトリデータを移動するには、-mオプションを同時に使用します。 -Lユーザー名 指定されたユーザーをロックします(/ etc / shadowパスワードフィールドに追加してください!) -Uユーザー名 指定されたユーザーのロックを解除します(/ etc / shadowのパスワードフィールドを削除します!) -
userdel:ユーザーを削除します
格式:userdel [options] LOGIN
一般的なオプション:
オプション 説明 -f --force 強制削除 -r --remove 対応するユーザーのホームディレクトリとメールボックスファイルを削除します -
id:ユーザーのUID、GID、その他の情報を表示します
格式:id [OPTION]... [USER]
一般的なオプション:
オプション 説明 -u UIDを表示 -g GIDを表示 -
su:ユーザーを切り替え、ユーザーIDを切り替え、指定されたユーザーとしてコマンドを実行できます
格式:su [options] [-] [<user> [<argument>...]]
一般的なオプション:
オプション 説明 -、-l--ログイン ログインシェルを開きます。後でユーザーが指定されない場合、デフォルトはrootです。 -c --command <コマンド> ターゲットユーザーとしてコマンドを実行します ユーザーを切り替える方法:
- suユーザー名:非ログイン切り替え、つまり、ターゲットユーザーの構成ファイルは読み取られず、現在の作業ディレクトリは変更されません。つまり、切り替えが不完全です。
- su-username:ログインスイッチは、ターゲットユーザーの構成ファイルを読み取り、ターゲットユーザーのホームディレクトリに切り替えます。つまり、完全な切り替えです。
注意:
- rootから他のユーザーに切り替えるためにパスワードは必要ありません。また、root以外のユーザーから切り替えるためにパスワードが必要です。
- 新しいユーザーをsuで切り替えた後、suを使用して古いユーザーに切り替える代わりに、exitを使用して古いユーザーに戻ります。そうしないと、多くのbashサブプロセスが生成され、環境が混乱する可能性があります。
-
passwd:ユーザーパスワードを設定します
格式:passwd [OPTION...] <accountName>
一般的なオプション:
オプション 説明 -d 指定したユーザーパスワードを削除します -l 指定されたユーザーをロックします。これは、usermodコマンドの-Lオプションと同じ効果です。 -u 指定されたユーザーのロックを解除します。これは、usermodコマンドの-Uオプションと同じ効果です。 -e 次回のログイン時にユーザーにパスワードの変更を強制します(シャドウファイルの3番目のフィールドを0に変更します) -f 必須の操作 -n分日 パスワードの最小使用期間(シャドウファイルの4番目のフィールド) -x maxdays パスワードの最大有効期間(シャドウファイルの5番目のフィールド) -w警告日 パスワードの有効期限が切れるまでの警告日数(シャドウファイルの6番目のフィールド) -私はinactivedays 密码过期后的宽限天数(shadow文件第七字段) --stdin 从标准输入接收用户密码,Ubuntu无此选项 -
chage:修改用户密码策略
格式:chage [options] LOGIN
常见选项:
选项 说明 -d 修改shadow文件第三个字段,最后一次修改密码时间,格式为YYYY-MM-DD -m 修改shadow文件第四个字段,密码最短使用期限 -M 修改shadow文件第五个字段,密码最长使用期限 -W 修改shadow文件第六个字段,密码失效前的警告天数 -I(大写I字母) 修改shadow文件第七个字段,密码失效后的宽限天数 -E 修改shadow文件第八个字段,账号的有效期限 -l(小写L字母) 显示用户的密码策略
常用的组管理命令
-
groupadd:创建组
格式:groupadd [options] GROUP_NAME
常见选项:
选项 说明 -g 指明GID -r 创建系统组,CentOS 6之前:GID<500;CentOS 7以后:GID<1000 -
groupmod:组属性修改
格式:groupmod [options] GROUP
常见选项:
选项 说明 -n 指定新组名 -g 指定新GID -
groupdel:删除组
格式:groupdel [options] GROUP
常见选项:
选项 说明 -f 强制删除,即使是用户的主组也删除 -
gpasswd:可以更改组密码,也可以修改附加组的成员关系
格式:gpasswd [option] GROUP
常用选项:
选项 说明 -a user 将user添加至指定组中 -d user 从指定组中删除user -A user1,user2,... 设置有管理权限的用户列表 -
newgrp:临时切换主组,如果用户本不属于此组,则需要组密码
格式:newgrp [-] [group]
如果使用 - 选项,可以初始化用户环境。
实例:
-
创建组distro,其ID为2019。
-
创建用户mandriva,其ID号为1005,基本组为distro。
-
创建用户mageia,其ID号为1100,家目录为/home/linux。
-
给用户mageia添加密码,密码为mage,并设置用户密码7天后过期。
-
删除mandriva,但保留其家目录。
-
创建用户slackware,其ID号为2002,基本组为distro,附加组为peguin。
-
修改slackware的默认shell为/bin/tcsh。
-
为用户slackware新增附加组admins,并设置不可登录。
三、文件权限管理
文件权限介绍
文件的权限主要针对三类对象进行定义:owner(属主,u)、group(属组,g)、other(其他,o)。文件的常用权限有三种:r(readable)、w(writable)、x(excutable)。
字符表示 | 权限 | 对文件的含义 | 对目录的含义 |
---|---|---|---|
r | 读权限 | 可以查看文件内容 | 可以查看目录中文件列表 |
w | 写权限 | 可以修改文件内容 | 可以在目录中创建、修改文件 |
x | 执行权限 | 可以执行文件(须为可执行文件) | 可以进入目录 |
文件的三种特殊权限:SUID、SGID、Sticky
SUID:当设有SUID权限的可执行二进制程序被执行时,这个程序的进程所有者为程序文件的所有者身份。也就是说当其他用户执行这个程序时,会暂时获得程序的所有者身份,当然,这个身份只在程序执行过程中有效。SUID只对二进制可执行文件有效,设置在目录上没有意义。
其中passwd文件的属主执行权限位是s,代表passwd属主有执行权限,同时具有SUID权限。假如一个文件没有可执行权限,但是设置了SUID权限,属主的可执行权限位显示为大写的字母S。
SGID:
- 设置在目录上时,用户在这个目录中创建的新文件的属组将自动继承此目录的属组。
- 设置在二进制文件上时,功能和SUID类似,运行这个二进制程序时,其他用户会得到这个程序的所属组的权限。
其中locate文件的属组执行权限位是s,属组是slocate,代表属主外的其他用户执行这个程序时,会暂时获得slocate组权限。
Sticky:只对目录有效,权限用t表示。设置有Sticky权限的目录,用户在该目录下创建的文件只有这个用户和root用户可以进行删除操作。利用此权限可以防止普通用户删除其他人的文件。系统中/tmp目录就是有Sticky权限的目录。
文件的特殊属性
通过文件的特殊属性,可以增加对文件的操作限制,设置了特殊属性的文件即使root这样的超级用户也会被限制。文件特殊属性通过chattr命令来实现,也可以通过lsattr查看到这些属性。
chattr:改变文件特殊属性
格式:chattr [-RVf] [-+=ia] files...
常用选项:
选项 | 说明 |
---|---|
-R | 递归处理,将目录及目录下的子目录和文件一起处理 |
-V | 显示版本信息和设置的权限 |
-f | 隐藏大部分错误信息 |
- | 表示去掉属性 |
+ | 表示添加属性 |
= | 表示重设属性 |
i | 表示不能删除、修改、重命名和创建硬链接 |
a | 表示不能删除、修改和创建硬链接,但是可以追加内容 |
lsattr:查看文件的特殊属性
格式:lsattr [-Rad] [files...]
常用选项:
选项 | 说明 |
---|---|
-a | 显示所有文件和目录,包括以“.”开头的文件 |
-d | 显示目录,而非其内容 |
-R | 递归处理 |
文件的FACL
FACL:File Access Control List
前面介绍的权限,只能针对所有者、所属组、其他人三种不同的用户群体分别设置相应权限,当需要对更多的用户设置不同权限时,传统的方式已经无法实现,利用FACL可以实现更加灵活的权限控制。管理FACL的两个常见命令setfacl和getfacl,其中setfacl可设置FACL权限,getfacl可查看FACL权限。
setfacl:设置FACL权限
格式:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
常用选项:
选项 | 说明 |
---|---|
-m, --modify=acl | 更改文件的访问控制列表 |
-M, --modify-file=file | 从文件读取访问控制列表来设置 |
-x, --remove=acl | 删除文件访问控制列表条目 |
-X, --remove-file=file | 从文件读取访问控制列表并删除 |
-b, --remove-all | 清除所有FACL |
-R, --recursive | 递归操作目录及子目录 |
getfacl:查看FACL权限
格式:getfacl [-aceEsRLPtpndvh] file ...
常用选项:
选项 | 说明 |
---|---|
-a, --access | 显示文件访问控制列表 |
-e, --all-effective | 显示所有有效的权限 |
-E, --no-effective | 显示无效的权限 |
实例:
创建用户user1、user2、user3。在/data/下创建目录test
-
目录/data/test属主、属组为user1。
-
在目录属主、属组不变的情况下,user2对目录有读写权限。
-
user1在/data/test目录下创建文件a1.sh、a2.sh、a3.sh、a4.sh,设置所有用户都不可删除a1.sh、a2.sh文件,除了user1及root之外,所有用户都不可删除a3.sh、a4.sh。
上の図でわかるように、2つのファイルa1.shとa2.shにファイルの特別な属性を設定した後、ユーザーはファイルを削除できません。
/ data / testディレクトリにスティッキー権限を設定した後、rootおよびuser1ユーザーはこのディレクトリ内のファイルを削除できますが、rootおよびuser1以外のユーザーはこのディレクトリ内のファイルを削除できないため、user2ユーザーはa3.sh、a4.shを削除できません。
-
User3は追加のグループuser1を追加し、user3が/ data / testディレクトリとその下のすべてのファイルにアクセスしないように要求します。
-
/ data / testディレクトリとその下のすべてのファイルのACL権限をクリアします。