密碼
/usr/share/doc/setup*/uidgid
保留的用戶名和組的ID記錄UID,GID-
/etc/login.defs
- 用戶郵件目錄
- 用戶密碼 期限
- 用戶uid/gid 可用的范圍(最小值,最大值)
- 用戶uid/gid 可用的范圍(最小值,最大值)
- 用戶創建時是否創建home目錄
- UMASK 創建用戶家目錄的權限
- 使用userdel時,如果組內沒有成員,可以刪除用戶組
- passwd 創建密碼時的加密方式(SHA512)
/etc/security/pwquality.conf
密碼規則,密碼的復雜度要求chage ---更改用戶密碼有效期信息
chage -M 90 username
設置用戶密碼在90天內過期
chage <username>
交互式的設置用戶密碼有效期信息/etc/bashrc
PS1
umask 設置對新創建的文件或目錄應用哪些權限
對PS1修改,shell的定制到/etc/profile.d/下進行/etc/profile /etc/profile.d/*.sh
環境變量、 登陸初始化-
UMASK
出于安全原因,默認情況下,常規文件不能具有執行權限。因此,即使umask為0000(不禁止任何權限),新的常規文件仍然沒有執行權限。但是,可以使用執行權限創建目錄(目錄777 文件666):- -S 顯示mask后的實際字符權限
[john@server tmp]$ umask 0000
[john@server tmp]$ touch file
[john@server tmp]$ mkdir directory
[john@server tmp]$ ls -lh .
total 0
drwxrwxrwx. 2 john john 40 Nov 2 13:17 directory
-rw-rw-rw-. 1 john john 0 Nov 2 13:17 file
[tom@localhost ~]$ umask
0002
[tom@localhost ~]$ umask -S
u=rwx,g=rwx,o=rx
[tom@localhost ~]$
Utilities | Description |
---|---|
id | 顯示用戶和組ID。 |
useradd, usermod, userdel | 用于添加,修改和刪除用戶帳戶的標準實用程序。 |
groupadd, groupmod, groupdel | 用于添加,修改和刪除組的標準實用程序。 |
gpasswd | 該實用程序主要用于修改/etc/gshadow文件中的組密碼,該文件由newgrp命令使用。 |
pwck, grpck | 可用于驗證密碼,組和關聯的shadow文件的實用程序。 |
pwconv, pwunconv | 可用于將密碼轉換為shadow密碼或從shadow密碼轉換回標準密碼的實用程序。 |
grpconv, grpunconv | 與上面的類似,這些實用程序可用于轉換組帳戶的隱藏信息。 |
-
添加用戶
useradd [options] username
Option | - |
---|---|
-c 'comment' | 常用于指定用戶的全名。 |
-d home_directory | 要使用的主目錄,而不是默認目錄/home/username/. |
-e date | 帳戶的停用日期,格式為 YYYY-MM-DD. |
-f days | 密碼過期后直到禁用帳戶的天數。如果指定為0,則密碼過期后立即禁用該帳戶。如果指定-1,則密碼過期后不會禁用該帳戶。 |
-g group_name -g group_id |
用戶默認(主要)組的組名或組號。該組必須存在,然后才能在此處指定。 |
-G group_list | 用戶的附加組,以逗號分隔。這些組必須存在,然后才能在此處指定。 |
-m | 如果主目錄不存在,創建它。 |
-M | 不要創建主目錄。 |
-N | 不要為用戶創建用戶私人組。 |
-p password | 用crypt加密的密碼 |
-r | 創建UID小于1000且沒有主目錄的系統帳戶。 |
-s | 用戶的登錄shell,默認為 /bin/bash. |
-u uid | 用戶的用戶標識,必須唯一且大于999。 |
juan:!!:14798:0:99999:7:::
在/etc/shadow文件的密碼字段中會出現兩個感嘆號(!!),它會鎖定該帳戶。
-
創建組
groupadd [options] group_name
Option | Description |
---|---|
-f, --force | 與-g gid一起使用且gid已經存在時, groupadd將為該組選擇另一個唯一的gid。 |
-g gid | 群組的群組ID,必須唯一且大于999。 |
-K, --key key=value | 覆蓋/etc/login.defs默認值。 |
-o, --non-unique | 允許創建具有重復GID的組。 |
-p, --password password | 對新組使用此加密密碼。 |
-r | 創建GID小于1000的系統組。 |
-
usermod 將現有用戶添加到現有組
usermod -g group_name user_name
# 改變用戶的屬組 (不保留原有的)
usermod -G group_name1,group_name2,... user_name
# 改變用戶的有多個屬組(不保留原有)
usermod -aG group_name1,group_name2,... user_name
# 為用戶添加多個屬組(保留原有的)
-
passwd [選項] user
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
選項 | 說明 |
---|---|
--help | 顯示幫助文檔 |
--version | 顯示命令版本 |
-d | 刪除用戶的密碼,只有root用戶才能使用 |
-e | 使用戶密碼失效,強制用戶下次登錄改變密碼,只有root用戶才能使用 |
-n | 設置密碼的最短有效時間,只有root用戶才能使用 |
-x | 設置密碼最大有效時間,只有root用戶才能使用 |
-S | 顯示簡短的密碼信息,只有root用戶才能使用 |
-l | 鎖定用戶,只有root用戶才能使用 |
-u | 解鎖用戶,只有root用戶才能使用 |
-k | 選項-k用于指示更新只適用于過期的身份驗證令牌(密碼);用戶希望像以前一樣保留其未過期的令牌。 |
-i | 這將設置此帳戶的過期密碼將被視為不活動的天數,如果用戶帳戶支持密碼生存期,則應禁用該帳戶。只對根用戶可用。 |
-w | 這將設置用戶將開始收到警告,如果用戶帳戶支持密碼生存期,其密碼將過期的天數。只對根用戶可用。 |
--stdin | 此選項用于指示passwd應從標準輸入中讀取新密碼,該輸入可以是管道。echo "password" |passwd --stdin user 少用
|
/etc/passwd
name:password:UID:GID:GECOS:directory:shell
GECOS: 注釋,常用全名/etc/shadow
字段 | 說明 |
---|---|
login name | 登錄名 |
encrypted password | 加密密碼 |
date of last password change | 自1970年1月1日以來的最后一次更改密碼 |
minimum password age | 最小密碼使用期限是允許用戶再次更改密碼之前, 用戶必須等待的天數。 |
maximum password age | 最長密碼使用期限是用戶必須更改密碼的天數。 |
password warning period | 密碼到期前的天數(請參見上面的最長密碼使用 期限),在此期間應警告用戶。 |
password inactivity period | 密碼過期后的天數(請參見上面的最長密碼使用 期限),在此期間仍應接受密碼(用戶應在下次 登錄時更新其密碼)。 |
account expiration date | 帳戶的到期日期,表示自1970年1月1日以來的天數。 |
reserved field | 該字段保留供將來使用。 |
-
ACLS
-
設置ACL
setfacl -m rules files
rules:-
u:uid:perms
設置用戶的訪問ACL。可以指定用戶名或UID。該用戶可以是系統上的任何有效用戶。 -
g:gid:perms
設置組的訪問ACL。可以指定組名或GID。該組可以是系統上的任何有效組。 -
m:perms
設置有效權限掩碼。掩碼是擁有組的所有權限以及所有用戶和組條目的并集。 -
o:perms
為文件組中的用戶以外的用戶設置訪問ACL。
perms(權限)必須是字符r,w和x的組合,才能進行讀取,寫入和執行。
例如,向用戶andrius授予讀寫權限:
# setfacl -m u:andrius:rw /project/somefile
例如,要刪除用戶,組或其他用戶的所有權限,請使用-x選項,并且不要指定任何權限:
# setfacl -x rules files
例如,要從具有UID 500的用戶中刪除所有權限,請執行以下操作:
# setfacl -x u:500 /project/somefile
-
-
恢復默認ACLs
要設置默認ACL,請在規則前添加d:
并指定目錄而不是文件名。
例如,要將/ share /目錄的默認ACL設置為對不在用戶組中的用戶讀取和執行(單個文件的訪問ACL可以覆蓋它):
# setfacl -m d:o:rx /share
-
查看ACLs
getfacl
-
設置ACL
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/index
特殊權限 suid sgid sticky
-
SUID(setuid)
功用:用戶運行某程序時,如果此程序擁有SUID權限,那么程序運行時,進程的屬主不是發起者,而是程序文件自己的屬主。
設置setuid后在屬主的x位表示
文件 | 原權限 | 有無執行權限 | 加suid后的權限 | 是否有效 |
---|---|---|---|---|
file | -rw-r--r-- | 無 | -rwSr--r-- | 無 |
file | -rwxr--r-- | 有 | -rwsr--r-- | 有 |
- sgid(setgid)
功用:當目錄屬組有寫權限,且有SGID權限時,那么所有屬于此目錄的屬組,且以屬組的身份在此目錄中新建文件或者目錄時,新文件的屬組不是用戶的基本組,而是此目錄的屬組。
設置setgid后在屬組的x位表示
目錄 | 原權限 | 有無執行權限 | 加suid后的權限 | 是否有效 |
---|---|---|---|---|
Dir | drwxr--r-x | 無 | drwxr-Sr-x | 無 |
Dir | drwxr-xr-x | 有 | drwxr-sr-x | 有 |
-
sticky
功用:對于屬組或全局可寫的目錄,組內的所有用戶或系統上的所有用戶對在此目錄中都能創建新文件或刪除所有的已有文件,如果為此類目錄設置sticky權限,則每個用戶都能創建新文件,且只能刪除自己的文件。
設置sticky后在全局(other)的x位表示
目錄 | 原權限 | 有無執行權限 | 加suid后的權限 | 是否有效 |
---|---|---|---|---|
Dir | drwxrwxrwx | 無 | drwxrwxrwT | 無 |
Dir | drwxrwxrwx | 有 | drwxrwxrwt | 有 |
設置方法
名稱 | 命令 | 說明 |
---|---|---|
suid |
u+s or 4
|
- |
- | chmod u+s cat | #添加suid |
- | chmod u-s cat | #取消suid |
- | chmod 4755 cat | #添加suid |
- | chmod 0755 cat | #取消suid |
sgid |
g+s or 2
|
- |
- | chmod g+s /testdir/ | #添加sgid |
- | chmod g-s /testdir/ | #取消sgid |
- | chmod 2755 /testdir/ | #添加guid |
- | chmod 0755 /testdir/ | #取消guid |
sticky |
o+s or 1
|
- |
- | chmod o+s /testdir/ | #添加sticky |
- | chmod o-s /testdir/ | #取消sticky |
- | chmod 1755 /testdir/ | #添加sticky |
- | chmod 0755 /testdir/ | #取消sticky |
- | 也可以suid,sgid,sticky位同時設置 | - |