Ubuntu
每個 /etc/environment 變數只有 1024 個字節 :( -> 用更大的限制重建 pam?
no_proxy
我的 /etc/environment /變數中有一個很長的主機名和 IP 列表(超過 1013 個字元)NO_PROXY
,因為我的公司代理不知道它們。我的本地未綁定 DNS 可以。只有其中一些主機名和 IP 有效。看起來該包中的pam_env
var=value
將(例如no_proxy="blah"
)分配限制為每個 1024 字節。
- 我怎樣才能得到源(
apt-get source libpam-modules
)?我需要哪些 /etc/apt/sources.listdeb-src
條目?- pam_env.c 在哪個路徑中,所以我可以編輯它?有
updatedb && locate pam_env.c
幫助嗎?- 如何建構它並將其集成到 Ubuntu 14.04 和 Ubuntu 16.04 中?
用更大的限制重建 PAM
以具有 sudo 權限的普通使用者身份執行腳本。
帶有 BZR (= Bazaar) 的 Ubuntu 腳本(真的未經測試!)
創建文件
vi build_pam_via_ubuntu_and_bzr.sh
,將腳本放入其中(見下文),使文件可執行chmod +x build_pam_via_ubuntu_and_bzr.sh
並執行它./build_pam_via_ubuntu_and_bzr.sh
#!/usr/bin/env bash # Stop when folder exists (please delete manually): [ -e /opt/bzr/pam/ ] && exit 0 # Update sources: sudo apt-get update || exit 1 # Install source control: sudo apt-get install bzr bzr-builddeb -y || exit 1 # Create folder: sudo mkdir -p /opt/bzr/pam/ || exit 1 # Change owner and group: sudo chown -R $(id -u):$(id -g) /opt/bzr/pam/ || exit 1 # Enter folder: cd /opt/bzr/pam/ || exit 1 # Clone PAM repo bzr branch lp:ubuntu/vivid/pam || exit 1 # Join folder: cd /opt/bzr/pam/ubuntu/ || exit 1 # Main point: Change BUF_SIZE limit: sed -i "s/#define BUF_SIZE 1024/#define BUF_SIZE 8192/" modules/pam_env/pam_env.c || exit 1 # Add new version number to debian/changelog: dch -n "Change environment variable limit from 1024 to 8192." || exit 1 # `bzr builddeb -- -uc -us` will fail with `unmet build dependencies`, install them: sudo apt-get install libcrack2-dev debhelper quilt flex bison libfl-dev libdb-dev libselinux1-dev po-debconf dh-autoreconf autopoint libaudit-dev pkg-config xsltproc libxml2-utils docbook-xml docbook-xsl w3m -y || exit 1 # Another error lead me to remove fop (maybe not necessary): ###sudo apt-get remove fop || exit 1 # Build packages without signing them (takes ~ 20 minutes): bzr builddeb -- -uc -us || exit 1 # Install local packages and dependencies with apt-get (possible since Ubuntu 16.04) # Otherwise (Ubuntu 14.04) use dpkg sudo apt-get install /opt/bzr/pam/*.deb || sudo dpkg --force-all -i /opt/bzr/pam/*.deb || exit 1 # Now you can have env variables with ~ 8192 chars: sudo bash -c "echo 'BLUBB123=\"'$(tr -dc 'a-z0-9' < /dev/urandom | head -c8000)'\"' >> /etc/environment" || exit 1
帶有 Git 的 Ubuntu 14.04.5 腳本(已測試)
創建文件
vi build_pam_via_trusty_and_git.sh
,將腳本放入其中(見下文),使文件可執行chmod +x build_pam_via_trusty_and_git.sh
並執行它./build_pam_via_trusty_and_git.sh
#!/usr/bin/env bash # Stop when folder exists (please delete manually): [ -e /opt/git/pam/ ] && exit 0 # Update sources: sudo apt-get update || exit 1 # Install source control: sudo apt-get install git git-buildpackage -y || exit 1 # Create folder: sudo mkdir -p /opt/git/pam/ || exit 1 # Change owner and group: sudo chown -R $(id -u):$(id -g) /opt/git/pam/ || exit 1 # Enter folder: cd /opt/git/pam/ || exit 1 # Clone PAM repo git clone -b ubuntu/trusty-security https://git.launchpad.net/~usd-import-team/ubuntu/+source/pam || exit 1 # Join folder: cd /opt/git/pam/pam/ || exit 1 # Main point: Change BUF_SIZE limit: sed -i "s/#define BUF_SIZE 1024/#define BUF_SIZE 8192/" modules/pam_env/pam_env.c || exit 1 # Add new version number to debian/changelog (coming from 1.1.8-1ubuntu2.2): dch -n "Change environment variable limit from 1024 to 8192." || exit 1 # Add changed files to Git index: git add /opt/git/pam/pam/modules/pam_env/pam_env.c || exit 1 git add /opt/git/pam/pam/debian/changelog || exit 1 # Commit Git index: git commit -m "Change environment variable limit from 1024 to 8192." || exit 1 sudo apt-get install libcrack2-dev debhelper quilt flex bison libfl-dev libdb-dev libselinux1-dev po-debconf dh-autoreconf autopoint libaudit-dev pkg-config xsltproc libxml2-utils docbook-xml docbook-xsl w3m -y || exit 1 # Another error lead me to remove fop (maybe not necessary): ###sudo apt-get remove fop || exit 1 # Build packages without signing them (takes ~ 20 minutes): gbp buildpackage --git-debian-branch="ubuntu/trusty-security" --git-ignore-new --git-upstream-tree="ubuntu/trusty-security" -uc -us || exit 1 # Install local packages: sudo dpkg --force-all -i /opt/git/pam/*.deb || exit 1 # Now you can have env variables with ~ 8192 chars: sudo bash -c "echo 'BLUBB123=\"'$(tr -dc 'a-z0-9' < /dev/urandom | head -c8000)'\"' >> /etc/environment" || exit 1
帶有 Git 的 Ubuntu 16.04.4 腳本(已測試)
創建文件
vi build_pam_via_xenial_and_git.sh
,將腳本放入其中(見下文),使文件可執行chmod +x build_pam_via_xenial_and_git.sh
並執行它./build_pam_via_xenial_and_git.sh
#!/usr/bin/env bash # Stop when folder exists (please delete manually): [ -e /opt/git/pam/ ] && exit 0 # Update sources: sudo apt-get update || exit 1 # Install source control: sudo apt-get install git git-buildpackage -y || exit 1 # Create folder: sudo mkdir -p /opt/git/pam/ || exit 1 # Change owner and group: sudo chown -R $(id -u):$(id -g) /opt/git/pam/ || exit 1 # Enter folder: cd /opt/git/pam/ || exit 1 # Clone PAM repo git clone -b ubuntu/xenial https://git.launchpad.net/~usd-import-team/ubuntu/+source/pam || exit 1 # Join folder: cd /opt/git/pam/pam/ || exit 1 # Main point: Change BUF_SIZE limit: sed -i "s/#define BUF_SIZE 1024/#define BUF_SIZE 8192/" modules/pam_env/pam_env.c || exit 1 # Add new version number to debian/changelog (coming from 1.1.8-3.2ubuntu2.1): dch --distribution unstable --package "pam" --newversion "1.1.8-3.2ubuntu2.2" "Change environment variable limit from 1024 to 8192." || exit 1 # dch -n "Change environment variable limit from 1024 to 8192." || exit 1 # Add changed files to Git index: git add /opt/git/pam/pam/modules/pam_env/pam_env.c || exit 1 git add /opt/git/pam/pam/debian/changelog || exit 1 # Commit Git index: git commit -m "Change environment variable limit from 1024 to 8192." || exit 1 sudo apt-get install libcrack2-dev debhelper quilt flex bison libfl-dev libdb-dev libselinux1-dev po-debconf dh-autoreconf autopoint libaudit-dev pkg-config xsltproc libxml2-utils docbook-xml docbook-xsl w3m -y || exit 1 # Another error lead me to remove fop (maybe not necessary): ###sudo apt-get remove fop || exit 1 # Build packages without signing them (takes ~ 20 minutes): gbp buildpackage --git-debian-branch="ubuntu/xenial" --git-ignore-new --git-upstream-tree="ubuntu/xenial" -uc -us || exit 1 # Install local packages and dependencies with apt-get (possible since Ubuntu 16.04): sudo apt-get install /opt/git/pam/*.deb -y || exit 1 # Now you can have env variables with ~ 8192 chars: sudo bash -c "echo 'BLUBB123=\"'$(tr -dc 'a-z0-9' < /dev/urandom | head -c8000)'\"' >> /etc/environment" || exit 1
測試
重啟你的機器(也許沒有必要):
sudo reboot
檢查安裝的版本號:
sudo apt install apt-show-versions sudo apt-show-versions libpam-modules
返回類似的東西
libpam-modules:amd64 1.1.8-3.2ubuntu2.1 newer than version in archive libpam-modules:i386 not installed
哪個是對的。
重新連接並顯示具有 8000 個字元的 env var BLUBB123:
echo $BLUBB123
相關: