Linuxでは、特定のユーザー(ルート以外のユーザー)に対してのみ日付を変更できますか?
可能であればどうすればよいですか?
誰かがこれの影響を指摘できれば良いでしょう。
編集する
つまり、私の質問はこれです。
root権限なしでLinuxの日付と時刻を今から別の日付と時刻に変更したいと思います。どうやってこれを達成できますか?
答え1
日付はシステム全体のパラメータであり、システム(ユーザーではない)にとって重要です。これは、ファイルシステムのタイムスタンプ、ロギング、デーモン操作、スケジュールなどに表示されます。日付が正しくないと、多くのプログラムがシステムを妨害して破損する可能性があります。したがって、この意味でwww以外のネットワークが完了したら、ローカルだけでなくグローバルに時間を継続的に追加および変更する必要があります。クライアントとサーバー間の時間差が大きすぎると、証明書も動作を停止します。
そのため、システムの日付/時刻は実際の日付/時刻です(UTCが望ましいです。そうしないと、タイムゾーンを切り替えるとラップトップのファイルシステムが破損する可能性があります)。
一方、タイムゾーンの設定は、UTCでユーザーに表示される日付と時刻への変換レイヤーです。これは変更される可能性があります(X Tianの説明を参照)。しかし、これがあなたが望むものかどうかはわかりません。整数(時には整数の一部)時間のみを設定でき、1日を超えることはできません。任意の遅延を引き起こすためにカスタムタイムゾーンを構築することは技術的に可能ですが、これは醜いハッキングです。
すべてのデフォルトの時間操作にはまだUnix時間(1970年1月1日以降の均一に時間が測定された整数)が含まれているため、ロケール(タイムゾーンやその他の項目)は通常、時間を視覚的に表示したり、非常に特定のタスクにのみ使用されます。 。 scriptの目的はこの機能によって異なります。たとえば、関数をdate
呼び出しclock_gettime
てシステム時間を取得し、localtime
現在のロケールに変換を呼び出します。内部表現は常にシステム時間です。
これを行う特別なカーネルモジュールまたは代替ライブラリがあります。調整された機能を使用して破損したライブラリを作成し、clock_gettime
それを1人のユーザーに表示できます。これがあなたのシステムにどのような影響を与えるかわかりません。ファイルシステム操作と同様の操作はまだカーネルで処理されるため、基本機能は機能します。ただし、スケジュール、バックアップ機能、および makefile が正しく機能しない可能性があります。
編集:おそらくあなたが望むものは仮想マシンです。これによりさらに孤立する可能性があるため、時間を変更したい場合はそれを行うことができます。時々、時々起こるソフトウェアの欠陥を避けるのに役立ちます。
答え2
構成ファイルまたはそのユーザーに関連する共通構成ファイルでTZ環境変数を設定できます。
$ date
Fri Mar 21 10:11:15 GMT 2014
$ export TZ="PST+8"
$ date
Fri Mar 21 02:11:53 PST 2014
TZの最大値は24時間です。
答え3
日付/時刻を取得するためのシステムコールは数回しかないので、実行したい操作に応じて、その呼び出しから返される値を変更するためにプリロードライブラリを配置できます(まだ質問では少し不明です)。これはY2Kテストが最高潮に達したときの一般的な戦略でした。
良いhttps://github.com/wolfcw/libfaketimeあなたが望むことをすることもできますが、そうでない場合は自分で行うのが十分簡単です。